Rivya AI 文件

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 拆成三個階段會比較容易理解:

  1. Rivya 建立 checkout session
  2. 使用者完成 Stripe Checkout
  3. 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 後,最乾淨的驗證路徑是:

  1. /payment 完成自己的流程
  2. 如果購買的是方案,檢查 /settings/billing
  3. 如果購買的是積分包,檢查 /settings/credits
  4. 如果帳號看起來仍不同步,檢查 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,請在重試付款前重新檢查。

目錄