2016-05-15 3 views
2

Ich baue eine Abonnement-basierte App, und ich möchte Kunden über Stripe-Abonnements berechnen. Ich versuche, einen Kunden und eine Gebühr nach dem Absenden des Formulars zu erstellen. Es werden jedoch nur Token erstellt, keine Gebühren und Kunden. Die Formulare durchlaufen also erfolgreich, aber im Stripe-Dashboard gibt es keine Testgebühren und keine Kunden. Hier ist mein Controller:So erstellen Sie eine Gebühr und einen Kunden in Stripe (Rails)

class SubscribersController < ApplicationController 
    before_filter :authenticate_user! 

    def new 
    end 

    def update 
    token = params[:stripeToken] 

    customer = Stripe::Customer.create(
     card: token, 
     plan: 1212, 
     email: current_user.email 
    ) 

    Stripe::Charge.create(
     :amount => 8999, 
     :currency => "usd", 
     :source => token, 
     :description => "Example charge" 
    ) 

    current_user.subscribed = true 
    current_user.stripeid = customer.id 
    current_user.save 

    redirect_to profiles_user_path 
    end 
end 

Antwort

8

All dies kann in der ausgezeichneten Ruby API Docs gefunden werden. Es gibt ein paar Schritte, aber es ist nicht so schwer. Es kann ein wenig experimentieren, damit es in Ihrer Anwendung funktioniert.

Es sieht so aus, als ob Sie versuchen, den Kunden auf einen Abonnement Plan (Verwendung von plan: 1212) zu setzen, also werde ich erklären, wie Abonnement funktioniert. Ich erkläre auch einfache einmalige Gebühren, falls Sie das suchen.

Setup-Streifen in Ihrer Anwendung

Add Stripe Schlüssel zu Ihrem config/secrets.yml Datei:

development: 
    stripe_private_key: <%= ENV["STRIPE_PRIVATE_KEY"] %> 
    stripe_public_key: <%= ENV["STRIPE_PUBLIC_KEY"] %> 

Sie können die STRIPE_PRIVATE_KEY und STRIPE_PUBLIC_KEY in Ihrer Umgebung halten. Test- und Produktionsumgebungen erfordern ähnliche Konfigurationseinstellungen.

Als nächstes fügen Sie diesen Code in Ihre BillingController, oder wo auch immer Sie die Stripe-API verwenden möchten:

require "stripe" 
Stripe.api_key = Rails.application.secrets.stripe_private_key 

hinzufügen Migration Streifen Kunden-ID an den Kunden speichern

class AddUserStripeCustomerId < ActiveRecord::Migration 
    def change 
    change_table :users do |t| 
     t.string :stripe_customer_id, limit: 50, null: true 
    end 
    end 
end 

einen Kunden erstellen

Wenn Sie bereit sind, den Abrechnungsprozess für einen Kunden zu starten, tun Sie Folgendes:

if [email protected]_customer_id 
    @user.stripe_customer_id = Stripe::Customer.create(
    account_balance: 0, 
    email: @user.email_canonical 
) 
end 

Achten Sie darauf, die Kundennummer in Ihrem Benutzermodell zu speichern. Sie müssen sicherstellen, dass Sie Ihre Kunden-ID für einen Nutzer nicht weiterhin erstellen und überschreiben, da dies mit dem Stripe-Zahlungssystem für diesen Nutzer zusammenhängt.

eine Standardquelle erstellen

Der Kunde eine Standardquelle für Abogebühren zugewiesen haben müssen gemacht werden. 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) 

Machen Sie eine einmalige Gebühr

Sie können die Kunden eine Zeit aufladen, ohne wiederkehrende, und Sie tun, dass mit diesem:

Stripe::Charge.create(
    :amount => 1395,  # <== Currency in 'cents' 
    :currency => "usd", 
    :source => customer.default_source, # <== from previous section 
    :description => "Fuzzy eyeglasses" 
) 

Sie sollten die Gebühren-ID erfassen, aber Sie können diese immer von Stripe abrufen, wenn Sie sie später benötigen.

erstellen Subscription 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 programmatisch einen Abo-Plan 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 subscribe, dass 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 hält Ihre Anwendung des von Streifen geschickt, um die Arten von Veranstaltungen

def PaymentController 
    protect_from_forgery :except => :webhook 

    def webhook 
    # Capture the event information from the webhook params 
    event_id = params[: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 
    #... 
    end 
end 

empfohlen, bei Types of Events dokumentiert. 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.

+0

Gelöst es! VIELEN DANK! –

+0

Hab es einfach gemacht :) nochmals vielen Dank! :) –

+0

Danke für diesen Mann - woher bekommst du die token_id beim Erstellen einer Standardquelle? – luke

Verwandte Themen