国产精品久久久久久久9999_美女毛片在线观看_女同学裸开双乳让男生吃网站_aaaa级毛片欧美的_free厨房18sex性hd_亚洲va国产2019_偷窥美女洗澡网站_少妇最想男人用口添_啊灬啊灬啊灬快灬喷水在线观看_天堂8资源8地址8

微信掃碼
在線客服
意見反饋
熱線電話
返回頂部

15854960619

異步處理在支付環(huán)節(jié)的應(yīng)用

分享到:
點(diǎn)擊次數(shù):1452 更新時(shí)間:2020年07月27日10:50:16 打印此頁 關(guān)閉

第三方支付平臺(tái)在處理支付環(huán)節(jié)時(shí),一般采用異步回調(diào)的方式將支付結(jié)果及用戶信息通過數(shù)據(jù)流的形式發(fā)送給商戶,商戶需要接收處理,并按文檔規(guī)范返回應(yīng)答。

一、什么是同步處理、異步處理?

同步和異步是開發(fā)技術(shù)中兩個(gè)概念:

同步:

指消息請(qǐng)求方發(fā)出請(qǐng)求后,必須要等待消息接收方返回結(jié)果,才能執(zhí)行下一個(gè)任務(wù)。

這種情況下,消息請(qǐng)求方會(huì)說:兄弟,你現(xiàn)在就處理我的請(qǐng)求,

異步:

指“消息請(qǐng)求方”發(fā)出請(qǐng)求后,“消息接收方”并不立即準(zhǔn)備處理,而告知消息受理結(jié)果。“消息請(qǐng)求方”不需要等待“消息接收方”返回處理結(jié)果,隨時(shí)可以觸發(fā)下一個(gè)請(qǐng)求,去執(zhí)行其他程序。

這種情況下,“消息接收方”會(huì)說:兄弟,你的請(qǐng)求我收到了,我會(huì)處理的,你該干嘛就干嘛去,等我回復(fù)就可以了。

二、關(guān)于異步處理在支付環(huán)節(jié)的應(yīng)用

第三方支付機(jī)構(gòu)在處理電商平臺(tái)提交上來的支付請(qǐng)求時(shí),一般都是采用異步處理的方式,在其接口文檔上都會(huì)說明支付結(jié)果以異步通知為準(zhǔn)。

下面我們先通過一張系統(tǒng)交互圖來了解第三方支付平臺(tái)在處理支付環(huán)節(jié)時(shí)的一般處理流程。當(dāng)你在某個(gè)電商APP購物并支付訂單時(shí),若該電商APP對(duì)接的第三方支付平臺(tái)是微信,那么整個(gè)流程大致如下圖:

異步處理在支付環(huán)節(jié)的應(yīng)用

支付時(shí)序交互圖

上圖是在微信支付時(shí)序圖的基礎(chǔ)上繪制出來的,主要補(bǔ)充了網(wǎng)聯(lián)/銀聯(lián)清算機(jī)構(gòu)以及合作銀行的系統(tǒng)交互流程,便于大家了解整個(gè)支付環(huán)節(jié)。

主要交互說明如下:

步驟一:用戶在商戶APP中選擇商品并提交訂單。

步驟二:用戶選擇微信支付并開始支付訂單。

步驟三:商戶后臺(tái)調(diào)用微信支付統(tǒng)一下單支付接口,生成支付訂單推送給微信支付。

步驟四:商戶APP調(diào)起微信支付。

步驟五:用戶輸入密碼完成驗(yàn)證,微信支付同步返回支付受理成功,但是最終支付結(jié)果仍然要以異步通知為準(zhǔn)。

步驟六:微信支付發(fā)送扣款請(qǐng)求給網(wǎng)聯(lián),網(wǎng)聯(lián)轉(zhuǎn)接給發(fā)卡行。

步驟七:發(fā)卡行完成扣款,反饋成功消息給網(wǎng)聯(lián),網(wǎng)聯(lián)再通知微信支付。

步驟八:微信支付異步通知商戶支付成功,商戶后臺(tái)也可以主動(dòng)查詢支付結(jié)果。

注:以上流程是假設(shè)電商平臺(tái)直接對(duì)接微信支付,如果是電商平臺(tái)接入的是其他第三方支付平臺(tái)(該平臺(tái)聚合了微信支付方式)或者第四方聚合支付平臺(tái),那么在中間的系統(tǒng)交互則會(huì)多了一個(gè)環(huán)節(jié)。

