支付寶支付、微信支付等都是第三方支付平臺。是現在最受歡迎、使用最普遍的移動支付方式。
官方示例圖
用戶在商戶App選擇支付寶支付方式,在App拼接字符串(商品iD、商品價格、商品名稱、商品描述等)發送到商家Server,返回簽名后訂單信息(signedOrderString)。拿到簽名后訂單信息(signedOrderString)在App調用集成在程序中支付寶SDK的支付接口,然后發送往支付寶Server支付請求,完成支付(6步)將結果返回到支付寶SDK(7步),支付寶SDK將支付結果返回給App,將支付結果展示給用戶。這個是比較簡單的。
為了更加安全,App拿到支付結果后,與商家Server 進行校驗結果,然后將支付結果展示給用戶。
特別注意:
1.構造交易數據并簽名必須在商戶服務端完成,商戶的應用私鑰絕對不能保存在商戶APP客戶端中,也不能從服務端下發。
2.同步返回的數據,只是一個簡單的結果通知,商戶確定該筆交易付款是否成功需要依賴服務端收到支付寶異步通知的結果進行判斷。
- 商戶系統接收到通知以后,必須通過驗簽(驗證通知中的sign參數)來確保支付通知是由支付寶發送的。建議使用支付寶提供的SDK來完成,詳細驗簽規則參考異步通知驗簽。
個人實際應用后的理解
1.APP組裝請求字符串發往商家后臺,返回簽名字符串
2.App調用支付寶支付接口,服務端會返回支付信息
3.支付寶服務端調用異步通知接口,根據返回信息處理自己的業務邏輯,比如記入本地臺賬,修改訂單狀態等
微信支付流程
微信支付流程圖
商戶系統和微信支付系統主要交互說明:
步驟1:用戶在商戶APP中選擇商品,提交訂單,選擇微信支付。
步驟2:商戶后臺收到用戶支付單,調用微信支付統一下單接口。參見【統一下單API】。
步驟3:統一下單接口返回正常的prepay_id,再按簽名規范重新生成簽名后,將數據傳輸給APP。參與簽名的字段名為appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式為Sign=WXPay
步驟4:商戶APP調起微信支付。api參見本章節【app端開發步驟說明】
步驟5:商戶后臺接收支付通知。api參見【支付結果通知API】
步驟6:商戶后臺查詢支付結果。,api參見【查詢訂單API】