支付系統 簡版設計


個人梳理如有不對 請及時指正 歡迎大家 編輯更新此文檔

系統目標

系統目標:

對接第三方支付系統 為系統平台提供統一的支付中間件.

技術棧使用情況:

Springboot + mybaties + redis + rocketMQ + mysql.

支付系統設計原則和思路

整體設計中,有以下幾個原則

  • 統一,兼顧方便

    • 首要是統一, 對各種應用提供統一使用入口,其次是方便,不需要額外的入侵即可使用支付功能

    • 接口的升級或改動需要兼容歷史版本

  • 易拓展

    • 支持拓展其他支付方式接入以及未來自己實現支付功能

  • 支持,而不是決策

    • 不替使用方應用決策,不摻雜使用方應用和其他模塊業務邏輯處理 (必須傳遞消息時使用MQ 解耦)

  • 少即是多, 側重成長性, 慎重修改API

    • 每添加一個字段(接口)都要謹慎, 加后無法再刪, 對擴展開放, 修改封閉

    • 同一個接口 不同的參數可以實現不同的功能 如 getPayInfo 帶 支付方式 需要去查第三方支付狀態

支付系統目前流程


支付系統主流程

這期間發生了什么?

准備工作: 賬單結算完成,調用生成支付信息接口.


第一步 : 客戶端點擊確認支付 —> 請求后台預支付接口(檢查訂單狀態 )

第二步: 根據后台返回狀態碼 做后續處理

第三步: 可以拉起支付時 —> 拉起支付讓用戶選擇支付方式 —> 請求支付接口(檢查訂單狀態,獲取SDK 需要的簽名 )

第四步: 后台返回正確的簽名 客戶端拉起第三方支付 SDK 界面

第五步: 用戶使用支付工具 成功付款

第六步: 客戶端顯示支持成功並查詢后台支付狀態(如果異步回調未到后台 主動查詢第三方並更新訂單支付信息)


那么處理階段到底做了什么呢?

這里在講下微信和支付寶 官網描述的支付流程

微信官網這樣說:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_3&index=5

第三步和第四步詳細講過程如下:

1.支付系統和微信后台交互生成訂單,微信后台給業務服務器一個預交易訂單號

2.支付系統給你的App預交易訂單號和簽名信息—> App去調起微信支付

3.App聽過微信SDK 調起微信App支付,微信App把預交易訂單號和訂單簽名信息給傳給 微信服務器

4.微信App接收微信服務器支付結果 , 微信App告知App支付支付結果,同時微信后台異步告知支付系統支付結果

整個故事情節大概是這樣的


支付寶官網這樣說:

梳理一下步驟:

1.支付系統做好訂單信息,安全簽名后發給App(支付系統負責RSA加密)

2.App拿着訂單信息和簽名,通過SDK調起支付寶App ,支付寶 app去請求支付寶服務器 完成支付(支付寶 App解密訂單信息,確認訂單安全)

3.支付寶App通知 客戶端的App支付完成;同時,支付寶后台服務異步通知支付系統后台支付完成)


整個流程涉及到你和支付寶雙方的App,雙方的后台服務器,故事情節大概可以這樣理解



奉上支付寶 開發者文檔: https://docs.open.alipay.com/api_1/alipay.trade.pay/



個人梳理如有不對 請及時指正 歡迎大家 編輯更新此文檔

PS. 支付返回狀態碼

狀態碼
msg
0 支付成功
411 訂單已支付
413 訂單已關閉
415 校驗訂單信息失敗(未到支付狀態/未查詢到訂單)
420 支付渠道錯誤
421 MQ廣播通知錯誤
999 操作失敗


參考鏈接: https://www.jianshu.com/p/1f48b544660e


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM