1. 程式人生 > >交易系統中支付流程該如何做?

交易系統中支付流程該如何做?

前言

我以前在企業中做過交易系統,踩了很多坑。前幾天在現在的公司中,做付款的同學犯錯了。付款給客戶的時候產生了雙重扣費。多付出了上百萬的錢出去。然後……

問題原因

  1. 我們系統是微服務架構
  2. 交易系統開啟開啟事務後,呼叫支付系統,然後自身超時,導致事務回滾。
    詳細流程:
    這裡寫圖片描述

正確的業務流程

交易系統注意事項

  1. 操作需要有跡可尋。多寫中間狀態,多記錄日誌。
  2. 事務要拆分到最小粒度,步步為營,在產生問題的過程中更容易定位問題出在哪一個階段。
  3. 對於設計到呼叫其他服務的時候,一定要先寫自己的庫,產生中間狀態,提交事務後,再發起後續流程。
  4. 交易系統中,通常有一個最終狀態的概念,每一筆交易都只有兩個狀態,交易成功或交易失敗。如果是處理中的狀態。那麼需要呼叫查詢結果。直到查詢到最終狀態為止,否則不可以擅自操作。
  5. 對於任何事物的操作,一點要把事務時間壓縮到最短,時間越長,你越容易出現問題。
  6. 可以相信自己,一定要提防他人(其他業務系統),做好自保措施。
  7. 因為你操作的是錢,所以要極度小心,否則就變成背鍋俠了。