天天看點

支付寶的同步和異步的差別

第一種了解

同步是給客戶看的,異步是伺服器處理請求。

同步是客戶充值或者支付成功了,給客戶一個提示,告訴客戶這個操作的結果是成功還是失敗。起到的作用就是提示客戶這個操作的結果是成功還是失敗。

異步是伺服器在後端處理支付成功或失敗時的業務邏輯。同步通知:用于使用者在支付寶頁面付款完畢後自動跳轉;

異步通知:其實是處理業務邏輯,比如說修改客戶的支付狀态;

同步得到通知後跳轉到自己的網址,然後根據參數告訴客戶支付結果,然後在更新狀态。

異步其實就是一個雙保險,如果同步沒有跳轉你的網址,可能是關機了,或者網速慢,無法完成資料更新的狀态,這時候異步就發揮作用了,先判斷是否支付,支付了就不必更新了,隻傳回支付寶 success 就行了,不然會一直異步通知

第二種了解

當一個支付請求被發送到支付管道方,支付管道會很快傳回一個結果。但是這個結果,隻是告訴你調用成功了,不是扣款成功,這叫同步調用。

很多新手會拿這個結果 當作支付成功了,那就會被坑死,結果就是支付成功率特别高,伴随着一堆無法解釋的壞賬率,測試人員尤其要注意測試資料的篡改:金額,同步傳回結果,訂單号等。

同步請求參數裡面會有一個回調位址,這個位址是支付管道在扣款成功後調用的,這叫異步調用。

一般同步接口僅檢查參數是否正确,簽名是否無誤等。異步接口才告訴你扣款結果。

一般異步接口有5秒以内的延遲。調用不成功會重試。有時候是這邊成功了,但支付管道側沒收到傳回,于是會繼續調。

當天的支付到第二天還在 被異步調用也都是正常的。這也是開發人員需要特别注意的地方,不要當做重複支付。

測試人員也要對重複回調進行測試,應隻有一次有效。這還不是最坑的,一般 支付管道側,隻有支付成功了才通知你。

要是支付失敗了,壓根兒都不告訴你。

另一方面,如何老收不到異步結果呢?那就得查查了。同步結果不可靠,異步調用不可靠,那怎麼确定支付結果?最終的殺招就是查單了,

反查,一般支付管道側都 會提供反查接口,定時擷取DB中待支付的訂單調用支付管道側的反查接口,最終把支付管道側扣款成功的訂單完成掉。