我正在为慈善机构捐款表格,他们已经要求每月捐款计划,用户可以选择他们想要捐赠的金额。
我知道我可以制定个人计划(即如果他们说每月捐款5美元,10美元或20美元)我可以制定三个不同的计划并订阅用户。有没有办法避免为每个不同的订阅量制定新的计划?
答案 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]
将是捐赠的金额,以美分为单位。)