支付網關思考
- 目的
支付網關是為了屏蔽各種 支付工具之間的差異,對訂單系統行程一個統一的,標准的接口。如下圖所示
- 思路
- 訂單系統的生成訂單號,訂單狀態為待支付
- 用戶發起支付請求,支付網關負責交易支付請求, 生成 支付流水號。
- 支付網關在完成支付請求后 ,負責更新訂單狀態。
- 支付失敗,訂單狀態不更新
- 支付網關在像第三方支付時出現錯誤時重試三次
- 事物補償機制
- 支付狀態 定時更新機制(每10分鍾一次)
- 對賬
- 每晚 從第三方支付公司取出的對賬文件,從訂單統獲取使用該公司的支付文件.
- 分別比對總金額, 發現平與不平,多交款,少繳款。
- 相關異常訂單存入異常訂單表中,第二天人工處理
- 接口設計
1. 訂單狀態同步
bool UpdateOrderPaySatus(string orderId, int paySatas)
2. 預支付請求簽名設計(訂單號,金額,Key ,Signature)
- 把請求中的參數 除了Signature 外 按照參數名稱進行正向排序
- 把所有參數名和參數值串在一起(不能有空格)
- 把后台設置的key值串接到“第二步”得到的字符串尾部(不能有空格)
- 采用MD5算法對“第三步”得到的字符串進行加密,生成Signature的值