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來完成