Whizi結帳時卡片遭拒或付款失敗

快速解答

如果你的卡片在Whizi結帳時真的被拒絕,拒絕是來自你的銀行,透過Stripe處理,而不是來自Whizi,因此解決方法是換一張卡,或聯絡你的銀行。Whizi本身完全沒有卡片遭拒的訊息,所以任何帶有Whizi用詞的錯誤,都代表這不是一次真正的拒絕。

簡短答案

如果你的卡片真的被拒絕,拒絕是來自你的銀行,透過Stripe處理,而不是來自Whizi,因此解決方法是換一張卡,或聯絡你的銀行。銀行為什麼一開始就會封鎖AI訂閱付款,以及如何判斷你碰到的是六種原因中的哪一種,當你的卡被拒絕時該如何為AI付費裡有說明。Whizi裡完全沒有卡片遭拒的訊息。卡片資料是在Stripe代管的結帳頁面輸入的,那個頁面在Whizi的程式碼之外,而Whizi的Stripe webhook處理程式,也沒有任何拒絕付款的訊息可以顯示給你看。

所以如果你看到的錯誤帶有Whizi的用詞,那就不是一次拒絕。那是以下其中一個字串,每一個都有各自不同的原因與解決方法。

最容易被誤認成拒絕的三種情況:

你看到的內容代表的意思該怎麼做
A $1 intro trial has already been used with this payment method.這張卡已經領取過$1優惠試用以原價訂閱,或使用一張還沒領取過優惠的卡片。重試不會有用
Pricing is temporarily unavailable.Whizi無法從Stripe讀取價格表稍後再試一次。這不是你這邊能修好的問題
Failed to create Stripe checkout session.結帳呼叫失敗,後端沒有提供任何訊息重試一次。如果一再發生,請聯絡客服

Whizi後端在結帳時回傳的每一個錯誤

這些訊息來自伺服器,所以會附帶一個HTTP狀態碼與一個錯誤代碼,讓客服可以在網路追蹤紀錄裡比對。每一個後端錯誤內容都是JSON,格式為{"error": {"code": "...", "message": "..."}},所以代碼會緊接在訊息旁邊。下面的表格依HTTP狀態碼排序。

訊息HTTP代碼觸發時機
A plan and billing cycle are required.400invalid_checkout_request結帳內容無法被解析
Invalid plan or billing cycle.400invalid_plan_or_cycle方案或計費週期,對應不到任何已知的Stripe價格
No subscription item found for the active subscription.400subscription_item_missing一次原地方案變更,對上了一個沒有項目的訂閱
The supplied discount must be an active 100% promotion code or coupon ID.400invalid_discount提供的代碼不是有效的100%優惠碼或折扣券ID
Temporary email addresses are not allowed. Please use a permanent email address.400disposable_email_blocked登入帳號的電子郵件,在臨時信箱網域名單上
A $1 intro trial has already been used with this payment method.403duplicate_trial_payment_method這張卡的指紋已經領取過$1優惠試用
User not found.404not_found結帳路由讀不到你的使用者資料列
Pricing is temporarily unavailable.503pricing_unavailable無法從Stripe讀取在地化的價格表

每一種情況該怎麼處理。優惠試用的拒絕在下面另有一節說明。Pricing is temporarily unavailable.是伺服器端的問題:HTTP 503,發生在無法從Stripe讀取在地化價格表時,你的帳號沒有任何設定能改變這件事。Failed to create Stripe checkout session.根本不是伺服器訊息,這也是它沒有指出原因的原因:它是網站自己的備用文字,在結帳呼叫失敗、後端又沒有提供訊息時顯示。這兩種都是等待後重試。

A plan and billing cycle are required.Invalid plan or billing cycle.都代表這次請求,沒有帶著伺服器認得的方案,所以請從定價頁重新開始,在那裡選擇方案,以及月付或年付切換,而不是重複使用一個舊的或被修改過的結帳連結。

User not found.代表你的登入狀態,指向一筆伺服器讀不到的使用者資料。請登出、重新登入,再重新開始結帳。

No subscription item found for the active subscription.是在方案變更時發生,而不是第一次購買,而且無法從介面自行修好。請聯絡客服。

