2017-04-16 21 views
1

計画的にストライプでサブスクリプションプランを作成したいので、これを何度も実行できるようにしたいので、プランが存在する場合は無視してください。プランが存在しない場合の作成方法

私は試してみて、それが存在しない場合に例外をスローする計画を取得する場合、私は気づいた:

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 

トン場合は、この例外を処理するための最良の方法は何ですか彼は既にストライプで計画していますか?

答えて

1

は、すでに存在するidを持つ計画を作成しようとすると、要求は失敗し、ストライプが無効な要求のエラーがスローされますhttps://stripe.com/docs/api#error_handling

を見てみましょう。計画作成呼び出しをエラーのためにアカウントにラップすることができます。ベアボーンの例:

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 
関連する問題