第一種了解
同步是給客戶看的,異步是伺服器處理請求。
同步是客戶充值或者支付成功了,給客戶一個提示,告訴客戶這個操作的結果是成功還是失敗。起到的作用就是提示客戶這個操作的結果是成功還是失敗。
異步是伺服器在後端處理支付成功或失敗時的業務邏輯。同步通知:用于使用者在支付寶頁面付款完畢後自動跳轉;
異步通知:其實是處理業務邏輯,比如說修改客戶的支付狀态;
同步得到通知後跳轉到自己的網址,然後根據參數告訴客戶支付結果,然後在更新狀态。
異步其實就是一個雙保險,如果同步沒有跳轉你的網址,可能是關機了,或者網速慢,無法完成資料更新的狀态,這時候異步就發揮作用了,先判斷是否支付,支付了就不必更新了,隻傳回支付寶 success 就行了,不然會一直異步通知
第二種了解
當一個支付請求被發送到支付管道方,支付管道會很快傳回一個結果。但是這個結果,隻是告訴你調用成功了,不是扣款成功,這叫同步調用。
很多新手會拿這個結果 當作支付成功了,那就會被坑死,結果就是支付成功率特别高,伴随着一堆無法解釋的壞賬率,測試人員尤其要注意測試資料的篡改:金額,同步傳回結果,訂單号等。
同步請求參數裡面會有一個回調位址,這個位址是支付管道在扣款成功後調用的,這叫異步調用。
一般同步接口僅檢查參數是否正确,簽名是否無誤等。異步接口才告訴你扣款結果。
一般異步接口有5秒以内的延遲。調用不成功會重試。有時候是這邊成功了,但支付管道側沒收到傳回,于是會繼續調。
當天的支付到第二天還在 被異步調用也都是正常的。這也是開發人員需要特别注意的地方,不要當做重複支付。
測試人員也要對重複回調進行測試,應隻有一次有效。這還不是最坑的,一般 支付管道側,隻有支付成功了才通知你。
要是支付失敗了,壓根兒都不告訴你。
另一方面,如何老收不到異步結果呢?那就得查查了。同步結果不可靠,異步調用不可靠,那怎麼确定支付結果?最終的殺招就是查單了,
反查,一般支付管道側都 會提供反查接口,定時擷取DB中待支付的訂單調用支付管道側的反查接口,最終把支付管道側扣款成功的訂單完成掉。