支付系統 簡版設計

我的梳理若有不對 請及時指正 歡迎你們 編輯更新此文檔

系統目標

系統目標:

對接第三方支付系統 爲系統平臺提供統一的支付中間件.php

技術棧使用狀況:

Springboot + mybaties + redis + rocketMQ + mysql.mysql

支付系統設計原則和思路

總體設計中,有如下幾個原則redis

  • 統一,兼顧方便sql

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

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

  • 易拓展服務器

    • 支持拓展其餘支付方式接入以及將來本身實現支付功能微信

  • 支持,而不是決策app

    • 不替使用方應用決策,不摻雜使用方應用和其餘模塊業務邏輯處理 (必須傳遞消息時使用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

相關文章
相關標籤/搜索