8

Kontext:Überprüfung für eine erfolgreiche Ladung mit Streifen für Schienen

I Stripe Kasse bin mit Einmalzahlung in Schienen zu akzeptieren. Ich habe einen Laderegler wie unten gezeigt. Ich benutzte zunächst Stripe-Webhook, um ladget.succeeded zu hören, aber mit einigen Problemen aufgrund der asynchronen Natur von Webhooks. Mein Ich habe die Geschäftslogik auf den Controller verlegt. Wenn die Kundengebühr ein Erfolg ist, dann speichere ich den Kunden und einige andere Details in der Datenbank.

Meine Frage:

Ist diese Prüfung genug, um sicherzustellen, dass eine Gebühr erfolgreich ist?

if charge["paid"] == true 

Die Stripe-Dokumentation Streifen :: Charge.create states ", ein Ladungs ​​Objekt zurück, wenn die Ladung gelungen. Löst einen Fehler, wenn etwas schief geht. Eine gemeinsame Fehlerquelle eine ungültige oder abgelaufene Karte ist, oder eine gültige Karte mit ungenügend verfügbarem Guthaben. "

Mein ChargesController:

class ChargesController < ApplicationController 

    def new 

    end 

    def create 
    # Amount in cents 

    @amount = 100 
    temp_job_id = cookies[:temp_job_id] 
    customer_email = TempJobPost.find_by(id: temp_job_id).company[:email] 
    customer = Stripe::Customer.create(
     :email => customer_email, 
     :card => params[:stripeToken] 
    ) 

    charge = Stripe::Charge.create(
     :customer => customer.id, 
     :amount  => @amount, 
     :description => 'Rails Stripe customer', 
     :currency => 'usd', 
     :metadata => {"job_id"=> temp_job_id} 
    ) 
    # TODO: charge.paid or charge["paid"] 
    if charge["paid"] == true 
    #Save customer to the db 
    end 

    # need to test this and refactor this using begin-->rescue--->end 
    rescue Stripe::CardError => e 
     flash[:error] = e.message 
     redirect_to charges_path 

    end 
end 

Antwort

11

Ja, das ist alles, was Sie tun müssen. Wenn der Ladevorgang erfolgreich war, gibt Stripe ein Charge-Objekt zurück, und Sie können den Parameter paid überprüfen. Wenn die Ladung fehlschlägt, würden wir eine Ausnahme auslösen.

Cheers, Larry

PS ich bei Streifen auf Unterstützung arbeiten.

+1

Also, technisch muss er nicht tun "wenn Ladung [" bezahlt "]" korrekt? Denn wenn der Ladevorgang fehlschlägt, wird die Ausnahme ausgelöst und dieser Codeabschnitt wird nicht ausgeführt. – okysabeni

+0

keine Notwendigkeit die Webhooks zu benutzen? –

+0

Können wir uns auch auf den Status = "erfolgreich" verlassen? –

Verwandte Themen