Stripe - Wie man ein Abonnement mit einem kostenlosen Tarif abwickelt und bei der Anmeldung keine Kreditkarte erforderlich ist

78

Wir haben begonnen, Stripe on Redsmin (eines unserer Projekte) zu implementieren, und ich denke, wir haben möglicherweise etwas verpasst. So funktioniert es:

  1. Um unser Produkt nutzen zu können, muss der Benutzer einen Tarif auswählen (kostenlos, s, m, xl, xxl ...), dann sein Login / Passwort eingeben und anschließend eine kostenlose 30-Tage-Testversion starten. Wenn der Benutzer das Formular abschickt , ruft unser Server Stripe create_customer mit dem angegebenen Plan und ohne Kreditkarte auf (da wir 30 Tage kostenlos anbieten möchten, ohne dass eine Kreditkarte erforderlich ist), und wir aktualisieren das Benutzermodell auf unserer Seite mit dem zurückgegebenen customer_idund subscription_id.

  2. Wir legen Webhook bis zu Streifen Ereignisse erhalten so nach 30 Tagen unsere Webhook sollte ein customer.subscription.updatedEmpfangsereignis mit einem object.status == active. Habe ich recht?

  3. Da wir jedoch bei der Anmeldung keine zugehörige Karte für den Benutzer angegeben haben, sollten wir nach einem anderen customer.subscription.updatedEreignis schnell mit object.status == unpaidRecht erhalten? Dann deaktivieren wir auf unserer Seite das Benutzerkonto und zwingen es, auf unsere Planauswahlseite zu gehen.

  4. Von da an kann der Benutzer entweder den kostenlosen Plan oder einen unserer Premium-Pläne auswählen:

  5. #Szenario 1 Wenn der Benutzer den kostenlosen Plan auswählt, reaktivieren wir einfach sein Konto auf unserer Seite und tun nichts anderes, da wir den kostenlosen Plan auf Streifen so konfiguriert haben, dass er 0 $ kostet. Haben wir mit unserem kostenlosen Plan den richtigen Prozess implementiert? Gibt es bessere Möglichkeiten?

  6. # Szenario 2 Wenn der Benutzer einen Premium- Tarif auswählt, leiten wir ihn auf ein Kreditkartenformular um, das dann an Stripe gesendet wird, und aktualisieren das Stripe-Kundenkonto mit dem temporären Karten-Token.Was sollen wir als nächstes tun? ::

    • Sollen wir auf Streifen warten, um uns eine Veranstaltung zu schicken? Wenn ja, welche Veranstaltung? customer.subscription.updated?charge.succeeded? Was wird der Wert von object.statusdann sein?
    • Sollten wir das Benutzerkonto auf unserer Seite direkt reaktivieren und auf eine Bestätigung von stripe warten? Wenn ja, auf welchen Ereignisnamen und welche Daten sollten wir warten?

FGRibreau
quelle
1
@halfer danke, wir haben es behoben!
FGRibreau
Ist dies mit der neuesten API noch gültig? Ich kann kein Abonnement erstellen (auch nicht mit einer kostenlosen Testversion), wenn der Kunde keine Zahlungsquelle hat.
Imns

Antworten:

46

In Teil 2, wo Sie dies tun:

Wir haben einen Webhook eingerichtet, um Stripe-Ereignisse zu empfangen. Nach 30 Tagen sollte unser Webhook ein customer.subscription.updated-Ereignis mit einem object.status == active erhalten. Habe ich recht?

Sie können auch die Implementierung von in Betracht ziehen customer.subscription.trial_will_end Webhooks in ziehen. Dieser Webhook wird drei Tage vor Ende der Testversion des Kunden gesendet und ermöglicht es Ihnen, dem Kunden eine Benachrichtigung zu senden, um seine Zahlungsinformationen zu aktualisieren.

Auf diese Weise kann Stripe, wenn der Benutzer seine Zahlungsinformationen aktualisiert, die Zahlung annehmen, sobald die Testversion des Kunden beendet ist, und Ihren Dienst ohne Unterbrechung weiter nutzen.

#Szenario 1 Wenn der Benutzer den kostenlosen Plan auswählt, reaktivieren wir einfach sein Konto auf unserer Seite und tun nichts anderes, da wir den kostenlosen Plan auf Streifen so konfiguriert haben, dass er 0 $ kostet. Haben wir mit unserem kostenlosen Plan den richtigen Prozess implementiert? Gibt es bessere Möglichkeiten?

Soweit ich weiß, ist dies der beste Weg, um kostenlose Pläne mit Stripe zu implementieren. Ich würde wahrscheinlich nur sicherstellen, dass Kunden keine Rechnungen erhalten, es sei denn, dies ist erforderlich. Ich bezweifle, dass Benutzer erwarten würden, eine Rechnung für jeden Abrechnungszeitraum zu erhalten, wenn sie einen kostenlosen Plan verwenden.

# Szenario 2 Wenn der Benutzer einen Premium-Tarif auswählt, leiten wir ihn auf ein Kreditkartenformular um, das dann an Stripe gesendet wird, und aktualisieren das Stripe-Kundenkonto mit dem temporären Karten-Token. Was sollen wir als nächstes tun?:

  • Sollten wir warten, bis Stripe uns ein Ereignis sendet, wenn ja, welches Ereignis? customer.subscription.updated? Charge.succeeded? Was ist dann der Wert von object.status?
  • Sollten wir das Benutzerkonto auf unserer Seite direkt reaktivieren und auf eine Bestätigung von stripe warten? Wenn ja, auf welchen Ereignisnamen und welche Daten sollten wir warten?

Sobald der Benutzer einen Plan ausgewählt und seine Zahlungsinformationen aktualisiert hat, würde ich sein Konto sofort aktivieren, vorausgesetzt, die Antwort auf das Abonnement-Update von Stripe war erfolgreich.

Solange Sie Ihre Abonnementeinstellungen über Ihr Stripe-Dashboard konfiguriert haben, sollten Sie Stripe überlassen können, was zu tun ist, wenn die Zahlung fehlschlägt. customer.subscription.updatedStellen Sie einfach sicher, dass Sie den Webhook implementieren, da dies der Webhook ist, den Stripe Ihnen sendet, wenn ein Abonnement als unbezahlt oder gekündigt markiert wird, sodass Sie Ihre eigenen Datensätze entsprechend aktualisieren können.

Mike
quelle
"Dieser Webhook wird drei Tage vor Ende der Testversion des Kunden gesendet und ermöglicht es Ihnen, dem Kunden eine Benachrichtigung zu senden, um seine [...] Zahlungsinformationen zu aktualisieren. Er kann Ihren Service ohne Unterbrechung weiter nutzen." Daran habe ich nicht gedacht, danke!
FGRibreau
"Soweit ich weiß, ist dies der beste Weg, um kostenlose Pläne mit Stripe zu implementieren" ok!
FGRibreau
"Stellen Sie einfach sicher, dass Sie den Webhook customer.subscription.updated implementieren", das habe ich getan, danke!
FGRibreau
6
Stripe schlägt vor, dass weiterhin eine Rechnung für 0-Dollar-Pläne gesendet wird. Aus diesem Grund habe ich den Abrechnungszyklus für mich auf jährlich festgelegt, sodass Benutzer mindestens einmal im Jahr eine Nullrechnung sehen, was nicht allzu ärgerlich ist.
BlinkyBill