銀行的交易體系是一套比較復雜的系統(tǒng),本文將就POS機交易涉及到的一些概念控硼、流程等作簡要介紹诈唬。
名詞解釋
首先桐罕,解釋一下我們在日常生活或者POS等支付系統(tǒng)開發(fā)時經(jīng)常遇到的一些名詞的基本概念久妆。
1.簽到
簽到基本上是所有POS機必須支持的一項功能晌杰,并且POS機應該在每天的使用之前進行簽到操作,其目的有兩個:一是保證操作員及POS機的合法性(一般簽到需要輸入操作員號和對應的密碼筷弦,也有自動簽到的模式不需要手動輸入這些信息)肋演;二是下載新的工作密鑰。那么什么是工作密鑰呢奸笤?2.工作密鑰
工作密鑰是專門用來在交易過程中對刷卡人的卡密碼進行加密的惋啃,它是在簽到的時候從后臺獲取的,那么為了保證工作密鑰的安全性监右,在網(wǎng)絡傳輸中POS機得到的工作密鑰是密文的形式边灭,獲得后需要用POS機的主密鑰來解密獲得真實的工作密鑰明文。那么主密鑰又是怎么來的呢健盒?3.主密鑰
主密鑰可以通過安全環(huán)境下手工輸入或者由密鑰母POS灌入等方式來存入到POS機绒瘦,主要作用便是對工作密鑰和MAC密鑰等進行解密。4.MAC密鑰
與工作密鑰類似扣癣,MAC密鑰也是簽到時從后臺獲取惰帽,并且用主密鑰解密,主要作用是計算MAC(數(shù)據(jù)包校驗值)父虑,該校驗值附加在交易報文里進行傳輸该酗,收端同樣計算一個MAC值,通過比較兩個MAC值來確定報文是否被篡改士嚎。5.消費
消費即刷卡消費呜魄,不解釋6.消費撤銷
故名思意,即因為某種原因已經(jīng)進行過消費的一筆交易莱衩,請求撤銷爵嗅。需要注意的是,消費撤銷必須是撤銷消費所用POS機的當日當批次的消費交易笨蚁。7.退貨
和消費撤銷類似睹晒,退貨也是對一筆消費交易進行退款,不同的是括细,一伪很,退貨不要求當日當批次的消費;二奋单,退貨一般支持部分退貨锉试,多次退貨,而消費撤銷一般都是直接退全款辱匿。想要理解消費撤銷和退貨的本質區(qū)別键痛,那么必須首先知道什么是結算。8.結算
一般POS機在每天的工作結束之后匾七,應進行結算操作(分為手動結算和自動結算)絮短,結算會將當日POS機中存儲的所有筆交易(包含消費、消費撤銷)上傳至后臺并清空昨忆,然后進行簽退丁频。一個結算周期內(nèi)所有的交易使用的是同一個批次號,即同一批次邑贴。因此可以簡單的理解為結算之前只能消費撤銷席里,因為消費數(shù)據(jù)在POS機里面存著;結算之后只能退貨拢驾,此時原消費數(shù)據(jù)已從POS機里面清除奖磁。9.沖正
當POS機終端將一筆交易的報文發(fā)往后臺,但是沒有收到返回最終超時時繁疤,POS機無法確定后臺是否成功的完成了這筆交易咖为。因此,當下筆交易發(fā)生前稠腊,POS機會先向后臺請求撤銷該筆不確定的交易躁染,如果后臺記錄該筆交易成功,則回滾及撤銷該筆交易架忌,否則不處理吞彤,此為沖正成功;如果POS機與銀聯(lián)結算中間在數(shù)據(jù)傳輸過程中發(fā)生故障叹放,則沖正不成功饰恕,此時刷卡方卡里的錢已經(jīng)被扣,需要進行人工沖正许昨。10.補登
補登指支付應用將交易結果發(fā)送給POS機后并沒有收到POS機的應答懂盐,因此不確定POS機端是否成功記錄了該筆交易,此時支付應用應進行的自動或手動的POS端交易查詢糕档。11.預授權相關
包含預授權莉恼,預授權追加,預授權完成速那,預授權撤銷俐银,預授權撤銷完成。預授權類似于押金端仰,即先凍結一部分用戶銀行卡的資金捶惜,等消費正式完成之后再扣取實際的金額即預授權完成。不難想象荔烧,預授權業(yè)務多用于酒店吱七。
此外汽久,POS機簽購單上對應的一些字段術語,如下所示:
批次號(Batch NO.):POS從簽到起至結算踊餐、簽退為止的交易為一批次景醇,交易批次號標識一批交易。POS中心為每個POS的每個批次分配一個批次號吝岭,在簽到響應報文中下傳給POS終端啊易。對應銀聯(lián)ISO8583報文的報文頭域7:批次號(Batch Number)
序號(Ref. NO.):POS中心為交易分配的流水號槽惫,在響應報文中下傳給POS終端作為對賬參考號隅津,并用于事后查證韧涨。對應銀聯(lián)ISO8583報文的域37:檢索參考號(Retrieval Reference Number)
授權號(Auth Code):授權標識應答碼,簡稱“授權碼”幕帆。是發(fā)卡行返回或銀聯(lián)CUPS代授權時返回的授權序號获搏。對應銀聯(lián)ISO8583報文的域38:授權標識應答碼 Authorization Identification Response
查詢號(Trace NO.):POS機為每一筆交易產(chǎn)生的順序編號。POS每上送一次交易此號碼增加1蜓肆。 POS流水號為6位數(shù)字颜凯,值從1至999999循環(huán)使用。在自動沖正時仗扬,POS中心依據(jù)POS流水號作為確定被沖正交易的要素之一症概。
憑證號(Voucher NO.):查詢號(Trace NO. 也叫POS流水號)也作為交易憑證號(在簽購單上打印為Voucher NO.),在進行撤銷等交易時早芭,輸入原交易憑證號作為確定原交易的要素之一彼城,并且必須上送原交易的憑證號。
流程分析
下圖所示為一般的包含POS支付APP退个,POS終端募壕,后臺的交易流程示意圖,所有的交易類型如消費语盈、消費撤銷舱馅、退貨等都是這樣一套流程。圖中JAR是JAVA語言單獨封裝出來的一層刀荒,相當于APP代嗤、POS終端、后臺服務器三者的媒介缠借。當然干毅,其他語言原理一樣。
參考上圖泼返,具體步驟為:
- APP通過用戶界面發(fā)起一項交易(消費硝逢、消費撤銷、退貨等);
- JAR包收到交易指令后通知POS終端(二者通過串口或藍牙進行通訊)渠鸽,顯示交易指令并提示刷卡叫乌;
- 持卡人刷卡輸入密碼確認后,POS終端將交易請求數(shù)據(jù)打包發(fā)送給JAR包徽缚;
- JAR包將交易請求數(shù)據(jù)通過互聯(lián)網(wǎng)發(fā)送給后臺综芥;
- 后臺處理完畢后將處理結果返回給JAR包;
- JAR包將這一結果再次透傳返回給POS終端猎拨,這一步POS終端如果接收超時,則下次交易發(fā)起時會進行自動沖正屠阻;
- POS機記錄交易結果红省,并向JAR包應答,這一步JAR包如果接收超時国觉,則需提示APP進行補登操作吧恃;
- JAR包將交易結果最終返回給APP。
另外麻诀,文中所出現(xiàn)的后臺指的是收單機構的后臺痕寓,收單機構又是和銀聯(lián)的后臺對接的,那么這里需要詳細解釋一下蝇闭。這個時候我們需要引入清算這個概念以及著名的721比例呻率。
在一次普通的POS機交易中,可能涉及到四家機構呻引,一是刷卡人的發(fā)卡行礼仗,二是為POS機拓展商戶的收單機構(當然,POS機可能又是另外一家專門的POS機廠商生產(chǎn)的)逻悠,三是商戶賬戶對應的銀行元践,四是銀聯(lián)。銀聯(lián)的清算中心作為一個橋梁童谒,每天會對所有收單機構的交易進行清算单旁,清算前,顧客刷卡消費的金額雖然已經(jīng)從其銀行卡上扣掉了饥伊,但實際上還是在該銀行內(nèi)部象浑,通過銀聯(lián)的清算,這筆金額會通過銀聯(lián)到達收單機構的賬戶撵渡,收單機構又會再次通過銀聯(lián)將這筆錢轉到商戶所使用的銀行賬戶上融柬。上述的過程錢不是白轉的,一般POS刷卡消費對于商戶會有一定比例的手續(xù)費趋距,如千分之六粒氧,那么這個手續(xù)費會按照持卡人發(fā)卡行:收單機構:銀聯(lián)=7:2:1的比例來進行分成。當然需要注意的是节腐,收單機構既包括一些銀行外盯,也包括一些有收單支付牌照的第三方機構摘盆,當收單機構和持卡人的銀行卡同屬一家銀行的時候,是不需要經(jīng)過銀聯(lián)的饱苟,因此該銀行可以通吃商戶手續(xù)費孩擂。
需要說明的是,銀行交易系統(tǒng)流程復雜箱熬,POS機應用模式也是多種多樣类垦,因此本文所講內(nèi)容可能只是冰山一角,不準確的地方還望大家批評指正城须。
另蚤认,個人技術博客,同步更新糕伐,歡迎關注砰琢!轉載請注明出處!文中若有什么錯誤希望大家探討指正良瞧!