我想以编程方式创建条带化的订阅计划,我希望能够多次运行,所以如果计划存在,它应该忽略它。
我注意到如果我尝试检索一个计划,如果它不存在则抛出异常:
plan1 = Strie::Plan.retrieve("abcd123")
>>Stripe::InvalidRequestError: No such plan: abcd123
我使用以下方式创建计划:
Stripe::Plan.create(.....)
我有一个包含我所有计划的计划模型,所以我理想地想要这样做:
Plan.all.each do |plan|
# create stripe plan here if it doesn't exist
end
如果计划已存在于条带中,那么处理此异常的最佳方法是什么?
答案 0 :(得分:1)
查看https://stripe.com/docs/api#error_handling
如果您尝试使用已存在的ID创建计划,则请求将失败,并且Stripe将引发无效的请求错误。您应该能够将计划创建调用包装到帐户中以查找错误。一个准系统的例子:
require "stripe"
Stripe.api_key = "sk_test_xxxyyyzzz"
MyPlans.each do |plan|
# try to create a plan
begin
my_plan = Stripe::Plan.create(
:amount => plan.amount,
:interval => "month",
:name => plan.name,
:currency => "usd",
:id => plan.id
)
puts my_plan
# catch any invalid request errors
rescue Stripe::InvalidRequestError => e
puts e.json_body[:error]
end
end