我正在尝试在收费失败时检索条带费用ID,因此我可以在charge.failed
挂钩被触发时通过该ID检索我的记录。我试过检查被触发的异常,但我找不到任何方法来获取它。这是我的代码:
def charge
token = params[:stripeToken]
type = params[:stripeTokenType]
metadata = {}
record = Record.new(amount: Random.rand(2000), valid: false)
charge = nil
begin
charge = Stripe::Charge.create(
{
amount: 2000,
currency: 'eur',
source: token,
description: 'Test',
metadata: metadata
}, { stripe_account: 'xxxxx' })
record.stripe_charge_id
flash[:notice] = 'Transaction validée'
rescue Exception => e
record.error = e.code
flash[:error] = 'Erreur de paiement'
end
flash[:error] = 'Erreur de paiement' unless record.save || flash[:error]
redirect_to :stripe_test
end
答案 0 :(得分:0)
我最后使用元数据存储我的记录ID。所以我可以使用这个元数据来检索它。
charge = Stripe::Charge.create(
{
amount: 2000,
currency: 'eur',
source: token,
description: 'Test',
metadata: { record_id: 23 }
}, { stripe_account: 'xxxxx' })
答案 1 :(得分:0)
我有同样的问题。在失败的尝试充电时检索正确的充电ID的正确方法很简单,但是记录的不够准确。 Stripe在错误内向您发送费用ID:
这是python!
try:
# make the charge
except stripe.error.CardError as e:
# Since it's a decline, stripe.error.CardError will be caught
body = e.json_body
err = body.get('error', {})
charge_id = err.get('charge') # this will return ch_1EPVmxKT>DPET....