一、主要思想
- 無需支付校驗,直接查詢支付結(jié)果
- 支付流程整體設(shè)計,兼容支付寶、微信的支付設(shè)計
二、關(guān)于支付校驗
支付校驗比較麻煩,而且好像大多數(shù)人的項目里也沒有支付校驗,這是為什么?
在支付寶支付中,我們調(diào)用SDK,得到支付寶服務(wù)端返回的支付結(jié)果后,需要和我們自己的服務(wù)端做一步支付校驗的工作:

但是這樣做很是麻煩,支付寶官方給文是這么說的:
"由于同步通知和異步通知都可以作為支付完成的憑證,且異步通知支付寶一定會確保發(fā)送給商戶服務(wù)端。為了簡化集成流程,商戶可以將同步結(jié)果僅僅作為一個支付結(jié)束的通知(忽略執(zhí)行校驗),實際支付是否成功,完全依賴服務(wù)端異步通知。"

也就是說為了簡化流程,這一步也是可以少滴,但是安全不安全,應(yīng)該沒什么大問題吧。
三、支付流程
1、流程
1、向自己的服務(wù)端發(fā)起支付請求,服務(wù)端將參數(shù)拼裝后返回客戶端;
2、客戶端調(diào)起支付寶支付SDK,SDK連接支付寶服務(wù)端發(fā)起支付;
3、收到SDK的支付回調(diào)后,客戶端開啟輪詢,向自己的服務(wù)端查詢支付結(jié)果。
4、如果自己的服務(wù)端早已收到支付寶服務(wù)端的支付異步通知則直接將結(jié)果返回給客戶端,如果沒收到,服務(wù)端去支付寶服務(wù)端查詢,然后將結(jié)果返回給客戶端。
2、注意
2.1 關(guān)于輪詢查詢支付結(jié)果
流程中的第3步提到“輪詢”查詢支付結(jié)果,為什么要輪詢查詢呢?是為了保證拿到支付結(jié)果,如果收到支付寶的支付回調(diào)后只查詢一次,如果接口失敗了,網(wǎng)絡(luò)不暢通等狀況發(fā)生,那當(dāng)前支付頁面要怎么處理呢,再次發(fā)起支付肯定會出bug。
輪詢查詢支付結(jié)果已經(jīng)是業(yè)界默認(rèn)的一種做法,一般情況支付結(jié)果基本上很快就能出來。
四、最后
支付寶是這樣,微信支付也是大同小異,這一套流程,整體上對于支付寶、微信、銀聯(lián)都是通用的。
如有問題,請指正。