繁体   English   中英

Stripe Checkout 订阅付款失败重定向到过期链接页面

[英]Stripe Checkout Subscription Payment failure redirects to Expire Link Page

我正在尝试使用他们的Checkout API集成 Stripe One time 和 Subscription Payment。

我还启用了 3D 安全支付。 在一次付款成功后,它会重定向到我们的成功页面。 当付款失败时,它会在结帐表单中显示错误消息。 正如预期的那样。

在结帐订阅中,当付款成功时,它会完美地重定向到成功页面。 对于失败的付款,它也会在 3D 身份验证后显示错误消息,但是当我尝试在尝试失败后使用另一张卡或同一张卡付款时,它会将我重定向到Expired link page

我检查了条纹演示结帐页面( https://checkout.stripe.dev/preview ),它工作正常,但不知道我错过了什么。

我从条带文档中了解到,对于失败的付款,我应该处理错误并告诉用户/重定向使用不同的付款方式。

我已经注册了以下 webhook 事件:

  1. invoice.payment_action_required
  2. 充电失败
  3. 客户订阅已删除
  4. customer.subscription.created
  5. checkout.session.completed
  6. 发票已付

invoice.payment_action_required事件被触发时,我必须手动确认3D 安全认证的付款(订阅需要)。 我已经编写了以下代码来确认付款。

 if (paymentIntent.status === 'requires_action') { await stripe.paymentIntents.confirm(payment_intent); }

这是创建订阅会话的代码片段:

 const session = await stripePrivate.checkout.sessions.create({ mode: 'subscription', payment_method_types: ['card'], line_items: [ { price: planId, quantity: 1 } ], metadata: { transactionId }, subscription_data: { metadata: { transactionId } }, success_url: `${merchantCallbackURL}?sessionId={CHECKOUT_SESSION_ID}&status=success&orderId=${orderId}`, cancel_url: `${merchantCallbackURL}?sessionId={CHECKOUT_SESSION_ID}&status=canceled&orderId=${orderId}` }); const callbackUrl = session.url;

下面是页面,如果订阅付款失败(从第二次尝试开始),我将被重定向到:

在此处输入图片说明

在这里,我添加了一些结帐 URL 以进行测试:

测试卡1:4000008260003178(余额不足)

测试卡2:4000002500003155

  1. https://checkout.stripe.com/pay/cs_test_a1SAsf7YCjXOZPNKf0K9AXNDHSm8lMLFwD80VZEajKxEAgpeD9GiZBH2wr#fidkdWxOYHwnPyd1blpxYHZxWjA0TGF0TDFDQWA3QFN8cm9dRjBzRk1tVHxEfHBHbnBJf280clBGblNsX0NSMGE2bGY1QFdsYktWaUY2M0JTN1dATERKaEBXcExGf1VBTzxKdz1%2FM3RmSjVxNTVJf1dTY3NmRycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl
  2. https://checkout.stripe.com/pay/cs_test_a1RTXGddpYeZy0zRfvuJrGWqtT3KiURrJFCjSDS9fK8OIhdmTPFBD0Mzx8#fidkdWxOYHwnPyd1blpxYHZxWjA0TGF0TDFDQWA3QFN8cm9dRjBzRk1tVHxEfHBHbnBJf280clBGblNsX0NSMGE2bGY1QFdsYktWaUY2M0JTN1dATERKaEBXcExGf1VBTzxKdz1%2FM3RmSjVxNTVJf1dTY3NmRycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl
  3. https://checkout.stripe.com/pay/cs_test_a1ZMzrim1XQWNVgHCceiSw9mjrtMMdTricwdGhzf7wdHYcEsSabFTxRGcv#fidkdWxOYHwnPyd1blpxYHZxWjA0TGF0TDFDQWA3QFN8cm9dRjBzRk1tVHxEfHBHbnBJf280clBGblNsX0NSMGE2bGY1QFdsYktWaUY2M0JTN1dATERKaEBXcExGf1VBTzxKdz1%2FM3RmSjVxNTVJf1dTY3NmRycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl
  4. https://checkout.stripe.com/pay/cs_test_a1iheiAZbEXl3hhuVPBSNARja4XkYL2su4bt0JRqlNQMaVnd4V2Hg5BEWD#fidkdWxOYHwnPyd1blpxYHZxWjA0TGF0TDFDQWA3QFN8cm9dRjBzRk1tVHxEfHBHbnBJf280clBGblNsX0NSMGE2bGY1QFdsYktWaUY2M0JTN1dATERKaEBXcExGf1VBTzxKdz1%2FM3RmSjVxNTVJf1dTY3NmRycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl
  5. https://checkout.stripe.com/pay/cs_test_a1iheiAZbEXl3hhuVPBSNARja4XkYL2su4bt0JRqlNQMaVnd4V2Hg5BEWD#fidkdWxOYHwnPyd1blpxYHZxWjA0TGF0TDFDQWA3QFN8cm9dRjBzRk1tVHxEfHBHbnBJf280clBGblNsX0NSMGE2bGY1QFdsYktWaUY2M0JTN1dATERKaEBXcExGf1VBTzxKdz1%2FM3RmSjVxNTVJf1dTY3NmRycpJ2N3amhWYHdzYHcnP3F3cGApJ2lkfGpwcVF8dWAnPyd2bGtiaWBabHFgaCcpJ2BrZGdpYFVpZGZgbWppYWB3dic%2FcXdwYHgl

以上网址将在 24 小时内过期。 请询问您是否需要另一个活动 url 进行测试。

如何测试?

  1. 使用给定的测试卡1并完成3D认证
  2. 现在使用测试卡 1 或 2 并尝试再次订阅,您将被重定向到Expired link page

我该如何解决这个问题? 我在这里缺少什么?

结帐页面是一次性的。 如果您使用一个来创建订阅,那么它将被“消耗”并且无法再次使用。

听起来您正在尝试处理创建订阅但由于付款处于requires_action状态而导致未来发票付款失败的情况。 如果有问题的卡需要 3DS 并且必须由用户在客户端上确认,就会发生这种情况。 查看 PaymentIntents 流程: https ://stripe.com/docs/payments/intents

您不会重定向到同一个 Checkout 会话来操作处于requires_action状态的卡片,而是可以构建自己的 UI 或使用客户门户: https : //stripe.com/docs/billing/subscriptions/customer-门户网站

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM