一張圖瞭解微信支付寶支付流程
轉自:https://www.cnblogs.com/yang-shuai/p/6516173.html
1、微信支付
以下是微信支付互動時序圖,統一下單API、支付結果通知API和查詢訂單API等都涉及簽名過程,
呼叫都必須在商戶伺服器端完成。如圖1所示。
圖1 APP支付時序圖
商戶系統和微信支付系統主要互動說明:
步驟1:使用者在商戶APP中選擇商品,提交訂單,選擇微信支付。
步驟2:商戶後臺收到使用者支付單,呼叫微信支付統一下單介面。
步驟3:統一下單介面返回正常的prepay_id,再按簽名規範重新生成簽名後,將資料傳輸給APP。參與簽名的欄位名為appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式為Sign=WXPay
步驟4:商戶APP調起微信支付。
步驟5:商戶後臺接收支付通知。
步驟6:商戶後臺查詢支付結果。
2、支付寶支付
以下是支付寶支付互動時序圖 ,如下圖圖2所示
圖2 APP支付時序圖
圖中虛線標識商戶鏈路,實線標識支付寶鏈路。
第4步:呼叫支付介面:此訊息就是本介面所描述的支付寶客戶端SDK提供的支付物件PayTask,將商戶簽名後的訂單資訊傳進payv2方法喚起支付寶收銀臺
第5步:支付請求:支付寶客戶端SDK將會按照商戶客戶端提供的請求引數傳送支付請求。
第8步:介面返回支付結果:商戶客戶端在第4步中呼叫的支付介面,會返回最終的支付結果(即同步通知)
第13步:使用者在支付寶APP或H5收銀臺完成支付後,會根據商戶在手機網站支付API中傳入的前臺回跳地址return_url自動跳轉回商戶頁面,同時在URL請求中附帶上支付結果引數。同時,支付寶還會根據原始支付API中傳入的非同步通知地址notify_url,通過POST請求的形式將支付結果作為引數通知到商戶系統
除了正向支付流程外,支付寶也提供交易查詢、關閉、退款、退款查詢以及對賬等配套API。
特別注意:
-
- 構造交易資料並簽名必須在商戶服務端完成,商戶的應用私鑰絕對不能儲存在商戶APP客戶端中,也不能從服務端下發。
- 同步返回的資料,只是一個簡單的結果通知,商戶確定該筆交易付款是否成功需要依賴服務端收到支付寶非同步通知的結果進行判斷。
- 商戶系統接收到通知以後,必須通過驗籤(驗證通知中的sign引數)來確保支付通知是由支付寶傳送的。建議使用支付寶提供的SDK來完成