當一個支付請求被發送到支付渠道方,支付渠道會很快返回一個結果。但是這個結果,只是告訴你調用成功了,不是扣款成功,這叫同步調用。很多新手會拿這個結果當做支付成功了,那就會被坑死,結果就是支付成功率特別高,伴隨着一連串無法解釋的壞賬率。測試人員尤其要關注測試數據的篡改:金額,同步返回結果,訂單號等。
同步請求參數里會有個回調地址,這個地址是支付渠道在扣款成功后調用的,這叫異步調用。一般同步接口僅檢查參數是否正常,簽名是否有誤等。異步接口才告訴你支付結果。一般異步接口有5s以內的延遲,調用不成功會重試。有時候是這邊成功了,但支付渠道則沒收到返回,於是會繼續調用。當天的支付第二天還在被異步調用的也是正常的。這也是開發人員需要注意的地方,不要當做重復支付。測試人員也需要對重復回調進行測試,應該只有一次有效。這還不是最坑的,一般支付渠道側,只有支付成功了才告訴你,要是支付失敗了,壓根不通知你。
另外一方面,要是老收不到支付結果呢,這就需要查查后台日志。同步結果不可靠,異步調用不可靠,那怎么確定支付結果?最終的殺單是查單了,反查,一般支付渠道側都會提供反查接口,定時獲取DB中的待支付的訂單調用支付渠道側的反查接口,最終把支付渠道側扣款成功的訂單完成掉。