IOSOR 知識庫

事件順序與帳本入帳

錯序的 DLR 與 MO 事件絕對不能破壞預付扣款規則 — 到達順序並非法定金錢規則。

網路傳遞回呼常會錯序。遲到的 DLR、早到的 MO,或在結算前的狀態翻轉,絕對不能憑空製造第二筆扣款,或覆寫已結算的記錄。本頁面即為入帳順序合約:帳本規則能承受重新排序,這既不是關聯 ID 入門,也不是 MO 對比 MT 的計費論文。

相關文章:重複的 Webhook 絕不能導致二次扣款、大流量下的 Webhook 消費端營運、簽章與重放時窗閘道、首次發送前的 Webhook 契約、同一帳本上的扣款列與送達狀態。

到達順序並非法定帳本規則

HTTP 到達只是一場傳輸意外。金錢會在「保留 → 結算 → 結果更新」的流程下入帳,而不是「哪一個回呼最後落地」。柔性的 USD 1,000/月 將重新排序視為財務事故,當產品顯示成功而帳本卻雙重移動時。USD 20 證明強制延遲的 DLR 絕不會開啟平行扣款。相同 ID 的重放:重複的 Webhook 絕不能導致二次扣款。本頁面專門處理不同事件、錯誤序列。

錯序長什麼樣子

到達模式 安全入帳 不安全反應
結算前 DLR 暫掛;在保留下結算一次 僅從 DLR 扣款
失敗後交付 原地更新結果 翻轉導致二次收費
MT 關聯前 MO 存入收件匣;在 MT 結算時合併 將 MO 當作出站收費
退款後狀態 無新金錢;加註說明 重新結算已釋放意圖
兩個終端,一個意圖 一筆金錢列 兩筆扣款列 。

工作程序在大流量下套用相同的表格:大流量下的 Webhook 消費端營運。真實性第一:簽章與重放時窗閘道。

能承受重新排序的入帳規則

在產生副作用之前,先鑄造保留與冪等金鑰(首次發送前的 Webhook 契約)。每個可計費意圖結算一次;後續事件僅更新結果。絕不要為早到或晚到的 DLR 或 MO 開啟平行扣款。拒絕或將超出簽章視窗的請求停放在外 — 不得憑空捏造成功。依意圖匯出合併 — 而非到達時間戳記。金錢↔結果:同一帳本上的扣款列與送達狀態。當錯序煙霧顯示一個意圖出現兩條金錢線時,柔性流量語言將保持封鎖。

延遲是常態,雙倍金錢則否

結算後暫掛是尋常現象。因為回呼到達較晚而對同一個金鑰進行第二次收費,則是一個臭蟲。共享終端詞彙 — 已交付、失敗、暫掛、需要注意 — 而不需要英雄代碼:產品與財務的共用狀態語言。USD 20 證明 DLR 先於結算與結算先於 DLR 會留下一個預付列。

事件順序與入帳的買方檢查清單

  1. 保留/結算是否獨立於 HTTP 到達?
  2. 晚到的 DLR 是否僅更新結果 — 絕不產生第二筆扣款?
  3. 早到的 MO 是否不會被當作出站收費?
  4. 退款/釋放是否會阻擋後續狀態重新結算?
  5. 大流量下的工作程序是否套用相同的入帳表?
  6. 當錯序煙霧呈現紅色時,柔性的 USD 1,000/月 討論是否遭到封鎖?

任何「否」都意味著有序帳本入帳仍處於草稿階段。

從 IOSOR 開始

事件順序與帳本過帳按共享 id 對帳。

相關:duplicate-webhook-no-second-debit webhook-consumer-ops-at-volume。

IOSOR 要點

這是可值班的作業紀律,不是話術填充。

要做:點名業主並過閘。 不要:跳過閘門或匿名覆蓋。

這篇指南有幫助嗎?

相關指南