銀聯介面開發隨筆(1)
銀聯的介面開發涉汲到的東西比較多,需要通過乙個系統的文章來完成,第一篇先介紹一下相關常用到的概念。
首先做個廣告,我們公司的機器如下圖所示
可以在上面進行手機話費充值,購買遊戲點卡、電影票,列印優惠券,水、電、煤繳費,另外值得提一下的是還可以直接刷銀行卡進行以上消費,馬上要上線的還有信用卡還款等功能。現在機器大多在上海的全家便利店和羅森便利店裡。
以前我去
atm機取錢,每次都很感嘆銀行這種跟人民幣直接打交道的機器是多麼強大,安全可靠,現在經過一段
chinapay
和銀商pos
介面開發以後,仍然感嘆
atm機的強大,安全可靠。目前有文章寫關於
pos開發,或者說
atm機開發的很少,網上只能找到一些只言片語,或者蜻蜓點水式的,一來這方面的資料都只有銀行、銀聯自己知道,還有一些硬體廠商,外界流傳出來的並不多,所以我想通過自己知道的一些情況,做個整理,也希望對希望了解相關業務的程式設計師做個參考
下面先介紹一下相關概念
銀行卡號:平常我們看到的銀行卡號的磁條都是以磁軌形式存在,常見到的銀行卡號一般都在
2磁軌上,要想知道這些資訊,需要專門的讀卡器裝置,就像銀行
atm機裡的讀卡器,或者像平常看到一些支援銀聯
pos刷卡業務的
pos機,現在卡號一般是
19位,前6位是
bin號,可以區分是什麼銀行的卡,現在中國銀聯卡多以
62開頭,
7-18
位由各家銀行自己定義,最後一位是校驗碼,校驗規則網上有很多資料,不作解釋。
iso 8583協議:該協議是全世界銀行通用的通訊協議,共有
128個域,但是目前
pos開發中常用其前
64位,這些都是由各家銀行自己定義,關於這個協議,比較複雜,這裡只好一代而過,不過這裡關於點陣圖的概念還是需要說一下。想像一下
8583
協議定義了
128個域,而我們平常不是每個域都需要的,打個比方,你想查詢卡的餘額,你只需要卡號和密碼就可以了,其它的資訊都不需要,那這種情況下你還是傳
128個域的資訊是一種浪費,像銀行這種對網路資源也比較節省的,更不想產生這種資源浪費,於是點陣圖的重要性就體現出來了,在每段報文前面加個
8個位元組的報文域,乙個位元組由8個
2進製碼,這樣就有
8*8個
2進製碼用於表示
8*8個域,如果有該域只要在相應
2進製設為
1就可以了。
工作金鑰:我們平常在銀行
atm機上取錢,在金屬密碼鍵盤上輸入密碼,這時候,鍵盤會用工作金鑰把你輸入的密碼加密以後再送出來。這個工作金鑰是鍵盤每天都要去銀行獲取的。這時候你是不是會有疑問,如何保證工作金鑰在網路上傳輸時不會截獲呢?下面引出主金鑰的概念。
主金鑰:是一種儲存在鍵盤裡的金鑰,跟銀行那邊儲存的是一樣的,終端裝置去銀行主機簽到(簽到的概念在下面解釋),銀行會把工作金鑰用這個主金鑰加密以後再傳送,加密後的包注到鍵盤裡以後,鍵盤裡的主金鑰會解開這個密文,解開的密文就是工作金鑰了。
網路分布:
商戶開通銀聯的業務以後,如果採用
tcp/ip
接入的話,需要一台專門與銀聯打交道的伺服器,其它所有終端都通過專用伺服器再接入到銀聯的前置機
,之間採用
socket
連線方式接入。商戶的每個終端都有唯一的終端號,且每天都需要簽到
。簽到:舉個通俗的例子,我們每天上班,都要打卡報到,然後再工作,終端裝置想要與銀聯通訊,也要每天都去報到一次,這個報到的過程可以理解為簽到,
交易:
通過下面這幅圖就可以理解了
充正:
沖正,簡單的說就是把銀行主機已經扣的帳衝回去。舉例子來講,我們刷卡進行手機充值,客戶選擇充值金額
-》刷卡
-》輸入密碼
-》傳送扣款請求到銀行主機
-》銀行主機扣款完成
-》進行手機話費充值。這時候如果手機充費充值過程失敗,但是銀行主機的款已經扣了,怎麼辦?這時候可以再向銀行主機發起一次充正請求,把剛剛扣款的賬銷掉。
第一篇文章就先寫到這,先是只講些概念,以後會繼續講解,並盡可能多的貼上**。
IOS開發銀聯支付
我們用的時ios sdk 3.0.1 具體 的檢視文件 前端 比較簡單 後台稍微複雜點 文件上下的sdk版本可能低了 具體的要找銀聯那邊的人要 支援純無卡交易靜態庫,以下簡稱uppayplugin,包含檔案 uppayplugin.h uppayplugindelegate.h libuppaypl...
銀聯支付介面之退貨
接收公司的銀聯支付專案,已經是第三個版本了,現在的是引用了upopsdk.dll,使用了封裝操作的方法,和官網現在的demo操作方式不太一樣,而且找不到太多的文件資料。任務是增加銀聯退貨的介面,查了很多的資料找到了點感覺,經過無數次的嘗試,最後還是執行成功了,下面上介面方法。銀聯閘道器支付退款 新的...
ios開發 整合銀聯3 3 0
專案最近需要整合銀聯,在網上搜了一下發現都並不是最新版的銀聯整合教程,自己摸索了一下,總結寫了下來。一 環境配置 1 3.3.0的銀聯sdk和之前發生了變化,之前是uppayplugin.h uppayplugindelegate.h libuppayplugin.a一共三個檔案,現在精簡成uppa...