三、支付系統(tǒng)為什么要使用“異步通知”?

1. 受上游渠道的影響

從支付交互時(shí)序圖可以看出,在商戶端提交支付訂單后,支付結(jié)果的返回需要經(jīng)過各合作銀行-網(wǎng)聯(lián)-第三方支付平臺(tái),最終才能到達(dá)商戶端后臺(tái)。當(dāng)上游渠道無法保證系統(tǒng)的及時(shí)性與穩(wěn)定性時(shí),采用異步通知機(jī)制就顯得尤為重要。

2. 同步通知的弊端

試想一下,如果采用同步通知機(jī)制,在上游渠道質(zhì)量較差的情況下,或自身系統(tǒng)存在問題,支付機(jī)構(gòu)短時(shí)間內(nèi)獲取不到交易終態(tài),若強(qiáng)行要求同步返回交易終態(tài),進(jìn)程會(huì)一直掛在這里,非常耗費(fèi)系統(tǒng)資源,得不償失。

3. 其他原因

有時(shí)候因?yàn)樯虘舳说木W(wǎng)絡(luò)異常、延遲、用戶的異常操作,比如關(guān)閉了瀏覽器、app等,導(dǎo)致無法及時(shí)接收同步通知,這時(shí)候就非常需要異步通知了。

像微信這樣的支付機(jī)構(gòu),一方面能夠接入優(yōu)質(zhì)的上游渠道,另一方面自身的技術(shù)能力也很強(qiáng)大,所以往往能夠在短時(shí)間內(nèi)做到同步返回支付結(jié)果。

但是也無法百分百擔(dān)保,所以微信支付最終還是以異步通知的結(jié)果為準(zhǔn)。

其他第三方支付機(jī)構(gòu),就更加無法保證能夠同步返回支付結(jié)果了。

所以更通用的做法是同步返回“交易已受理”狀態(tài),代表支付機(jī)構(gòu)已受理這筆交易,最終交易狀態(tài)依賴支付機(jī)構(gòu)的查詢接口或回調(diào)通知獲取。

當(dāng)然,第三方支付機(jī)構(gòu)除了異步通知外,還會(huì)支持商戶端做主動(dòng)查詢,即商戶端通過查詢接口,調(diào)用某筆交易的支付結(jié)果,然后扭轉(zhuǎn)訂單狀態(tài)。

這算是異步通知的一個(gè)補(bǔ)償機(jī)制,有時(shí)候因?yàn)樯虘舳司W(wǎng)絡(luò)延遲的問題、或者第三方支付機(jī)構(gòu)系統(tǒng)的問題,導(dǎo)致異步通知失敗,由于第三支付機(jī)構(gòu)的異步通知頻率會(huì)逐漸增大,所以有可能商戶端會(huì)遲遲接收不到通知,這時(shí)候如果能夠提早做主動(dòng)查詢,能夠有效提高用戶體驗(yàn)。

四、異步處理方式在支付環(huán)節(jié)可能產(chǎn)生的問題?

1. 重復(fù)支付問題

當(dāng)用戶支付成功后,若當(dāng)中出現(xiàn)了網(wǎng)絡(luò)延遲,導(dǎo)致第三方支付機(jī)構(gòu)回調(diào)支付結(jié)果延遲。雖然用戶的銀行卡已經(jīng)扣款了,但是由于電商平臺(tái)沒有接收到第三方支付機(jī)構(gòu)的交易成功結(jié)果,導(dǎo)致訂單還是處于未支付狀態(tài)。用戶誤以為沒有支付成功,再次進(jìn)行支付,導(dǎo)致重復(fù)支付問題的發(fā)生。(在這種情況下,如果用戶覺得自己沒有支付成功,不排除用戶會(huì)主動(dòng)取消訂單,或者系統(tǒng)超時(shí)取消訂單,影響還是很大的。)

2. 交易掉單問題

這主要是本地未正確接收到渠道下發(fā)的異步通知導(dǎo)致。即一筆交易,用戶實(shí)際上已經(jīng)完成了支付,銀行也扣款了,但是由于支付機(jī)構(gòu)的問題,異步通知失敗,導(dǎo)致該筆交易在第三方支付機(jī)構(gòu)已經(jīng)是交易成功,但是訂單在電商平臺(tái)仍然是未支付。

五、如何通過產(chǎn)品設(shè)計(jì)避免上述問題的發(fā)生?

方法一:交互方式的優(yōu)化

