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 定期付款

为客户订阅定期付款计划后如何获取费用 ID?

Stripe:重复付款失败

Stripe Payment 是不是支持自动定期付款?

使用 Stripe Webhook 发送获取客户详细信息以使用 Stripe 进行定期付款

贝宝定期付款计划修改