【问题标题】:How to check if stripe recurring payment failed如何检查条带定期付款是否失败
【发布时间】:2020-08-25 14:46:03
【问题描述】:

我目前正在创建一个条带客户,并为他们分配一个定期计划以接收定期每月付款。

//Create Customer:
$customer = \Stripe\Customer::create(array(
    'source'   => $token,
    'email'    => $_POST['email'],
    'plan'     => "monthly_recurring_setupfee",
));

// Charge the order:
$subscription = \Stripe\Subscription::create(array( 
     "customer" => $customer->id, 
          "items" => array( 
           array( 
             "plan" => $plan->id, 
           ), 
     ), 
)); 

但几个月后,我发现很少有客户仍然可以使用我的服务,但他们的定期付款失败了。

我知道有一个 webhook,但我无法弄清楚并且无法测试 webhook 是否正常工作。 我如何检查定期付款是失败还是成功

【问题讨论】:

    标签: php stripe-payments


    【解决方案1】:

    您对 webhook 的看法是正确的:这是一条可行的路。 它们允许您获得接近实时的定期付款信息。 另外,我建议将订阅 ID 与 Stripe 的客户 ID 一起保存在您的用户实体中。

    流程如下:

    1. 您可以使用本指南为您的端点创建一个 webhook:https://stripe.com/docs/webhooks
    2. 你测试一下:https://stripe.com/docs/testing#webhooks
    3. 您根据收到的 webhook 提供服务。

    这里是关于订阅 webhook 的详细文档:https://stripe.com/docs/billing/subscriptions/webhooks

    如果还是比较复杂,可以使用一些后台作业来检查订阅状态。

    你有两个选择:

    1. 遍历 Stripe 中的所有订阅,并停止为订阅过期的用户提供服务。这种情况下的条带端点将是https://stripe.com/docs/api/subscriptions/list
    2. 仅当您将订阅 ID(最好是订阅续订/结束日期)存储在用户实体中时,此选项才有效。遍历系统中订阅到期的用户列表,从 Stripe 获取他们的订阅并检查订阅状态。在这种情况下使用 Stripe 的 API:https://stripe.com/docs/api/subscriptions/retrieve

    【讨论】:

    • 非常感谢,我认为获取所有订阅并查找过期订阅现在可以完成工作,但我仍然需要实施 webhook 以实现长期解决方案。你有没有尝试过为 Stripe 实现 webhook 并且成功了?我期待来自 Stripe 的类似 paypal IPN 的东西,但它太复杂并且无法获取数据进行测试。
    • @MAHAMUDULHASANTANVIR 是的,我做到了。您可以使用混合模型: 1. 通过获取列表检查订阅 2. 设置 webhook 并记录其中响应 HTTP 200 的数据。当您收集到足够的数据时,您可以调整系统以处理 webhook 数据。 3. 当您觉得您的 webhook 端点按预期工作时,您删除第一个模块(订阅列表检查)。
    猜你喜欢
    • 2012-06-13
    • 2022-01-05
    • 1970-01-01
    • 2014-06-12
    • 2011-07-30
    • 2013-02-22
    • 1970-01-01
    • 2018-08-22
    • 2015-06-27
    相关资源
    最近更新 更多