這種方法更多的是針對(duì)網(wǎng)頁端,在收銀臺(tái)中選擇對(duì)應(yīng)的渠道并開始支付后,有的電商平臺(tái)會(huì)選擇打開一個(gè)新網(wǎng)頁界面,而原有的界面則會(huì)顯示一個(gè)彈窗,引導(dǎo)用戶在新打開的界面中進(jìn)行支付。具體交互如下:

異步處理在支付環(huán)節(jié)的應(yīng)用

首先,在調(diào)用支付接口之前(例如用戶在訂單列表點(diǎn)擊付款按鈕或者進(jìn)入收銀臺(tái)選擇支付渠道后點(diǎn)擊支付按鈕),系統(tǒng)需要先確認(rèn)該訂單的支付狀態(tài),可以調(diào)用主動(dòng)查詢接口確認(rèn)訂單是否已經(jīng)完成支付,若未完成支付,才允許進(jìn)行支付,避免商戶端重復(fù)提交支付訂單給到第三方。不管是電商平臺(tái)網(wǎng)頁端或者是移動(dòng)端,這樣的一個(gè)校驗(yàn)動(dòng)作都是不可缺少的。

然后,當(dāng)用戶在收銀臺(tái)點(diǎn)擊“立即支付”按鈕,若打開了新的網(wǎng)頁界面,則原有界面顯示付款提示彈窗,當(dāng)用戶點(diǎn)擊“已完成付款”時(shí),系統(tǒng)會(huì)再去第三方支付平臺(tái)查詢支付結(jié)果,如果支付成功,隱藏掉這個(gè)彈窗,展示支付成功界面。如果未查詢到支付成功結(jié)果,則可以提示未檢測到支付信息,然后關(guān)閉此彈窗或者可以返回訂單詳情頁。

當(dāng)然,有些電商平臺(tái)也會(huì)采用在收銀臺(tái)點(diǎn)擊支付時(shí),直接刷新當(dāng)前界面,進(jìn)入付款界面,這樣在一定程度上也是能夠避免用戶重復(fù)支付的問題。

下面列舉幾個(gè)案例:

異步處理在支付環(huán)節(jié)的應(yīng)用

當(dāng)當(dāng)收銀臺(tái)

在當(dāng)當(dāng)收銀臺(tái)中,當(dāng)使用網(wǎng)銀支付時(shí),會(huì)打開新的網(wǎng)頁界面進(jìn)入銀行網(wǎng)關(guān)界面,同時(shí)原有收銀臺(tái)會(huì)顯示一個(gè)支付提示彈窗。

異步處理在支付環(huán)節(jié)的應(yīng)用

騰訊云

在騰訊云中,在訂單界面點(diǎn)擊立即支付可以進(jìn)入收銀臺(tái),當(dāng)使用網(wǎng)銀支付方式打開新的網(wǎng)頁界面時(shí),原有訂單界面也會(huì)顯示一個(gè)支付提示彈窗。

方法二:自動(dòng)補(bǔ)單機(jī)制

電商平臺(tái)未收到第三方支付平臺(tái)的通知,可以是由于網(wǎng)絡(luò)問題,或者其他異常掉單。

這時(shí)候我們可以利用第三方支付平臺(tái)提供的查詢接口,主動(dòng)到第三方平臺(tái)輪詢?cè)撚唵蔚闹Ц稜顟B(tài)(要考慮系統(tǒng)性能,這個(gè)跟開發(fā)兄弟做好溝通即可),通過這種機(jī)制,在一定程度也是可以避免重復(fù)支付的問題。

當(dāng)然,以上方案并不能百分百避免重復(fù)支付的問題,最根本的還是在于上游渠道返回支付信息的及時(shí)性。

當(dāng)真的出現(xiàn)用戶重復(fù)支付的問題時(shí),就要通過后續(xù)的對(duì)賬,查出該筆訂單下面的多筆支付記錄(財(cái)務(wù)上稱為長款),然后走人工或者自動(dòng)的退款流程了。關(guān)于跟第三方支付平臺(tái)的對(duì)賬跟差錯(cuò)處理,后面有機(jī)會(huì)再跟大家分享。

說明:文章轉(zhuǎn)載于網(wǎng)絡(luò) 如有侵權(quán)請(qǐng)聯(lián)系刪除

上一條:干貨丨互聯(lián)網(wǎng)行業(yè)究竟是干什么的? 下一條:數(shù)字人民幣牛在哪?不用網(wǎng)絡(luò)也可以支付