给定以下方法
def change_plan_to(plan_id)
new_plan = Plan.find plan_id
stripe_customer = Stripe::Customer.retrieve(stripe_customer_token)
stripe_customer.update_subscription(plan: new_plan.slug)
self.plan = new_plan
self.active = true
save
rescue Stripe::InvalidRequestError => e
logger.error "[STRIPE] #{ e }"
errors.add :base, "Unable to change your plan!"
false
end特别是第4-6行。我希望4和5只有在4成功的情况下才会发生,但Stripe没有返回将其包装在if中的能力。如果它出错,它只会抛出Stripe::InvalidRequestError。
处理这个问题的最好方法是什么?触发并忘记并允许条纹webhook回调根据需要管理即将到期的活动状态?
另一种情况是,如果没有通过,所有代码将在第4行之后停止。这就是救援的方式吗?
发布于 2013-06-20 20:00:33
是的,这就是救援工作的方式,所以你最好执行这些语句,这些语句依赖于stripe发送给你的webhook回调中的第4行。因为这确保了订阅的更改。
https://stackoverflow.com/questions/17211832
复制相似问题