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
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
keine Notwendigkeit die Webhooks zu benutzen? –
Können wir uns auch auf den Status = "erfolgreich" verlassen? –