同步接口:
異步接口:

同步和異步的概念對於很多人來說是一個模糊的概念,是一種似乎只能意會不能言傳的東西。其實我們的生活中存在着很多同步異步的例子。比如:你叫我去吃飯,我聽到了就立刻和你去吃飯,如
果我們有聽到,你就會一直叫我,直到我聽見和你一起去吃飯,這個過程叫同步;異步過程指你叫我去吃飯,然后你就去吃飯了,而不管我是否和你一起去吃飯。而我得到消息后可能立即就走,也
可能過段時間再走。如果我請你吃飯,就是同步,如果你請我吃飯就用異步,這樣你比較省錢。哈哈哈。。。
同步交互:指發送一個請求,需要等待返回,然后才能夠發送下一個請求,有個等待過程;
異步交互:指發送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待。
區別:一個需要等待,一個不需要等待,在部分情況下,我們的項目開發中都會優先選擇不需要等待的異步交互方式。
同步處理和異步處理
1) 同步接口:發起一個接口請求必須要等到響應結果才能發起下一個接口請求。
2) 異步接口:發起一個接口請求不需要等到響應結果就能發起下一個接口請求。
1、定義
同步調用:當一個支付請求被發送到支付渠道方,支付渠道會很快返回一個結果。但是這個結果,只是告訴你調用成功了,不是扣款成功,這叫同步調用
異步調用:同步請求參數里面會有一個回調地址,這個地址是支付渠道在扣款成功后調用的,這叫異步調用
2、支付異步接口
當一個支付請求被發送到支付渠道方,支付渠道會很快返回一個結果。但是這個結果,只是告訴你調用成功了,不是扣款成功,這叫同步調用。很多新手會拿這個結果當作支付成功了,那就會被坑
死,結果就是支付成功率特別高,伴隨着一堆無法解釋的壞賬率,測試人員尤其要注意測試數據的篡改:金額,同步返回結果,訂單號等。
同步請求參數里面會有一個回調地址,這個地址是支付渠道在扣款成功后調用的,這叫異步調用。一般同步接口僅檢查參數是否正確,簽名是否無誤等。異步接口才告訴你扣款結果。一般異步接口
有5秒以內的延遲。調用不成功會重試。有時候是這邊成功了,但支付渠道側沒收到返回,於是會繼續調。當天的支付到第二天還在被異步調用也都是正常的。這也是開發人員需要特別注意的地方,
不要當做重復支付。測試人員也要對重復回調進行測試,應只有一次有效。這還不是最坑的,一般支付渠道側,只有支付成功了才通知你。要是支付失敗了,壓根兒都不告訴你。 另一方面,如何老
收不到異步結果呢?那就得查查了。同步結果不可靠,異步調用不可靠,那怎么確定支付結果?最終的殺招就是查單了,反查,一般支付渠道側都會提供反查接口,定時獲取DB中待支付的訂單調用
支付渠道側的反查接口,最終把支付渠道側扣款成功的訂單完成掉。
3、理解
"同步" 就好比:你去外地上學(人生地不熟),突然生活費不夠了;此時你決定打電話回家,通知家里轉生活費過來,可是當你撥出電話時,對方一直處於待接聽狀態(即:打不通,聯系不上),為了拿
到生活費,你就不停的 oncall 、等待,最終可能不能及時要到生活費,導致你今天要做的事都沒有完成,而白白花掉了時間。
"異步" 就是:在你打完電話發現沒人接聽時,猜想:對方可能在忙,暫時無法接聽電話,所以你發了一條短信(或者語音留言,亦或是其他的方式)通知對方后便忙其他要緊的事了;這時你就不需要持
續不斷的撥打電話,還可以做其他事情;待一定時間后,對方看到你的留言便回復響應你,當然對方可能轉錢也可能不轉錢。但是整個一天下來,你還做了很多事情。 或者說你找室友臨時借了一筆
錢,又開始 happy 的上學時光了。
簡而言之,言而總之: 同步就是我強依賴你(對方),我必須等到你的回復,才能做出下一步響應。即我的操作(行程)是順序執行的,中間少了哪一步都不可以,或者說中間哪一步出錯都不可以,類似
於編程中程序被解釋器順序執行一樣;同時如果我沒有收到你的回復,我就一直處於等待、也就是阻塞的狀態。 異步則相反,我並不強依賴你,我對你響應的時間也不敏感,無論你返回還是不返回
,我都能繼續運行;你響應並返回了,我就繼續做之前的事情,你沒有響應,我就做其他的事情。也就是說我不存在等待對方的概念,我就是非阻塞的。