测试条带中的 invoice_payment.failed 事件

Test for invoice_payment.failed event in stripe

我想测试条带中的 invoice_payment.failed 事件 Web 挂钩。我已经设置了一个 Web 挂钩端点并尝试从条带发送测试数据,但这不起作用,因为事件 ID 不存在。条纹指南中提到了一些解决方案。这是我看到的link

https://support.stripe.com/questions/test-failed-invoice-payment

它告诉我创建一个计划并订阅一个 trial_end 周期设置为 1-2 分钟的客户,并使用特定的信用卡号码创建客户对象。我将 trial_end 时间段设置为 "now" 并使用给定的信用卡号仅获得 charge.failed 而不是 invoice_payment.failed 事件。我是 stripe 的新手,想知道如何将 trial_end 时间段设置为从现在开始的 1-2 分钟,以及如何准确地测试 invoice_payment.failed 事件。我在 php 工作。任何帮助将不胜感激。

creating a subscription, you can set the trial period with the trial_end参数.

为了测试invoice.payment_failed事件,你可以这样做:

  1. 首先,create a customer with a card token (from Checkout or Stripe.js) created with the special testing number 4000 0000 0000 0341:

    $customer = \Stripe\Customer::create([
        "source" => $token,
        "description" => "Test customer"
    ]);
    
  2. 然后,创建试用期较短的计划订阅:

    $subscription = \Stripe\Subscription::create([
        "customer" => $customer->id,
        "plan" => $plan,
        "trial_end" => strtotime("+1 minute")
    ]);
    

这将创建具有一分钟试用期的订阅。一分钟后,将创建发票,大约一小时后,将尝试为发票付款。

如果不想等一个小时,可以手动retrieve the invoice after it's been created and trigger the payment attempt:

$invoice = \Stripe\Invoice::retrieve($invoice_id);
$invoice->pay();

如果您只想测试和处理 invoice.payment_failed 事件以及您可以创建和不能创建的其他事件,那么您应该转到 stripe dashboard 并在 webhooks 设置下,发送所需类型的测试事件。

在新终端(假设你有 Stripe CLI)只需输入:stripe trigger invoice.payment_failed

https://stripe.com/docs/webhooks/test#forward-events