【问题标题】:Stripe: How to set up recurring payments without plan?Stripe:如何在没有计划的情况下设置定期付款?
【发布时间】:2015-01-04 09:44:30
【问题描述】:

第一次使用 Stripe API。使用 PHP 和 JS 在 WordPress 上实现它。 处理捐赠表格。捐赠者应该能够选择建议的金额(单选按钮 - 25,50,75,100)或按照他/她的意愿支付(选择“其他”后的文本字段)。我能够得到这个工作。

有一个复选框可将金额设置为定期付款。我为 25、50、100 等固定选项创建了定期付款计划。

如果捐赠者选择自定义金额,我如何设置定期付款?找不到相关的 API。请帮忙。

【问题讨论】:

    标签: javascript php wordpress forms stripe-payments


    【解决方案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"));
    

    条纹支持

    【讨论】:

    • 哇哦。这是一个疯狂的想法。永远不会想到它。因此,这确保我不需要为每个杂项金额制定自定义计划。有趣!
    • 这么讨厌的解决方法,但感谢分享这个!订阅的“计划”参数应该是可选的。
    【解决方案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 似乎已经被遗弃了。希望这个答案对其他人有所帮助!
    猜你喜欢
    • 2013-10-29
    • 2015-02-08
    • 2023-03-27
    • 2017-07-12
    • 2019-06-20
    • 1970-01-01
    • 2019-10-24
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多