Ho esaminato lo Stripe documentation on errors, ma sto ancora riscontrando problemi nella gestione/reindirizzamento di questi errori in modo corretto. Fondamentalmente, non importa cosa succede, voglio che tornino all'azione edit
(tramite edit_profile_path
) e visualizzino loro un messaggio (che sia riuscito o meno).Utilizzo corretto Errori e eccezioni stripe con Ruby per addebito una tantum
Ho un modulo sull'azione edit
che POST per l'azione update
. Funziona correttamente con una carta di credito valida (l'addebito è nel dashboard Stripe). Sto usando Stripe.js.
class ExtrasController < ApplicationController
def edit
@extras = current_user.extras
end
def update
Stripe.api_key = "hidden"
token = params[:stripeToken]
begin
charge = Stripe::Charge.create(
:amount => 5000, # amount in cents
:currency => "usd",
:card => token,
:description => current_user.email
)
rescue Stripe::CardError => e
# redirect_to edit_extras_path, notice: e.message
# What I'm trying to do, but obviously results in AbstractController::DoubleRenderError
rescue => e
# Something else happened, completely unrelated to Stripe
# Display a generic error message
end
redirect_to edit_extras_path, notice: "Card charged successfully."
end
end
Si consiglia di spostare questa logica su un modello quando si ha la possibilità. – tommyd456
L'ho fatto da quando ho postato questo. Grazie comunque per la raccomandazione. – gbdev
Good man: in realtà ho spostato il mio su un oggetto di servizio dedicato perché ritenevo che non si adattasse a nessun modello. – tommyd456