Laravel Cashier Webhook: Aktuellen Benutzer abrufen

8

Ich verwende Folgendes, um die Standardmethode handleCustomerSubscriptionDeleted zu überschreiben, indem Sie Folgendes in app/Http/Controllers/WebHookController.php :

einfügen %Vor%

Damit dies den Standard überschreibt, sollte ich meine Route zu meinem erweiterten Controller aktualisieren oder immer noch auf den Standard verweisen? Ich glaube nicht, dass es Laravel wissen ließ, dass mein Controller existiert, wollte aber auch bestätigen.

Aktuell:

%Vor%

Der andere Teil davon ist innerhalb von handleCustomerSubscriptionDeleted Ich möchte auch den aktuellen Benutzer, auf den diese Referenz verweist, erfassen und andere Aktionen ausführen; In diesem Fall werden Datensätze automatisch auf unveröffentlicht gesetzt. Was wäre der beste Weg zum Abrufen des Benutzers? Es sieht so aus, als ob $payload['data']['object']['customer'] möglicherweise die Spalte stripe_id in der Benutzertabelle enthält und sich darauf bezieht, möchte dies jedoch bestätigen. Danke für jede Hilfe!

Aktualisieren

Ich glaube (basierend auf den Dokumenten), sollte es eher so sein:

%Vor%

Ich habe dann meinen Weg zu folgenden Punkten aktualisiert:

%Vor%

Aber es feuert immer noch nicht. ABER, was ich mich auch wundere, ist, wenn handleCustomerSubscriptionDeleted "wenn sie annullieren" oder nachdem ihre Gnadenfrist vorbei ist und das tatsächliche Abonnement annulliert wird, genannt wird. Gibt es eine zuverlässigere Möglichkeit, das zu testen, als das Wartespiel lokal zu spielen?

Update # 2

Ich habe meine Überschreibungsklasse wie folgt aktualisiert:

%Vor%

Der Teil, den ich geändert habe, hat $billable geändert, um nach dem Benutzer zu suchen, da dies die Antwort ist - nicht die Benutzer-ID, wie ich es einmal gedacht habe. Ich versuchte am Ende Localtunnel.me als @Shaz erwähnt, die mir erlauben, eine Anfrage an sie zu senden, ABER ohne in der Lage, die Kunden-ID, die ich möchte Auswirkungen weitergeben, bin ich mir nicht sicher, wie ich alles überprüfen kann tatsächlich arbeiten. Ich kann versuchen, zu graben, um zu sehen, ob ich eine Veranstaltung manuell durch Kassierer laufen lassen kann, aber immer noch ein bisschen seltsam scheint.

Update # 3

Ich habe versucht, etwas einfacher zu machen, indem ich customer.subscription.created höre (da das sofort ausgelöst wird):

%Vor%

Ich habe localtunnel.me verwendet, um den Webhook einzurichten, aber es scheint nicht korrekt auf den Webhook zu reagieren, da ich 500 Fehler in den Stripe-Antwortprotokollen sehe, obwohl mein "Test Webhooks" -Ereignis vom Stripe ausgelöst wurde Dashboard (ohne ID eindeutig festgelegt) ist in Ordnung. Die Antwort, die ich über den 500-Fehler bekomme, ist leider in dem verwirrten Durcheinander des Quellcodes, den Laravel ausspuckt, verloren gegangen:

%Vor%     
Zach 20.06.2015, 15:30
quelle

3 Antworten

6

Lesen Sie die Antwort diese Frage - die Veranstaltung wird an dem Datum / der Uhrzeit ausgelöst, an dem das Abonnement tatsächlich endet, nicht, wenn der Kunde die Stornierung einleitet.

Basiert auf Laravels Cashier Docs - Ihre Route sollte eigentlich:

sein %Vor%

Stellen Sie sicher, dass Ihre Webhook-Einstellungen in stripe tatsächlich auf yourapp.com/stripe/webhook

zeigen

Basierend auf der Methode handleWebhook in der Laravel\Cashier code - yes überschreibt eine entsprechend benannte Methode (beginnend mit handle , die mit einem strip-Ereignis verknüpft ist) eine vorhandene Methode.

Wenn Sie Ihren erweiterten Controller in den Routen verwenden möchten; Denken Sie daran, am Anfang der Klasse einen Konstruktor hinzuzufügen:

%Vor%

Also ist die Methode handleWebhook verfügbar, wenn Sie

ausführen %Vor%

anstelle von Laravel\Cashier\WebhookController in der Route aufzurufen.

    
Shaz Amjad 26.06.2015 03:34
quelle
4

Ich habe das funktioniert und ich zeige den Weg zu meinem Controller.

%Vor%

Da wir den Basiscontroller erweitern, sind bereits Methoden im Basiscontroller verfügbar. Der Punkt dieses Controllers ist der Zugriff auf alle Basis-Controller-Methoden. Auf diese Weise können Sie neue Methoden erweitern oder vorhandene überschreiben.

Ich hatte auch ein Problem mit meinem Code, um Webhook-Ereignisse zu erfassen. Etwas zu beachten ist, dass wenn Sie in der Testumgebung von Stripe und Auslösung von Webhook-Events sind, stellen Sie sicher, dass Sie die env-Variable hinzufügen.

%Vor%

Im Basis-Webhook-Controller wird zuerst überprüft, ob die Ereignisse existieren und das Ereignis nicht existiert, wenn der Webhook innerhalb der Testumgebung generiert wird.

%Vor%     
dranieri 08.08.2016 19:02
quelle
1
%Vor%     
Mantas D 25.01.2016 13:42
quelle