最近在做乙個基於pboc電子現金卡的終端應用, 專案還沒有完成, 但電子現金部分的處理模組已完成,剩下的基本是ui和除錯的事情了. 想把對pboc電子現金理解整理成一篇文章.
電子現金的概念是在pboc規範的第十三部分《基於借記/貸記應用的小額支付規範 >>裡提出的。可以這樣理解,電子現金是pboc裡的乙個應用,它基於借貸記. 這個應用被提出的目的就是實現我們經常聽說的乙個功能, 小額支付功能.
基於電子現金的卡目前來講,一般有如下幾個特點:
1 是由銀行發行, 這個是必須的,否則就不會叫金融ic卡了.
2 卡里只有乙個應用,也就是乙個aid,因為目前國內推行pboc的卡都是先從單應用開始做試點. 從卡片的角度來講,實現多應用不成問題,但是, 如果卡片支援多應用, 還需要終端(包括圈存終端和消費終端)以及銀行後台的相應配合, 這部分的工程量就很大了, 所以暫時以單應用為主.
3 一般用這張卡做小額支付,並且非實名制,消費無需密碼,且是離線消費.
4 這種卡一般只在銀行內部或企業內部使用(企業內部也是與銀行合作), 目前很難推廣到一些大的公共事業中(比如交通), 因為這些行業是國家建設部管的, 這裡面有很多非技術的原因導致銀行這種金融機構與建設部難以坐在一起協商.
電子現金的應用, 主要做兩種型別的交易,一是圈存交易,一是消費交易. 我這裡以終端圈存交易為例,簡單描述一下pboc的交易流程.
所謂電子現金圈存, 是指把使用者在銀行帳戶裡的錢轉到這張電子現金的卡上. 說白了就是從你的銀行卡上轉錢到電子現金的ic卡上. 由於目前還沒有實現pboc卡的多應用,整個圈存過程實際上需要兩張卡,終端先讀取銀行卡資訊(包括卡號,密碼以及充值金額等資訊), 扣費成功後下一步才是走pboc交易流程,對電子現金卡寫卡. 而推廣pboc的終極目標就是實現一卡多應用, 也就是說,未來的某個時候,就可以用一張卡完成圈存,只是不同的應用.
我這裡簡單通俗的介紹一下電子現金充值pboc的流程. 更詳細的內容可以直接看pboc 2.0規範.
前面說到,電子現金應用是基於借貸記的, 所以它相容借貸記應用,可以說是精簡版的借貸記應用. 每一筆交易,所執行的pboc流程就是簡化版的借貸記流程.
第一步, 選擇應用, 所用命令是select, 傳的引數是 應用aid號. 這裡跟標準的pboc交易流程並不一樣, 因為標準流程裡面, 前面還有兩步, 就是讀取支付系統目錄, 建立應用列表.為什麼可以省掉這兩步, 因為前面說到,卡里一般只有乙個應用aid,目前還沒有實現多應用, 這個aid號應該在卡片個人化時就已經固定好,只要你知道了該aid號,直接跳過前兩步選擇該應用可以了. 卡里只有乙個應用,就無所謂應用列表了. 當然,乙個好的程式設計建議還是走標準流程,這樣,以後卡片實現了多應用, 你的終端程式也可以通吃.
應用選擇後,卡片返回一串資訊, 這串資訊裡面有個很重要的資料叫pdol, 這是乙個列表,卡片通過這個列表告訴終端,它需要哪些資料, 這些資料用來給卡片做應用初始化. 舉個列子,比如卡片可能會需要授權金額(就是圈存的金額), 貨幣**等資料. 終端程式解析pdol,按照一定的規則拼接資料,進入第二步.
第二步, 應用初始化. 命令是gpo, 引數就是前一步根據pdol所組的資料報. 該步表示終端通知卡片交易開始了. 卡片會返回aip和afl兩個資料. aip告訴終端卡片支援的功能, 比如卡片是否支援離線資料認證, 是否支援發卡行認證等. afl是要告訴終端, 如果要完成這筆交易,你終端該從卡上讀什麼資料。afl裡就包含了這些資料的位置和名稱. 舉個例子,這些資料可能有當前的交易序號,該張卡片的卡號(pboc裡叫pan,應用主帳號)等.
第三步,讀資料. 命令是read record. 引數是前一步得到的終端所需卡片資料的位置和名稱. 終端要把afl指定的所有資料讀出,並儲存到終端供下面的流程所用. 每次讀到的資料是包含在卡片的返回資訊中的, 終端解析返回資訊,提取相關的資料.
第四步, 產生應用密文. 命令是gac. 引數是密文型別和產生密文所需的資料. 密文型別有三種,分別是交易證書(tc), 應用認證密文(aac),授權請求密文(arqc). 因為這一步是為下一步聯機處理做準備,所以終端應用請求卡片產生的密文型別應該是arqc,檢視卡片是否允許聯機處理. 卡片收到產生密文型別後,返回的資訊有兩個重要的資料, 第乙個就是密文型別,該資料指示卡片是否願意做聯機處理,如果願意,返回的是arqc,與終端一致,否則返回aac,表示拒絕聯機. 終端判斷卡片返回的是否是arqc,如果是,終端要讀取卡片返回的另乙個重要的資料,應用密文(ac), 該密文是卡片用存放在卡里的金鑰,對終端發過來的明文資料,用3des演算法生成的.
第五步, 聯機驗證卡片. 這一步,卡片本身沒有操作. 終端把前一步得到的應用密文,產生應用密文的一些資料,還有其它的資訊(比如交易日期,交易時間等),打包傳送到發卡行pboc後台, 通訊方式一般是用tcp/ip。 後台通過驗證arqc密文來認證卡片, 如果認證成功會返回授權響應密文(arpc), 這個arpc是後台通過3des演算法,對arqc密文和二個位元組的授權響應碼加密生成的.
第六步,第五步的目的是發卡行驗證卡片的合法的性,這一步是卡片驗證發卡行是否是乙個有效的發卡行. 命令是external authentication, 叫外部認證. 引數是上一步聯機處理響應的arpc和授權響應碼. 卡片收到命令後,會用自己的金鑰,對arqc和授權響應碼生成arpc,然後與終端傳來的arpc比較,兩都相同,就認為此arpc是來自乙個有效的發卡行後台.
第七步, 聯機圈存報文, 驗證了卡片和發卡行的合法性之後,終端向發卡行後台請求圈存,上傳的資料報括充值金額,卡內原來的餘額等資訊, 發卡行後台返回乙個寫卡的指令碼命令, 終端解析這個指令碼,直接發給卡片即可. 到這裡,卡片充值成功.
第八步,這一步要傳送第二請求密文命令(gac2), 它的作用說白了就是告訴卡片交易結束。與第四步的gac1不同的是,gac2的引數裡面多了授權響應碼,並且請求的密文型別是tc,也就是希望卡片接受交易。如果卡片返回的也是tc,表示接受交易.
第九步, 讀交易日誌,在整個流程執行的過程中,卡片會以一定的格式讀錄當前這筆交易的資訊,比如授權金額,卡號,交易時間,終端只需通過乙個命令就可以把些資訊讀出,然後提取出有用的資訊,以便日後結算.
PBOC EMV之檔案結構
我剛看pboc emv中ic卡的檔案結構時,就被df,mf,ef,ddf,adf這些概念弄暈了.無論是中文的pboc文件還是英文的emv文件,對這幾個概念講解的都不夠通俗.不過這也不奇怪,這種所謂的標準如果講的太通俗,那麼制定這些標準的人又怎麼能夠稱得上是專家呢 下面根據自己的理解,把這幾個概念講解...
PBOC EMV之檔案結構
我剛看pboc emv中ic卡的檔案結構時,就被df,mf,ef,ddf,adf這些概念弄暈了.無論是中文的pboc文件還是英文的emv文件,對這幾個概念講解的都不夠通俗.不過這也不奇怪,這種所謂的標準如果講的太通俗,那麼制定這些標準的人又怎麼能夠稱得上是專家呢 下面根據自己的理解,把這幾個概念講解...
電子錢包和電子現金的區別
對於普通的使用者來說,電子錢包和電子現金 下面分別簡稱ep和ec 是幾乎沒有區別的,為什麼這麼說呢.因為ep和ec都是為了做小額支付而生的.我們拿著一張ic卡去超市的pos機上消費,或是坐公交消費,只需輕輕一刷,你不必關心這張卡是基於ep的應用還是基於ec的應用.因此只要求我們對電子現金略做了解即可...