我想在Stripe中为Rails中的订单列表创建费用,如下所示:
Orders.all.each do |order|
charge = Stripe::Charge.create(
:amount => 100,
:currency => "usd",
:customer => order.user.stripe_customer_id
)
order.id = charge.id
end
但是当Stripe::Charge.create
遇到失败的卡时,它会抛出Stripe::CardError: Your card was declined
错误并且Ruby块将停止,从而阻止其他订单被收费。
有没有办法可以跳过卡被拒的订单,这样可以收取剩余的订单?
由于
答案 0 :(得分:2)
使用rescue
怎么样?
Orders.all.each do |order|
begin
charge = Stripe::Charge.create(
amount: 100,
currency: "usd",
customer: order.user.stripe_customer_id
)
order.id = charge.id
resuce Stripe::CardError => e
# do something useful with the exception
end
end
这是简短的方法。您不希望将异常用作控制流。
您想检查引发该错误的内容并使用if
进行检查,以防止create
引发异常