![](/img/trans.png)
[英]ERROR with Stripe Checkout: One-Time + Subscription Payment Buttons on the same page?
[英]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 事件:
當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
以上網址將在 24 小時內過期。 請詢問您是否需要另一個活動 url 進行測試。
如何測試?
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.