不同金额的条纹订阅计划

时间:2015-09-26 19:36:38

标签: ruby stripe-payments

我正在为慈善机构捐款表格,他们已经要求每月捐款计划,用户可以选择他们想要捐赠的金额。

我知道我可以制定个人计划(即如果他们说每月捐款5美元,10美元或20美元)我可以制定三个不同的计划并订阅用户。有没有办法避免为每个不同的订阅量制定新的计划?

3 个答案:

答案 0 :(得分:4)

Stripe文档建议在订阅上使用quantity参数。

https://stripe.com/docs/guides/subscriptions

  

不同的结算金额

     

有些用户在计算结算金额时需要充分的灵活性。对于   例如,您可能有一个具有基本成本的概念订阅   每月10美元,每个月每个座位5美元。我们推荐   通过创建基本计划来表示这些结算关系   每月只需​​1美元,甚至每月0.01美元。这可以让你使用   quantity参数可以非常灵活地为每个用户收费。在一个例子中   只需10美元的基本费用和3个5美元的座位,您每月可以使用1美元   基本计划,并设置quantity=25以实现所需的总成本   本月25美元。

答案 1 :(得分:0)

我认为你不能用Stripe做到这一点。

您可以做的是继续使用Stripe并使用Stripe API动态构建订阅计划,或者转移到PayPal并使用他们的预批准操作。

https://developer.paypal.com/docs/classic/api/adaptive-payments/Preapproval_API_Operation/

答案 2 :(得分:0)

你的问题似乎弄巧成拙 - 如果没有制定相应的计划,你就无法订阅不同金额的订阅!

处理不同金额的经常性捐赠的最简单方法是每个捐赠者create one plan。例如,你可以这样做:

# Create the plan for this donator
plan = Stripe::Plan.create(
  :amount => params[:amount],
  :currency => 'usd',
  :interval => 'month',
  :name => 'Donation plan for #{params[:stripeEmail]}',
  :id => 'plan_#{params[:stripeEmail]}'
)

# Create the customer object and immediately subscribe them to the plan
customer = Stripe::Customer.create(
  :source => params[:stripeToken],
  :email => params[:stripeEmail],
  :plan => plan.id
)

如果您希望避免创建不必要的计划,只需检查是否已存在适当的计划。最简单的方法是使用包含金额的命名约定。例如:

plan_id = '#{params[:amount]}_monthly'
begin
  # Try to retrieve the plan for this amount, if one already exists
  plan = Stripe::Plan.retrieve(plan_id)
rescue Stripe:: InvalidRequestError => e
  # No plan found for this amount: create the plan
  plan = Stripe::Plan.create(
    :amount => params[:amount],
    :currency => 'usd',
    :interval => 'month',
    :name => "$#{'%.02f' % (params[:amount] / 100.0)} / month donation plan",
    :id => plan_id
  )

# Create the customer object as in the previous example

(请注意,在这两个示例中,我假设params[:amount]将是捐赠的金额,以美分为单位。)