當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]來自:程序通事 前言 最近由于業(yè)務(wù)需求,需要開發(fā)付款碼功能,該接口底層將會(huì)聚合市面上主流錢包 APP 的付款碼功能,如微信支付,支付寶支付。 ps:付款碼支付別稱有很多,如微信支付端支付產(chǎn)品為付款碼支付(之前的文檔叫做刷卡支付),而支付寶端產(chǎn)品為當(dāng)面付

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

來自:程序通事

前言

最近由于業(yè)務(wù)需求,需要開發(fā)付款碼功能,該接口底層將會(huì)聚合市面上主流錢包 APP 的付款碼功能,如微信支付,支付寶支付。

ps:付款碼支付別稱有很多,如微信支付端支付產(chǎn)品為付款碼支付(之前的文檔叫做刷卡支付),而支付寶端產(chǎn)品為當(dāng)面付-條支付,而有些文檔會(huì)成為二維碼被掃支付。

下文統(tǒng)一使用微信的定義方式,統(tǒng)稱為付款碼支付。

可能有些同學(xué)對(duì)于付款碼支付這個(gè)聽起來很陌生,其實(shí)這個(gè)功能我們可能每天都在被使用。

像我們?cè)诒憷曩I個(gè)早飯,最后結(jié)賬時(shí),使用支付寶/微信支付付款。收銀員會(huì)讓我們展示支付寶/微信付款碼,然后使用掃碼槍獲取此碼,最后上送給微信/支付寶服務(wù)端完成一次扣款。

以支付寶為例,具體用戶端支付流程如下:

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?
來源自支付寶官網(wǎng)

付款碼支付后臺(tái)調(diào)用流程如下:

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

付款碼支付詳細(xì)版流程

微信/支付寶付款碼支付調(diào)用流程大同小異,官網(wǎng)寫的都比較清楚,這里直接用支付寶的官網(wǎng)的流程。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

從上面的流程可以看到,付款碼支付可以說是一個(gè)同步的接口,即接口同步返回扣款結(jié)果,無需通過另外異步通知獲取結(jié)果。

不過這里我們需要注意,由于涉及安全風(fēng)控等問題,付款碼支付過程用戶端可能需要輸入密碼確認(rèn)支付,此時(shí)付款碼接口將會(huì)返回等待用戶支付。

接入時(shí)務(wù)必正確判斷返回信息,若返回以下結(jié)果,代表此時(shí)用戶正在輸入密碼。

  • 微信支付: err_code=USERPAYING 或 err_code=SYSTEMERROR
  • 支付寶: code=10003 或 code=20000

微信付款碼支付在以下情況需要輸入密碼二次確認(rèn)。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

支付寶官方文檔暫未找到相關(guān)規(guī)則,經(jīng)過測(cè)試當(dāng)支付金額大于 2000 ,需要輸入密碼。如果有熟悉其他驗(yàn)密規(guī)則的同學(xué),可以在評(píng)論區(qū)留言一下。

另外一點(diǎn)需要注意的是,微信/支付寶其他支付接口,支付成功之后,微信/支付寶服務(wù)端將會(huì)發(fā)送消息通知支付結(jié)果。但是付款碼不一樣,該接口是不會(huì)有消息通知。

所以如果付款碼支付若返回等待用戶輸入密碼,商家后臺(tái)服務(wù)必須定時(shí)調(diào)用調(diào)用微信支付/支付寶查詢接口,獲取支付結(jié)果。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

撤銷支付

如果在一段時(shí)間內(nèi)比如 30s,輪詢查詢支付結(jié)果返回都是等待用戶支付,或者支付交易過程返回失敗或支付系統(tǒng)超時(shí),這兩種情況官方文檔都是建議立刻調(diào)用撤銷接口撤銷交易。

如果此訂單用戶支付失敗,撤銷接口將會(huì)訂單關(guān)閉;如果用戶支付成功,撤銷接口將會(huì)訂單資金退還給用戶。

也就是說撤銷支付接口功能上等同與關(guān)閉訂單加上退款。雖然撤銷也具有退款功能,但是兩者存在比較大的區(qū)別:

支付類型限制

微信/支付寶撤銷支付僅能撤銷付款碼支付類型的訂單,而退款可以支持多種支付類型的訂單。

退款金額

撤銷接口只能是全額退款,而退款接口支持傳入金額,可以全額退款,也可以部分退款。

時(shí)間限制

撤銷接口時(shí)間限制比較短,比如微信支付撤銷支持 7 天內(nèi)的訂單,而支付寶撤銷接口僅支持當(dāng)天的訂單。

但是退款接口可以支持較長(zhǎng)時(shí)間訂單退款,比如微信支付退款支持一年內(nèi)的訂單,而支付寶僅支持 3 個(gè)月內(nèi)訂單。

基于以上區(qū)別,其他正常支付的單如需實(shí)現(xiàn)相同功能請(qǐng)調(diào)用退款接口,官方文檔建議僅在異常的情況下才建議調(diào)用撤銷支付接口。

