StableOps
常見問題

訂單何時過期,以及一直收不到款會怎樣

瞭解 StableOps 付款訂單何時過期、payment.expired Webhook 在什麼條件下觸發,以及系統如何釋放收款地址;文件也說明轉帳在截止時間後才上鍊時為何不會自動恢復訂單,以及商戶應如何核查並人工處理遲到付款。

每個付款訂單都帶有 expiresAt 時間戳。如果在此之前沒有匹配的轉帳到帳,訂單會被推進到 expired,併傳送 payment.expired webhook。

過期是如何處理的

一個後台 worker 以較短的固定週期(約每分鐘一次)掃描過期訂單,因此訂單會在 expiresAt 過後不久翻轉為 expired,而非精確到那一秒。每次過期都在一個事務中完成:

  1. 把訂單從 created 推進到 expired
  2. 將分配給它的地址釋放回地址池,
  3. 入隊一條 payment.expired webhook。

只有仍處於 created 的訂單會過期。一旦訂單到達 detectedconfirmedfinalized,過期時間便不再生效。已在途的付款絕不會僅因超時而被丟棄。

過期之後才到帳的付款

如果客戶在訂單過期後才付款,這筆轉帳不會讓訂單復活:

  • 訂單已不再是 created,精確匹配規則無法推進它。
  • 該地址可能已被釋放並被另一筆訂單複用

請像處理任何打錯的轉帳一樣,針對資金實際落地的地址自行對帳或退款。使用 BYO 地址時,這些資金就在你控制的地址裡。

如何選擇過期視窗

  • 視窗要長到足夠一個真人開啟錢包、複製金額並等轉帳確認。幾分鐘通常太緊,15~60 分鐘是常見區間。
  • 也不要設得過長,以免被放棄的訂單(在單地址模式下)長時間佔用地址。
  • 如果在任何人付款前你已不再需要某筆訂單,請取消它,而不是等它過期。取消同樣會釋放地址併發出 payment_order.canceled。只有仍處於 created 的訂單可被取消。

expired 與 canceled 的區別

狀態觸發條件發出的事件
expiredexpiresAt 已過且無匹配轉帳payment.expired
canceled訂單仍為 created 時你呼叫了取消介面payment_order.canceled

兩者都會釋放訂單仍持有的地址。

相關

這篇文件怎麼樣?

最後更新

本頁內容