2016-07-26 28 views
0

Ich laufe Streifen im Testmodus. (. Direkt auf Stripe Armaturenbrett)Stripe Testing Abonnement Lumen 5.1

ich einen Jahresfakturierungsplan für 100GBP Menge erstellt haben, mit einem 7-Tage-Test

jedoch die webhooks zu testen, ich habe die trial_end fest einprogrammiert:

$trialEnd = new DateTime(); 
    $trialEnd->setTimestamp(time()+120); 

    $user = Users::find($this->user()['user_id']); 
    $user->subscription($stripe_plan['stripe_plan'])->trialFor($trialEnd)->create($data['stripeToken'], [ 
     'email' => $this->user()['email'] 
    ]); 
    $user->save(); 

Grundsätzlich geht alles gut, aber in Stripe Dashboard wird die erste Rechnung für 0 GBP angezeigt, und nach einer Minute bekomme ich das Abonnement wird in einem Minute-Ereignis enden. Immerhin wird das Abonnement zum Status Aktiv (von Trialing).

Alle Webhooks und sogar das erste Abonnement hinzufügen Antwort Ich bekomme die Probezeit endet stattdessen Abonnement endet.

Wie kann ich den Zeitstempel subscription_ends_at erhalten?

Alle Webhook Anfragen werden mit den folgenden Zeitstempel:

{ 
    "id": "evt_18baRrIzJLF7fe6PMDPYD0NM", 
    "object": "event", 
    "api_version": "2016-07-06", 
    "created": 1469558315, 
    "data": { 
    "object": { 
     "id": "sub_8tNBbqy0AmSk8p", 
     "object": "subscription", 
     "application_fee_percent": null, 
     "cancel_at_period_end": false, 
     "canceled_at": null, 
     "created": 1469558268, 
     "current_period_end": 1469558384, 
     "current_period_start": 1469558268, 
     "customer": "cus_8tNB1tWYw3Jw7L", 
     "discount": null, 
     "ended_at": null, 
     "livemode": false, 
     "metadata": { 
     }, 
     "plan": { 
     "id": "yearly_200", 
     "object": "plan", 
     "amount": 20000, 
     "created": 1469545724, 
     "currency": "gbp", 
     "interval": "year", 
     "interval_count": 1, 
     "livemode": false, 
     "metadata": { 
     }, 
     "name": "Full Club Membership - Pay Anually", 
     "statement_descriptor": "FULL MEMBERSHIP", 
     "trial_period_days": 7 
     }, 
     "quantity": 1, 
     "start": 1469558268, 
     "status": "trialing", 
     "tax_percent": null, 
     "trial_end": 1469558384, 
     "trial_start": 1469558268 
    } 
    }, 
    "livemode": false, 
    "pending_webhooks": 1, 
    "request": null, 
    "type": "customer.subscription.trial_will_end" 
}

Also, wenn Sie bei trial_start aussehen und trial_end ist das gleiche mit current_period_start und current_period_end.

Ich habe zwar zunächst, dass, wenn dies die aktuelle Zeit ist .. gut, aber nach Ablauf der Probezeit sollte der aktuelle Zeitraum nicht Studien sein.

Es gibt irgendeine Methode, um das subscription_ends_at Feld von Stripe api zu nehmen? Und sollte nach Ablauf der Testphase auch keine Rechnung mit dem tatsächlichen Betrag gesendet werden?

Auch ich habe einen Abonnement-Plan ohne Probezeit erstellt. Dieser Plan nach einem Kunden abonniert, bekomme ich die richtigen Zeitstempel.

Vielen Dank im Voraus!

Antwort

0

Oh, jetzt verstehe ich ... ich werde erklären, vielleicht wird jemand helfen: D.

Wenn ein Abonnement eine Probezeit bei der Anmeldung erhält, erhalten Sie eine Rechnung für 0. Wenn Sie die Testversion in 2 Minuten mit der Anfrage ablaufen lassen, wird die erste Zahlung in etwa 10 Minuten ausgeführt: D (mit dieser Zahlung (wenn Sie eine Webhook-URL eingestellt haben) erhalten Sie ein "type": "customer.subscription.updated" -Event, das alle gewünschten Informationen enthält. Zu diesem Zeitpunkt können Sie Ihre subscription_ends_at aktualisieren.

I habe nicht 10 Minuten gewartet, um zu sehen, ob die neue Rechnung ausgelöst wird .. und erstellt -> entfernt -> neu erstellt -> entfernt usw. für 4 Stunden mit verschiedenen Tests

1

Es sieht so aus als ob du es herausgefunden hast. Grundsätzlich, die Die Verzögerung ergibt sich aus der Tatsache, dass die Anforderung, eine neue Rechnung für diesen Abrechnungszyklus zu erstellen, zu einer Warteschlange hinzugefügt wird, wenn der Zeitstempel für den Ablauf der Testphase überschritten wird. Normalerweise erstellt die Warteschlange die neue Rechnung ~ sofort, aber manchmal kann es einige Minuten dauern, bevor sie ausgelöst wird.

Die erste Rechnung wird immer Zeitstempel für die current_period_* haben, die auf die trial_period_* Karte abgebildet wird. Während die zweite Rechnung (die mit dem invoice.created-Ereignis angezeigt wird) die genauen Zeitstempel für den Abrechnungszeitraum haben wird.