2016-05-10 7 views
1

In meinem Fall - ich Stripe bin mit mit Rails, und ein Benutzer kann für etwas, das als einmaliges ‚Charge‘, oder abonniert und hat eine gewisse Menge der Dinge bezahlen, die sie wäre für jedes Mal, kostenlos, pro Monat berechnet worden.Stripe Abonnements Erstellung, wenn Sie bereits über einen Benutzer

Sobald Sie eine Ladung schaffen - ich spare die stripe_customer_id in meiner PG-Datenbank.

jedoch, wenn der Benutzer dann auf ein Abonnement gehen will, würde Ich mag es auf die Streifen Kunden hinzuzufügen, nicht einen neuen erstellen.

Wenn eine neue erstellt geht es etwa so:

customer_data = { 
    email: params[:stripeEmail], 
    card: params[:stripeToken] 
}.merge(
    (monthly_plan.payment_offerings_plan.blank?) ? 
    {} : { plan: Payment_offering.find(monthly_plan.payment_offerings_plan).stripe_plan_id } 
) 

customer = Stripe::Customer.create customer_data 

So im Wesentlichen - wie kann ich ein Abonnement in Streifen zu einem bereits bestehenden Streifen Kunden hinzufügen?

Antwort

2

All dies kann in der ausgezeichneten Ruby API Docs finden. Es gibt ein paar Schritte, aber es ist nicht so schwer. Es kann ein wenig Experimentieren, um es

Erstellen einer Standardquelle

Der Kunde muss eine Standardquelle für Abogebühren zugewiesen werden müssen, hergestellt in Ihrer Anwendung arbeiten. Dies kann von einem Token erstellt werden, etwa so:

customer.sources.create({:source => token_id}) 

oder aus Kunden vorhandenen Karten zugewiesen, wenn Sie bereits Karten für den Benutzer zugewiesen haben:

customer.default_source = customer.sources.retrieve(card_id) 

erstellen Abo-Plan

Sie können den Abo-Plan auf der Stripe-Konsole einfach erstellen, da dies in der Regel eine Aktivität einmalig ist; Die Erstellung einer Benutzeroberfläche zur Verwaltung von Abonnementplänen ist mit ziemlicher Sicherheit übertrieben, es sei denn, Sie verfügen über Administratorbenutzer, die Abonnementpläne verwalten können, aber keinen Zugriff auf die Stripe-Konsole haben sollten.

Um ein Abo-Plan programmatisch zu erstellen, versuchen Sie dies:

Stripe::Plan.create(
    :amount => 4200,   #<== Amount is in cents, not dollars 
    :interval => "month", 
    :name => "Purple Plan", 
    :currency => "usd", 
    :id => "purple" 
) 

Sie können so viele Pläne erstellen, wie Sie möchten, und können den Benutzer zu einem abonnieren, die sie mögen.

ein Abonnement erstellen für den Kunden

An dieser Stelle Sie das Abonnement auf den Kunden erstellen können, und dies wird den Abrechnungsprozess einzuleiten.

Stripe::Subscription.create(
    :customer => customer, 
    :plan => "purple" 
) 

einen Web-Haken-Empfänger

Aus irgendeinem Grunde einrichten, diese Dokumentation in einem anderen Ort ist (siehe Webhooks), aber es ist ein sehr notwendiger Teil des Prozesses.Dies wird Ihre Anwendung hält die

beraten def PaymentController protect_from_forgery: außer =>:

Webhook

def # Capture the Ereignisinformationen aus dem Webhook params event_id = params Webhook [: event]

# Verify that the event isn't forged to your Stripe account 
event = Stripe::Event.retrieve(event_id) 

# Record the event 
PaymentEvents.create!(event) 

# Handle the event in terms of your application 
#... 

Ende Ende

Die Arten von Veranstaltungen von Streifen gesendet andokumentiert. Sie können wählen, einige zu erfassen und zu behandeln, während andere passieren. In meinen Anwendungen habe ich jedoch festgestellt, dass es besser ist, alle Ereignisse zu erfassen und zu protokollieren und sie dann nach Bedarf zu verarbeiten. Auf diese Weise haben Sie, wenn Sie die Behandlung eines Ereignisses verpasst haben, das später wichtig behandelt werden soll, die Gelegenheit, sich auf das Ereignis zu beziehen und es post hoc bearbeiten zu können.

Sammeln Sie eine regelmäßige Zahlung

Dies ist der einfache Teil, und kann am besten mit Ihrem Lieblings kalten Getränk getan werden. Alles, was Sie von diesem Punkt aus tun müssen, ist die Überwachung der Stripe-Konsole und Ihres Bankkontos. Keine zusätzliche Aktion erforderlich, da Stripe den Rest erledigt.

Verwandte Themen