Rivya Payment Checkout 指南
了解 Rivya 方案和 credit-pack checkout、Stripe redirects、/payment bridge、webhooks、billing updates 和 purchase checks。
最近審閱於 2026/04/28
當你需要了解在 Rivya 購買方案或積分包後會發生什麼時,請使用這份 payment checkout 指南。
使用者通常會誤解 Rivya payment 的一點是:
Stripe 完成付款不是最後一步。產品仍然必須跟上,並正確反映那個變更。
這就是 checkout flow 不會在 Stripe 結束,也不會在瀏覽器回來的那一刻結束的原因。
Payment Flow 有三個真實階段
目前,如果把 checkout 拆成三個階段會比較容易理解:
- Rivya 建立 checkout session
- 使用者完成 Stripe Checkout
- Rivya 等待產品狀態重新變得可信
第三個階段正是 /payment 存在的原因。
Checkout 可以從哪裡開始
Checkout 目前會從已經符合使用者意圖的位置開始:
- Pricing
/settings/billing/settings/credits
兩種主要購買形狀是:
- subscription plan checkout
- one-time credit-pack checkout
這是不同的商業決策,但仍會匯入同一個確認路徑。
Plan Checkout 和 Credit-Pack Checkout 類似但不相同
Plan checkout 是 subscription-shaped。
Credit-pack checkout 像一次性的 wallet top-up。
這個差異很重要,因為付款後 Rivya 需要知道應該更新:
- subscription state
- 或 wallet state
這就是為什麼同一個 Stripe success moment 之後,仍可能把你送回不同的產品介面。
/payment 為什麼存在
/payment 不是一般意義上的 receipt page。
它是 processing bridge。
它的工作是:
- 讀取 Stripe 的
session_id - 檢查 product-side payment record 是否已 settled
- 如果需要,短時間持續 polling
- 只有那時才把你 redirect 回 app 中正確的位置
這讓它更像 state-synchronization page,而不是 content page。
從產品角度看,Payment 何時才真正完成?
從使用者角度看,Stripe 說成功時,付款感覺已完成。
從產品角度看,只有帳號狀態在 Rivya 中可見地更新後,付款才真正完成。
這通常表示:
- payment record 已標記為 paid 或 completed
- subscription 或 wallet effects 已可見
- 你可以安全回到 billing 或 credits,而不會看到 stale state
這就是產品等待 /payment,而不是立刻把使用者丟回 app 的真正原因。
為什麼 /payment 會 Poll,Webhooks 仍然重要
/payment 不會取代 Stripe webhooks。
Webhooks 仍然負責更新 durable backend state。
/payment 頁存在,是為了讓體驗可以等到那個狀態已經足夠反映、足夠可信後,再 redirect。
這就是下列兩件事的差別:
- 「Stripe processed something」
- 和「Rivya 現在清楚反映該變更」
Payment 後你會去哪裡
回到哪裡,刻意與剛剛變更的內容綁定。
如果購買與 subscription 相關,通常會送回 billing。
如果購買的是 credit pack,通常會送回 credits。
這不是表面路由。它對應的是使用者付款後通常會問的問題:
- 我的方案更新了嗎?
- 或我的 wallet 更新了嗎?
Timeout 或 Failure 實際代表什麼
如果 /payment timeout 或 failure,這不會自動表示付款本身消失。
更常見的是下列其中一種:
- product-side payment record 還沒有 settled
- redirect 正在等待仍在追上的狀態
- 如果太早 redirect,帳號頁看起來仍會是 stale
這就是 timeout state 比 fake success state 更好的原因。它告訴使用者,仍未完成的是產品確認,而不一定是付款本身。
檢查 Payment 是否真的落地的最佳方式
Checkout 後,最乾淨的驗證路徑是:
- 讓
/payment完成自己的流程 - 如果購買的是方案,檢查
/settings/billing - 如果購買的是積分包,檢查
/settings/credits - 如果帳號看起來仍不同步,檢查 Notifications Center
這通常比隨機刷新頁面並猜測更好。
Payment 也會成為帳號記憶
Payment 不只是 checkout action。它也會透過 durable events 成為 account history 的一部分,例如:
- subscription started
- subscription renewed
- payment failed
- credit package added
這也是 notifications 在這裡重要的原因。關閉 Stripe tab 不是帳號故事的結束。
更好的理解方式
理解 Rivya checkout 最簡單的方式是:
- Stripe 處理 money movement
/payment處理 product-side re-entry
把這兩個角色分開,整個流程就更容易推理。
接著閱讀
Checkout 狀態檢查清單
當購買看起來未完成或令人困惑時,請檢查:
- 確認 Checkout 從哪裡開始:public pricing、billing settings 或 credits settings。
- 檢查 Stripe 是否完成付款,並將使用者帶回 /payment。
- 在開始另一個 paid task 前,等待 Rivya 更新 subscription、pack、invoice 和 wallet state。
- 使用 billing pages 處理 subscriptions,使用 credits pages 處理 packs 或 wallet history。
- 不要把 browser redirect 當成 webhook 和 account state 已 settled 的證明。
重新嘗試 Payment 前先檢查
如果使用者看到 stale plan、missing credits、duplicate Checkout windows、failed payment,或成功的 Stripe receipt 尚未反映到 Rivya,請在重試付款前重新檢查。