Stripe:如何在没有计划的情况下设置定期付款?
Posted
技术标签:
【中文标题】Stripe:如何在没有计划的情况下设置定期付款?【英文标题】:Stripe: How to set up recurring payments without plan? 【发布时间】:2015-01-04 09:44:30 【问题描述】:第一次使用 Stripe API。使用 php 和 JS 在 WordPress 上实现它。 处理捐赠表格。捐赠者应该能够选择建议的金额(单选按钮 - 25,50,75,100)或按照他/她的意愿支付(选择“其他”后的文本字段)。我能够得到这个工作。
有一个复选框可将金额设置为定期付款。我为 25、50、100 等固定选项创建了定期付款计划。
如果捐赠者选择自定义金额,我如何设置定期付款?找不到相关的 API。请帮忙。
【问题讨论】:
【参考方案1】:这是一项低技术,但我发现最简单的方法是尽可能少地使用 Stripe API。无需创建订阅计划和产品之类的东西,您只需:
创建条纹客户。 为他们安排一个 cron 作业。如果您已经知道如何向某人收费,您只需要弄清楚如何创建客户,然后剩下的就可以了。
这意味着您将 Stripe 的一些聪明才智转移到我们自己的基础架构上,但实际上我发现这比考虑 Stripe 的所有 API 文档和功能更容易思考/维护。
【讨论】:
我和你的感觉一样,Stripe 的重复自动化使得需要自定义费用或自定义订阅期的业务变得复杂【参考方案2】:Stripe 建议的另一种方法是设置一个经常性金额为 1 美元(或 0.01 美元以获得更大的灵活性)的计划,然后根据需要改变数量。
例如使用 0.01 美元的计划方法,如果我想收取 12.50/月的费用,我可以像这样调整数量:
$customer->subscriptions->create(array("plan" => "basic", "quantity" => "1250"));
条纹支持
How can I create plans that don't have a fixed price? Subscription Quantities【讨论】:
哇哦。这是一个疯狂的想法。永远不会想到它。因此,这确保我不需要为每个杂项金额制定自定义计划。有趣! 这么讨厌的解决方法,但感谢分享这个!订阅的“计划”参数应该是可选的。【参考方案3】:首先,您需要create a new customer。
提交时,您可以使用自定义金额到create a new plan:
$current_time = time();
$plan_name = strval( $current_time );
Stripe_Plan::create(array(
"amount" => $_POST['custom-amount'],
"interval" => "month",
"name" => "Some Plan Name " . $_POST['customer-name'],
"currency" => "usd",
"id" => $plan_name
)
);
请记住,'id'
必须是唯一的。您可以使用客户的姓名、时间戳或其他一些随机方法来确保始终如此。
然后你只需 create the subscription on the newly-added customer:
$customer = Stripe_Customer::retrieve($customer_just_created);
$customer->subscriptions->create(array("plan" => $plan_name));
您可能可以省略上面的第一行,因为您应该已经从实际创建客户时分配了一个客户变量。
【讨论】:
您提到 id 应该是唯一的.. 为什么不在您的代码中反映这一点?只需像您一样将客户名称添加到计划名称中 无法保证客户名称是唯一的...但可以肯定的是,我会添加一些内容。 确实如此。time()
可能是没有查询数据库的最佳方法。我不使用条纹,所以我不知道,但你传递给subscriptions->create()
的 id 是什么?如果是这样,您需要存储变量并在那里使用它。
在您输入评论时对此进行了编辑。 ;-)
你得到了 +1 ;) 很遗憾 OP 似乎已经被遗弃了。希望这个答案对其他人有所帮助!以上是关于Stripe:如何在没有计划的情况下设置定期付款?的主要内容,如果未能解决你的问题,请参考以下文章
使用 In App Wallet 进行 Stripe 定期付款