提问者:小点点

使用有效的支付方式重试后,条带订阅发票仍保持未结状态


我正在使用stripe-php库实现stripe订阅,遵循这个https://stripe.com/docs/billing/subscriptions/fixed-price文档

使用失败的付款方式模拟客户订阅,在发票状态打开的情况下成功生成条带订阅对象。

问题是在我的后端实现重试发票时,我的代码如下:

        // retrieve new payment method (valid one)
        $payment_method = \Stripe\PaymentMethod::retrieve (
            $request->paymentMethodId
        );

        // attach customer to payment method
        $payment_method->attach([
            'customer' => $request->customerId,
        ]);

        // update customer default payment method
        \Stripe\Customer::update($request->customerId, [
            'invoice_settings' => [
                'default_payment_method' => $request->paymentMethodId
            ]
        ]);

        // retrieve invoice object
        $invoice = \Stripe\Invoice::retrieve($invoiceId, [
            'expand' => ['payment_intent']
        ]);

在stripe dashboard上,客户默认付款方式已成功更新为最新的付款方式(有效卡),但订购发票仍保持未结状态。

请帮忙,有人也面临这个问题吗?恐怕我错过了条纹文档的一些步骤。


共1个答案

匿名用户

如评论中所述;附加新的PaymentMehod不会重新尝试付款。

你需要:

  • 将客户重定向到您站点的结账页面(允许客户输入付款详细信息并完成订单的页面),
  • 但这一次,不是创建一个新的PaymentIntent,而是将发票PaymentIntent
  • 然后使用(所述结账页面的)JavaScript,调用Stripe。js'stripe.confirmCardPayment(…)方法

请注意,SetupIntent方法可能不需要上述内容,这对订阅很有用,并允许所谓的“会话外”支付。