簡短答案
如果你的卡片真的被拒絕,拒絕是來自你的銀行,透過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. | 400 | invalid_checkout_request | 結帳內容無法被解析 |
Invalid plan or billing cycle. | 400 | invalid_plan_or_cycle | 方案或計費週期,對應不到任何已知的Stripe價格 |
No subscription item found for the active subscription. | 400 | subscription_item_missing | 一次原地方案變更,對上了一個沒有項目的訂閱 |
The supplied discount must be an active 100% promotion code or coupon ID. | 400 | invalid_discount | 提供的代碼不是有效的100%優惠碼或折扣券ID |
Temporary email addresses are not allowed. Please use a permanent email address. | 400 | disposable_email_blocked | 登入帳號的電子郵件,在臨時信箱網域名單上 |
A $1 intro trial has already been used with this payment method. | 403 | duplicate_trial_payment_method | 這張卡的指紋已經領取過$1優惠試用 |
User not found. | 404 | not_found | 結帳路由讀不到你的使用者資料列 |
Pricing is temporarily unavailable. | 503 | pricing_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_unavailable或invalid_plan_or_cycle,而且在網路追蹤紀錄裡會顯示一個HTTP狀態碼。瀏覽器端的字串兩者都沒有。如果你看到的內容沒有帶代碼,就代表根本沒有碰到你的銀行。
A $1 intro trial has already been used with this payment method.是什麼意思?
A $1 intro trial has already been used with this payment method.是什麼意思?這代表你輸入的這張卡,已經領取過優惠試用了。這不是拒絕:Whizi根本沒有卡片遭拒這種字串,而這個訊息,來自Whizi自己的結帳路由,是HTTP 403,代碼為duplicate_trial_payment_method,寫信詢問時值得引用這個代碼。你可以選擇以標準價格訂閱,或使用一張還沒領取過優惠試用的付款方式。
我收到Pricing is temporarily unavailable.,是我的卡有問題嗎?
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.,所以那份訂閱,會持續運作到已經付清的這期結束為止。