给出以下方法
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。
处理此问题的最佳方法是什么?火与火忘记并允许Stripe webhook回调根据需要管理过期的活动状态?
另一种情况是,如果没有通过,所有代码将在第4行之后停止。这是救援工作的方式吗?
答案 0 :(得分:1)
是的,这就是救援工作的方式, 因此,最好执行这些语句,这些语句依赖于条带发送给您的webhook回调中的第4行。因为这可以确保订阅更改。