胡海瑞 王兵 郭立君
【摘要】 本文設計了一種應用于移動支付的智能卡雙接口調度方法,可以完全滿足智能卡應用于移動支付領域的技術要求。該方法與智能卡硬件無關,且運行效率高,有廣泛的應用前景。
【關鍵詞】 7816 SWP 移動支付 雙接口
一、引言
移動支付,又稱手機支付,是以手機等手持終端為載體,與各類讀卡器近距離進行身份識別,信息交互,從而完成支付過程。作為一種新興的支付方式,其具有安全、快捷、方便等優點,移動支付已經成為我國支付領域的重要組成部分。
在眾多移動支付實現方案中, SWP定制終端方案是移動支付業務發展的重要方向。SWP定制終端方案是將CLF(contactless Front end,非接觸前端)芯片預置在定制手機終端內,智能卡通過SWP協議與終端CLF芯片通信,CLF芯片通過14443協議,實現與外界讀卡器的通信。同時,智能卡為了完成用于移動通信的SIM卡功能,還必須通過7816接口與移動終端通信。
二、雙接口調度技術概述
在使用手機進行移動支付時,會出現同時進行語音通話或上網的情景。這就要求智能卡卡平臺具有對移動通信接口(7816接口)和支付通信數據接口(SWP接口)進行并行調度的能力,使兩個接口既能夠分別單獨工作,又能夠同時并行工作。
智能卡規范規定,卡片在雙接口同時通信時,一個接口的掉電或復位,只對該接口產生影響,不應影響另一接口正在進行的會話。
由于平臺只能順序的處理I/O接口的APDU指令,所以I/O接口調度模塊必須能同時接收兩個接口的指令,然后順序的分發給平臺去處理。
三、雙接口調度設計與實現
在本文設計的雙接口調度方案中,7816協議棧和SWP協議棧獨立實現,由雙接口調度主程序進行指令的分發。7816接口被激活時,中斷程序自動初始化接口,完成發送ATR和PPS過程。當CLF檢測到RF 磁場,SWP接口被激活,SWP接口的初始化工作也自動完成。7816接口的通信是由終端首先發起的,卡接收到全部命令頭以后就可以發送過程字節,用來指示終端的下一步動作。
如果智能卡在接收全部命令頭以后,發送等候協議字節0x60,就是通知終端“卡現在正忙,暫時無法處理命令”。終端收到此字節后就不會進行下一步動作,而是繼續等待下一個過程字節。下面進行詳細介紹。
7816 接口中斷處理:如果該中斷是7816復位中斷,則復位7816并發送ATR,打開7816接收中斷及復位中斷。如果該中斷是接收FIFO非空中斷則接收APDU命令頭5字節,置7816命令頭完成接收標志,啟動定時器,周期發0x60,然后退出。此時APDU數據域還沒有被接收。
SWP接口中斷處理:進入中斷后首先檢查7816接口是否正在定時發0x60。如果正在發送,說明7816接口正在等待接收數據域,為了防止7816接口等待超時,立即在7816接口發送0x60,然后接收完整的SWP數據,并存至緩存。
中斷程序會判斷事件類型,如果事件是EVT_CARD_ DEACTIVATED 或 EVT_FIEL- D_OFF指令,則將信號有效標志位清零,表示該接口處于去激活態;如果是 EVT_ CARD_ACTIVATED 指令,則將信號有效標志位置位;如果是EVT_SEND _DATA 指令且信號有效,則將緩存數據拷貝至專用緩存。處理完畢后,退出中斷。
雙接口調度主程序處理:進入主程序后,首先對硬件平臺和I/O接口進行初始化,然后就進入到一個無法退出的While循環中。如果兩個接口收到的命令都已經處理完畢,又沒有收到新的命令,則主程序一直處于等待狀態,等待I/O口接收中斷的到來。
在等待狀態下,如果只有7816命令頭接收標志置位,則接收7816數據域,并處理該條命令,并且將處理后response 通過7816接口發送。如果只有SWP數據接收完成標志置位,則處理該條命令,并且將處理后response 通過SWP接口發送。
如果7816命令頭接收標志和SWP數據接收完成標志同時置位,則處理SWP指令,處理完成后重新進行標志判斷。所以如果每次進行標志位判斷時,SWP數據接收完成標志都置位,則一直處理SWP指令。這種設計模式可以保證SWP接口的數據被優先執行。
四、總結
本設計可以適用的應用場景有:單獨7816接口通信,如手機終端進行正常語音通信等;單獨的SWP 接口通信,如終端關機狀態下進行支付業務;雙接口同時通信,如終端進行語音通信的過程中進行移動支付。
參 考 文 獻
[1] UNI CEI EN .ISO/IEC 7816-4 1997
[2] ETSI TS .102 613 V8.0.0 (Release 8) 2009-10
[3] 胡漢才. 單片機原理及其接口技術. 清華大學出版社.