平常我們?cè)谫?gòu)物付款時(shí)勒奇,使用手機(jī)中的微信或支付寶掃一掃即可完成支付,無(wú)需像以前攜帶現(xiàn)金等著商戶找零錢巧骚。線下掃碼支付大大的提高了我們付款的效率赊颠,今天就主要談一談掃碼支付的實(shí)現(xiàn)流程毛嫉,讓我們享受快捷的同時(shí)爸舒,也了解其中的原理。
二維碼——信息的載體
說(shuō)起掃碼支付晌姚,就不得不提二維碼沧奴。線下所有的掃碼支付都是以掃二維碼開(kāi)始痘括,通過(guò)掃描二維碼,我們可以看到付款頁(yè)面商家的名稱滔吠,所以二維碼在這里承擔(dān)的角色是——信息的載體纲菌,它通過(guò)黑白相間的排列組合記錄信息。不止是支付疮绷,我們看到很多APP的下載鏈接翰舌,也是用二維碼的形式記錄鏈接地址。現(xiàn)在網(wǎng)上有很多現(xiàn)成的工具冬骚,輸入一段內(nèi)容后椅贱,即可把內(nèi)容生成二維碼,所以生成二維碼這一步的實(shí)現(xiàn)流程不存在技術(shù)難題只冻。
選擇二維碼作為付款信息的載體庇麦,一方面是受收銀臺(tái)掃描商品一維碼來(lái)識(shí)別商品,這一場(chǎng)景的啟發(fā)喜德,另一方面是二維碼本身可存儲(chǔ)足夠大的數(shù)據(jù)信息山橄,而且支持不同的數(shù)據(jù)格式,同時(shí)二維碼有一定的容錯(cuò)性住诸,部分損壞后仍可正常讀取驾胆。這一切涣澡,使得二維碼成為了被大眾廣泛使用的信息載體。
二維碼識(shí)別——APP校驗(yàn)及后臺(tái)解析
二維碼攜帶的信息丧诺,我們無(wú)法通過(guò)肉眼識(shí)別入桂,不同的支付機(jī)構(gòu)在二維碼中注入的信息規(guī)則不一致,需要對(duì)應(yīng)的服務(wù)器根據(jù)其編碼規(guī)則解析驳阎。我們每次使用掃一掃識(shí)別二維碼后抗愁,都會(huì)提示“正在處理中”,意味著后臺(tái)服務(wù)器正在解析這個(gè)二維碼的內(nèi)容呵晚,比如核對(duì)二維碼攜帶的鏈接地址是否合法(像微信解析出是支付寶的鏈接會(huì)屏蔽)蜘腌、是屬于支付鏈接還是屬于外鏈網(wǎng)址等。
校驗(yàn)的規(guī)則很多饵隙,就支付鏈接來(lái)說(shuō)撮珠,服務(wù)器校驗(yàn)屬于自己公司的支付鏈接后,會(huì)獲取支付鏈接中包含的商戶信息金矛,進(jìn)而判斷該商戶是否存在芯急、商戶狀態(tài)是否正常等,所有校驗(yàn)通過(guò)后驶俊,后臺(tái)服務(wù)器會(huì)把商戶名稱返回到發(fā)起用戶的手機(jī)APP上娶耍,同時(shí)告訴APP,服務(wù)器校驗(yàn)通過(guò)了饼酿,APP你可以調(diào)起收銀臺(tái)了榕酒。
于是我們確定支付,輸入支付密碼故俐,后臺(tái)繼續(xù)校驗(yàn)支付密碼的正確性想鹰,正確的話支付就此完成。
掃碼支付流程的關(guān)鍵步驟
從這個(gè)過(guò)程來(lái)看药版,要實(shí)現(xiàn)掃碼支付的流程杖挣,最關(guān)鍵的是要定義允許識(shí)別哪些類型的二維碼以及后臺(tái)的校驗(yàn)邏輯。
定義允許識(shí)別哪些類型的二維碼刚陡。也就是說(shuō),當(dāng)APP掃一掃株汉,如果產(chǎn)品經(jīng)理定義筐乳,發(fā)現(xiàn)二維碼攜帶的信息是別家的網(wǎng)址“https://www.tina.com”,就在我們APP這邊進(jìn)行過(guò)濾乔妈,比如只要不是以“https://www.wx.com”開(kāi)頭的蝙云,不去請(qǐng)求服務(wù)器。所以路召,有些時(shí)候勃刨,明明是網(wǎng)址波材,但是解析后你看到的是一串純文本。
比如定義支付鏈接的格式為“https//qr.wx.com……”,每次檢測(cè)到該鏈接開(kāi)頭的身隐,就請(qǐng)求服務(wù)器去校驗(yàn)該支付鏈接的有效性廷区。
此外,還需要定義平臺(tái)自有的解析規(guī)則贾铝,如微信識(shí)別為付款碼是以13開(kāi)頭隙轻,微信檢測(cè)到數(shù)字內(nèi)容是以13開(kāi)頭的,會(huì)先去匹配其是否符合付款碼的規(guī)則垢揩,符合的話才會(huì)進(jìn)行后續(xù)的解析玖绿,如下圖所示:
以上說(shuō)的是主掃,也就是用戶掃商家叁巨;對(duì)于商家掃用戶斑匪,原理是一樣的,只不過(guò)用戶的付款碼中包含的是識(shí)別該用戶的專屬ID锋勺,商家通過(guò)收銀系統(tǒng)向微信或支付寶提交訂單時(shí)蚀瘸,把掃碼槍識(shí)別出來(lái)的信息傳遞給微信或支付寶,他們根據(jù)這個(gè)專屬ID找到對(duì)應(yīng)的用戶宙刘,通過(guò)代扣直接就扣款了苍姜。
關(guān)注微信公眾號(hào)"Tina說(shuō)",獲取更多關(guān)于支付悬包、區(qū)塊鏈和推廣的原創(chuàng)干貨衙猪。