2015-10-06 4 views
5

Ich baue eine Anwendung (basierend auf Online-Ressource). Sie können sich anmelden oder mit dem Gerät anmelden. Dann können Sie ein Produkt kaufen. Oder machen Sie Ihre eigene Liste und verkaufen Sie Ihre Produkte.Rails - Stripe :: InvalidRequestError (Muss Quelle oder Kunde bereitstellen.)

Ich integriere Stripe. Wenn ich die Gebühr erstelle, erhalte ich diesen Fehler in der Konsole: Stripe::InvalidRequestError (Must provide source or customer.). Hier

ist der Code des orders_controller.rb für die Ladungs ​​Aktion:

Stripe.api_key = ENV["STRIPE_API_KEY"] 
token = params[:stripeToken] 

begin 
    charge = Stripe::Charge.create(
    :amount => (@listing.price * 100).floor, 
    :currency => "usd", 
    :card => token 
    ) 
    flash[:notice] = "Thanks for ordering!" 
rescue Stripe::CardError => e 
    flash[:danger] = e.message 
end 

Natürlich bin ich einen Blick in die Stripe-API-Dokumentation unter hier: Charge documentation example und hier: Charge full API Reference

I bin mir nicht sicher, wie man die :resource oder customer behandelt. Ich habe in anderen Materialien im Internet gesehen, dass einige Leute einen Kunden erschaffen. In anderen Seiten heißt es, dass die :card veraltet ist, also bin ich etwas verwirrt.

Ich werde die Github-Repository meines Projekts verlassen, und fühlen Sie sich frei, einen Blick darauf zu werfen. Ich versuche, auch mit Überweisungen und Empfängern umzugehen. Project Repository

Danke.

Antwort

8

Wie in der docs erwähnt, erwartet Stripe, entweder Kunde oder Quelle beim Erstellen einer Gebühr erwähnt werden. Also, müssen Sie entweder

  • erstellen Kunden auf Streifen (wenn Sie diesen Kunden auch in Zukunft aufladen möchten) aus dem Token die Sie erhalten haben, und dass Kunden zu erwähnen, während eine Ladung zu schaffen,

    customer = Stripe::Customer.create(source: params[:stripeToken]) 
    
    charge = Stripe::Charge.create({ 
        :amount => 400, 
        :currency => "usd", 
        :customer => customer.id, 
        :description => "Charge for [email protected]" 
    }) 
    
  • Oder, wenn Sie nicht wollen, einen Kunden zu erstellen, dann direkt empfangenen Token als Quelle erwähnt,

    Stripe::Charge.create({ 
        :amount => 400, 
        :currency => "usd", 
        :source => params[:stripeToken], 
        :description => "Charge for [email protected]" 
    }) 
    
+0

Vielen Dank. Du bist richtig. Aber jetzt habe ich nur noch einen Fehler: 'stripe :: invalidrequesterror (kann nicht an einen Empfänger übertragen werden, der kein Standard-Zahlungskonto hat.)' Ich schaue in die Dokumentation. Der Prozess für meine App ist dies: User Sing Up. Dann erstellen Sie ein neues Produkt und wenn Sie dieses Produkt erstellen, fügen Sie Ihre Bankkontodaten hinzu. Dann fügen wir Ihnen Ihr Konto hinzu, das Sie erwerben können. –

+0

Wenn Sie sich den Fehler ansehen, scheint es, als würden Sie Geld an einen Empfänger überweisen. Welche Kontonummer verwenden Sie für die Übertragung? Haben Sie in der Stripe-Dokumentation, die Testkontonummern hat, den Abschnitt [Testen] (https://stripe.com/docs/testing) überprüft? –

Verwandte Themen