簡體   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