結帳還沒開啟前,網站就顯示的錯誤

這些訊息來自瀏覽器,不是伺服器,所以沒有HTTP代碼。它們的意思大致相同:Whizi在把你的帳號準備好交接給Stripe的過程中,某個步驟失敗了,所以完全沒有嘗試過扣款。

訊息觸發時機
Failed to create Stripe checkout session.結帳呼叫失敗,後端沒有提供任何訊息
Could not open checkout. Please try again.升級彈窗的結帳呼叫拋出錯誤,且沒有訊息
Authentication failed. Please sign in again.結帳前,權杖擷取沒有回傳任何內容
Failed to save user before checkout.結帳前的使用者儲存呼叫沒有成功
Could not prepare your account for checkout.定價頁在結帳前無法儲存使用者資料
Missing user or Stripe customer details.結帳當下,使用者ID是缺漏的
Checkout response did not include a Stripe URL.結帳成功,但既沒回傳URL,也沒回傳訂閱ID
Something went wrong while starting your trial. Please try again.定價頁通用的試用啟動失敗訊息

碰到這份清單上的任何一項,請登出、重新登入,再從定價頁重新開始結帳。這能解決結帳前權杖擷取沒有回傳任何內容的情況,也就是Authentication failed. Please sign in again.所回報的狀況。

Checkout response did not include a Stripe URL.是例外:它代表這次呼叫其實成功了。在你嘗試再次付款之前,先打開帳號設定,確認是否已經有一份訂閱存在。

還有兩個訊息,出現在你先選方案、再登入或註冊的登入頁與註冊頁上:Signed in, but checkout could not start. Please choose your plan again.Your account was created, but checkout could not start. Please sign in and choose your plan again.兩者都代表帳號的部分成功了,只有交接的部分失敗。你的帳號是存在的。請前往定價頁,重新選擇方案。

還有一個容易讓人摸不著頭緒的原因:連續重試結帳太多次,會觸發流量限制,回傳HTTP 429與Too many requests. Please wait and try again.。同一個帳號上的每一次請求,不論走哪條路由,都算在每分鐘30次的上限裡。請等一分鐘,不要一直點擊。

優惠試用的拒絕,無論怎麼重試都不會消失

A $1 intro trial has already been used with this payment method.是HTTP 403,代碼為duplicate_trial_payment_method。這是本頁裡唯一一個無論重試幾次都不會消失的結帳錯誤。

這項檢查綁定的是卡片,而不是帳號:當卡片的指紋已經領取過優惠試用時,就會回傳這個拒絕。

如果你正在搜尋這個錯誤,有個細節要注意:這個字串真的寫著「$1」,即使優惠試用實際收取的金額是美金$0.99。請照著這個字面去比對,因為「$1」這個寫法,就是伺服器實際送出的內容。

你有兩個選擇:以你想要的方案的標準價格訂閱,或使用一張還沒領取過優惠試用的付款方式。

方案價格、試用條款,以及轉換時會發生什麼事,都寫在帳單、試用與如何取消裡。

已經付款成功,但帳號還停留在免費方案

已扣款的卡片,加上一個表現仍像免費方案的帳號,是跟結帳失敗不同的症狀,而且有專屬的一頁說明。

請閱讀已經付款,但方案功能仍被鎖住,裡面有那個狀態下會出現的字串、能判斷哪個帳號持有訂閱的檢查方法,以及該提供給客服的資訊。

Whizi無法告訴你的事

三個缺口,讓你不用浪費時間去找根本不存在的答案。

Whizi永遠看不到你的銀行為什麼拒絕一張卡,因為那個過程是在Stripe代管的結帳頁面裡發生的,在Whizi的程式碼之外。針對兩個Whizi程式庫的全面搜尋,沒有找到任何一種卡片遭拒或付款遭拒的字串,而Stripe webhook處理程式,也沒有帶著任何拒絕付款的訊息。所以你的帳號裡沒有儲存任何拒絕原因,沒有重試按鈕,Whizi也沒有東西可以覆寫。原因掌握在你的銀行手上。