另外再說一點(diǎn),有些地方這個(gè)功能接口稱為沖正接口,如下面工商二維碼支付。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

實(shí)際上提供的功能與微信/支付寶撤銷類似,這里需要各家支付公司提供文檔具體研究。

撤銷支付相關(guān)問題

由于撤銷支付,可能導(dǎo)致退款,也可能關(guān)閉訂單,接入之前一直有些問題弄不清楚,在官方文檔處也沒有查詢到任何資料,沒辦法只好實(shí)測(cè)驗(yàn)證相關(guān)問題。

由于規(guī)定,支付機(jī)構(gòu)不能直連微信/支付寶,所以以下測(cè)試基于銀聯(lián)微信/支付寶通道。

銀聯(lián)提供的接口與直連微信/支付寶存在些許差別,但是主要功能一樣。

重復(fù)撤銷

通過實(shí)測(cè),微信/支付寶撤銷接口冪等實(shí)現(xiàn),重復(fù)撤銷返回結(jié)果一致。

不過需要注意需要正確判斷撤銷的返回結(jié)果。

比如微信撤銷接口成功判斷還需要結(jié)合 recall 字段,支付寶也有類似字段。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

訂單狀態(tài)

微信/支付寶訂單狀態(tài)處理不太一致,微信訂單狀態(tài)比較復(fù)雜:

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?
微信支付訂單狀態(tài)機(jī)

也就是說,付款碼訂單一旦被撤銷成功,再次查詢訂單,狀態(tài)將會(huì)返回為已撤銷(REVOKED)。

另外微信對(duì)于付款碼支付訂單有限制,是無法調(diào)用關(guān)閉訂單接口關(guān)閉訂單,所以在付款碼的場(chǎng)景中,是不存在訂單狀態(tài)為 CLOSED—已關(guān)閉。

接下來說下支付寶的狀態(tài),支付寶文檔沒要給出類似的訂單狀態(tài)機(jī),我根據(jù)官方一些文檔,以及一些測(cè)試結(jié)果總結(jié)出下方訂單狀態(tài)圖。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

所以支付寶的付款碼訂單一旦撤銷成功,再次查詢?cè)瓎螤顟B(tài)將會(huì)返回 TRADE_CLOSED。

對(duì)賬文件數(shù)據(jù)

當(dāng)天產(chǎn)生交易之后,次日我們需要拉取微信/支付寶對(duì)賬文件,逐一核對(duì)數(shù)據(jù),防止少賬,多賬問題。

對(duì)賬設(shè)計(jì)流程可以參考之前寫過的文章:

聊聊對(duì)賬系統(tǒng)的設(shè)計(jì)方案

微信/支付寶對(duì)賬文件只會(huì)記錄交易成功的訂單,所以未支付的訂單被撤銷是不會(huì)出現(xiàn)在對(duì)賬文件中。但是如果支付成功了,然后又被撤銷成功,將會(huì)在對(duì)賬文件中產(chǎn)生兩筆記錄,一筆正交易,一筆反向退款記錄。

正交易與普通的退款的記錄都比較好識(shí)別,一般可以使用我們上送給微信支付寶訂單號(hào)。但是撤銷導(dǎo)致退款記錄,我們無法僅用一個(gè)單號(hào)識(shí)別,我們需要結(jié)合另外的字段區(qū)分判斷。

微信對(duì)賬文件撤銷產(chǎn)生那筆退款,交易狀態(tài)為 REVOKED,所以我們可以采用商戶訂單號(hào)加交易狀態(tài)識(shí)別出一條記錄是否為撤銷產(chǎn)生退款記錄。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

上面銀聯(lián)訂單號(hào)可以當(dāng)做是微信支付寶內(nèi)部產(chǎn)生訂單號(hào)

支付寶對(duì)賬文件比較麻煩,撤銷產(chǎn)生的退款記錄不能跟微信根據(jù)交易狀態(tài)區(qū)分。從對(duì)賬文件上看支付寶撤銷產(chǎn)生退款與普通退款接口產(chǎn)生退款記錄是一樣的。

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

仔細(xì)研究對(duì)賬文件可以發(fā)現(xiàn)一些區(qū)別,撤銷導(dǎo)致退款記錄退款批次與正交易支付寶內(nèi)部訂單號(hào)是一致的。而正常退款記錄,退款批次號(hào)是由商戶自己上送的。所以我們可以以此篩選出撤銷產(chǎn)生的退款記錄。

撤銷失敗

極端情況下,有可能產(chǎn)生多次撤銷都失敗的奇葩情況,那怎么辦?

這種情況下就不用往系統(tǒng)自動(dòng)處理方向考慮了,通過線下人工介入處理吧,畢竟這種概率太低了。

引用知乎 @天順 的文章中一句話:

很多時(shí)候人工保障比你動(dòng)腦筋想異常中的異常如何系統(tǒng)自動(dòng)處理來得反而高效和低成本

這句話大家仔細(xì)品,越品越有道理!

特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

長(zhǎng)按訂閱更多精彩▼

輕輕一掃,立刻扣款,付款碼背后的原理你不想知道嗎?

如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