Whizi也沒有針對續訂失敗或逾期的任何訊息。兩個程式庫裡都不存在給使用者看的相關字串,所以如果之後續訂扣款失敗,你不會收到Whizi的錯誤說明。唯一存在、跟續訂沾得上邊的通知,是一則推播通知,內容是「你的訂閱已不再有效。」,標題是「Whizi訂閱已更新」,會在RevenueCat webhook把帳號同步降回免費方案時發送。那是RevenueCat webhook的路徑,所以它並不是在回報一次Stripe續訂失敗。

Whizi的帳單透過Stripe處理,所以哪些卡片可以付款,是由那邊決定,而不是由Whizi決定。俄羅斯或伊朗的卡片無法完成註冊。烏克蘭、哈薩克、土耳其、印尼與印度則可以全程使用。

操作清單
  • 真正的卡片拒絕,來自你的銀行,透過Stripe處理,而不是來自Whizi
  • Whizi沒有卡片遭拒的訊息,也沒有拒絕原因可以顯示給你看
  • 帶有Whizi用詞的錯誤,代表這不是一次拒絕
  • 登入狀態的錯誤,靠登出再登入,然後從定價頁重試就能解決
  • Pricing is temporarily unavailable是伺服器端的問題:請等待,不要一直重試
  • 優惠試用綁定的是卡片指紋,而不是帳號
  • 已扣款但仍停留在免費方案,是不同的症狀,詳見subscription-not-active

常見問題

為什麼Whizi說我的付款失敗,但我的銀行完全沒有顯示扣款紀錄?

因為你看到的字串,是網站在還沒連上Stripe之前就發出的,所以根本沒有嘗試過扣款。快速分辨的方法:一次真正的後端拒絕,會以JSON回傳並帶有錯誤代碼,例如pricing_unavailableinvalid_plan_or_cycle,而且在網路追蹤紀錄裡會顯示一個HTTP狀態碼。瀏覽器端的字串兩者都沒有。如果你看到的內容沒有帶代碼,就代表根本沒有碰到你的銀行。

A $1 intro trial has already been used with this payment method.是什麼意思?

這代表你輸入的這張卡,已經領取過優惠試用了。這不是拒絕:Whizi根本沒有卡片遭拒這種字串,而這個訊息,來自Whizi自己的結帳路由,是HTTP 403,代碼為duplicate_trial_payment_method,寫信詢問時值得引用這個代碼。你可以選擇以標準價格訂閱,或使用一張還沒領取過優惠試用的付款方式。

我收到Pricing is temporarily unavailable.,是我的卡有問題嗎?

不是。這是HTTP 503,代碼pricing_unavailable,來自負責從Stripe讀取在地化價格表的路由,而不是會用到卡片資料的結帳路由。你這邊沒有任何辦法能修好,所以請等待,不要換卡重試。如果你看到的是Failed to create Stripe checkout session.,那是另一個來源不同的字串:是結帳呼叫失敗、後端又沒有提供訊息時,網站自己顯示的備用文字。

我的優惠碼被拒絕了。為什麼?

結帳回傳的是The supplied discount must be an active 100% promotion code or coupon ID.,HTTP 400,代碼invalid_discount。結帳時的折扣欄位,只接受有效的100%優惠碼或折扣券ID,所以過期的代碼或部分折扣的代碼,在那裡都會被拒絕。如果你現在就需要使用,移除代碼後以原價結帳即可。

Whizi在結帳時拒絕了我的電子郵件。發生了什麼事?

你看到的是Temporary email addresses are not allowed. Please use a permanent email address.。結帳路由會在登入帳號的電子郵件網域,出現在臨時信箱名單上時,回傳HTTP 400,代碼disposable_email_blocked。同一個字串,在註冊時會以HTTP 403出現。在帳號上使用一個永久的信箱地址,結帳就能繼續進行。

我被重複扣款兩次。該怎麼辦?

請聯絡客服,並附上兩張Stripe收據,而不是盲目地直接取消。取消是另一個獨立的動作,有它自己的結果:對一個有效中的訂閱,取消路由會回傳Subscription cancellation scheduled for end of billing period.,所以那份訂閱,會持續運作到已經付清的這期結束為止。