版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、多應(yīng)用開放平臺(tái)應(yīng)用接入開發(fā)指引修改歷史姓名版本完成時(shí)間備注許旭2014-5-7初次建立該文檔目錄1術(shù)語(yǔ)52平臺(tái)概況52.1平臺(tái)概述53開發(fā)范圍53.1應(yīng)用模式53.2應(yīng)用客戶端63.3NFC-SIM卡應(yīng)用63.4業(yè)務(wù)平臺(tái)64開發(fā)流程65流程說(shuō)明75.1應(yīng)用流程7下載7刪除9應(yīng)用更新106卡應(yīng)用開發(fā)指南116.1卡應(yīng)用開發(fā)模式116.2卡應(yīng)用開發(fā)要求126.3密鑰交換流程126.4卡應(yīng)用開發(fā)126.5卡應(yīng)用發(fā)布更新127客戶端開發(fā)指南127.1應(yīng)用客戶端開發(fā)要求127.2客戶端開發(fā)準(zhǔn)備127.3設(shè)置開發(fā)環(huán)境137.4客戶端開發(fā)16創(chuàng)建工程16編寫AndroidManifest.xml文件16手機(jī)
2、客戶端開發(fā)編碼17代碼示例183.1客戶端發(fā)布更新184業(yè)務(wù)平臺(tái)開發(fā)指南184.1接口描述18WebService名字空間18接口列表18數(shù)據(jù)類型說(shuō)明19數(shù)據(jù)域說(shuō)明19消息類型描述215.5.1. CreateSSDReq255.5.2. CreateSSDReqResponse255.5.3. DeleteSSDReq255.5.4. DeleteSSDReqResponse265.5.5. UpdateDomainKeyReq265.5.6. UpdateDomainKeyReqResponse265.5.7. DownloadApplicationReq275.5.8. Download
3、ApplicationReqResponse275.5.9. ApplicationAPDUReq275.5.10. ApplicationAPDUReqResponse285.5.11. DeleteApplicationReq285.5.12. DeleteApplicationReqResponse295.5.13. LockApplicationReq295.5.14. LockApplicationReqResponse295.5.15. AcquireTokenReq295.5.16. AcquireTokenReqResponse305常見問題301 術(shù)語(yǔ)術(shù)語(yǔ)解釋BOSSBusi
4、ness Operation Support System 業(yè)務(wù)運(yùn)營(yíng)支撐系統(tǒng)2 平臺(tái)概況2.1 平臺(tái)概述NFC手機(jī)錢包是中國(guó)移動(dòng)向各個(gè)應(yīng)用合作方開放的一套完整的NFC業(yè)務(wù)端到端的解決方案,可以向應(yīng)用合作方開放NFC手機(jī)終端非接式卡模擬能力、多應(yīng)用管理平臺(tái)(TSM)業(yè)務(wù)接口、NFC-SIM上的安全存儲(chǔ)空間、和包客戶端集成接口等NFC應(yīng)用各個(gè)環(huán)節(jié)上所需的資源,幫助各個(gè)應(yīng)用合作方根據(jù)自身業(yè)務(wù)流程開發(fā)出支持不同業(yè)務(wù)的NFC應(yīng)用,并集成在中國(guó)移動(dòng)NFC手機(jī)錢包這個(gè)大的業(yè)務(wù)平臺(tái)中,統(tǒng)一向所有中國(guó)移動(dòng)的用戶進(jìn)行推廣。 本文檔是用于對(duì)各應(yīng)用合作方開發(fā)各自的NFC應(yīng)用進(jìn)行一個(gè)基礎(chǔ)性的技術(shù)指引,明確產(chǎn)品開發(fā)的一個(gè)
5、基本流程,提供開發(fā)過程中可能需要用到的各類技術(shù)文檔的索引,并對(duì)開發(fā)過程中可能遇到的技術(shù)問題進(jìn)行解答。 本文檔適用于NFC手機(jī)錢包應(yīng)用產(chǎn)品開發(fā)技術(shù)人員閱讀3 開發(fā)范圍3.1 應(yīng)用模式NFC應(yīng)用包含幾下幾種模式,每次模式對(duì)應(yīng)的開發(fā)范圍也是不一樣的,幾種應(yīng)用模式開發(fā)范圍如下:1、 純客戶端模式應(yīng)用所有功能均直接由應(yīng)用客戶端實(shí)現(xiàn),應(yīng)用的相關(guān)數(shù)據(jù)沒有安全存儲(chǔ)要求,均可隨客戶端一起直接存儲(chǔ)于手機(jī)的存儲(chǔ)空間中。典型應(yīng)用有:NFC名片應(yīng)用。2、 客戶端結(jié)合卡應(yīng)用模式應(yīng)用的業(yè)務(wù)功能由應(yīng)用客戶端與NFC-SIM卡應(yīng)用交互完成,應(yīng)用中涉及用戶敏感數(shù)據(jù),需要將其存儲(chǔ)在NFC-SIM的安全存儲(chǔ)空間中,確保數(shù)據(jù)安全。典型
6、應(yīng)用有:簡(jiǎn)單公交卡應(yīng)用(不支持空中開卡、空中充值)、旅游卡、電子門票等。3、 客戶端、卡應(yīng)用加業(yè)務(wù)平臺(tái)模式應(yīng)用的業(yè)務(wù)功能由應(yīng)用客戶端與NFC-SIM卡應(yīng)用、業(yè)務(wù)平臺(tái)交互完成,客戶端本地與NFC-SIM交互,實(shí)現(xiàn)應(yīng)用數(shù)據(jù)在SIM卡上的安全存儲(chǔ),客戶端遠(yuǎn)端通過移動(dòng)互聯(lián)網(wǎng)與業(yè)務(wù)平臺(tái)交互,實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)功能。典型應(yīng)用有:金融PBOC應(yīng)用、公交卡應(yīng)用(支持空中開卡、空中充值)。3.2 應(yīng)用客戶端 應(yīng)用客戶端開發(fā)包含應(yīng)用客戶端的界面交互設(shè)計(jì)、客戶端業(yè)務(wù)處理邏輯以及對(duì)NFC-SIM卡的訪問邏輯。3.3 NFC-SIM卡應(yīng)用 NFC-SIM卡上應(yīng)用處理邏輯,包括卡應(yīng)用文件結(jié)構(gòu)定義與實(shí)現(xiàn)、卡應(yīng)用與客戶端交互指令
7、的定義與實(shí)現(xiàn)、卡應(yīng)用與非接受理機(jī)具交互指令的定義與實(shí)現(xiàn)。3.4 業(yè)務(wù)平臺(tái) 實(shí)現(xiàn)NFC應(yīng)用業(yè)務(wù)平臺(tái)側(cè)的相關(guān)處理功能,通過與TSM平臺(tái)對(duì)接,可以由業(yè)務(wù)平臺(tái)側(cè)獲取到用戶手機(jī)號(hào)狀態(tài)變更、業(yè)務(wù)訂購(gòu)關(guān)系變化等通知信息,以便進(jìn)行相應(yīng)的業(yè)務(wù)處理。4 開發(fā)流程5 流程說(shuō)明5.1 應(yīng)用流程5.1.1 下載正常流程:1、 用戶在和包客戶端卡應(yīng)用超市點(diǎn)擊應(yīng)用下載。2、 和包客戶端向多應(yīng)用開放平臺(tái)發(fā)送應(yīng)用下載請(qǐng)求。3、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“預(yù)操作請(qǐng)求”(SessionType為1)。4、 業(yè)務(wù)平臺(tái)審核用戶下載請(qǐng)求,如果審核通過返回0000;否則返回錯(cuò)誤碼和錯(cuò)誤信息,預(yù)處理響應(yīng)中ProviderSessionI
8、D字段不能為空,該值由業(yè)務(wù)平臺(tái)生成并保證唯一性。5、 多應(yīng)用開放平臺(tái)向和包客戶端返回寫卡指令。6、 和包客戶端和多應(yīng)用開放平臺(tái)多次交互完成輔助安全域創(chuàng)建、輔助安全域初始密鑰加載、SE應(yīng)用下載、安裝。7、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“SE操作反饋請(qǐng)求”,SessionID與“預(yù)操作響應(yīng)”的ProviderSessionID一致。8、 業(yè)務(wù)平臺(tái)返回結(jié)果。9、 下載應(yīng)用客戶端插件。10、 和包客戶端主界面顯示新下載的應(yīng)用圖片。11、 用戶點(diǎn)擊卡片圖片啟動(dòng)客戶端插件。12、 用戶在客戶端插件中申請(qǐng)卡片。13、 客戶端插件向銀行后臺(tái)發(fā)送用戶申請(qǐng)請(qǐng)求。14、 通知用戶申請(qǐng)通過。15、 用戶再次進(jìn)入客戶端
9、插件。16、 客戶端插件從銀行獲取個(gè)人化數(shù)據(jù)對(duì)應(yīng)用進(jìn)行個(gè)人化。17、 完成應(yīng)用下載。說(shuō)明:1、 如果輔助安全域在SIM卡上已經(jīng)存在,不會(huì)重復(fù)創(chuàng)建輔助安全域5.1.2 刪除1、 用戶在客戶端插件中發(fā)起注銷卡請(qǐng)求。2、 銀行業(yè)務(wù)平臺(tái)處理用戶注銷卡請(qǐng)求,并通過客戶端插件處理卡上余額。3、 用戶在和包客戶端應(yīng)用管理界面請(qǐng)求刪除應(yīng)用。4、 和包客戶端向多應(yīng)用開放平臺(tái)發(fā)送應(yīng)用刪除請(qǐng)求。5、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“預(yù)操作請(qǐng)求”(SessionType為2,SessionID為新生成)。6、 業(yè)務(wù)平臺(tái)審核用戶下載請(qǐng)求,如果審核通過返回0000;否則返回錯(cuò)誤碼和錯(cuò)誤信息,預(yù)處理響應(yīng)中ProviderSe
10、ssionID字段不能為空,該值由業(yè)務(wù)平臺(tái)生成并保證唯一性。7、 多應(yīng)用開放平臺(tái)向和包客戶端返回寫卡指令。8、 和包客戶端和多應(yīng)用開放平臺(tái)多次交互完成SE應(yīng)用刪除。9、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“SE操作反饋請(qǐng)求”,SessionID與“預(yù)操作響應(yīng)”的ProviderSessionID一致。10、 業(yè)務(wù)平臺(tái)返回結(jié)果11、 和包客戶端刪除應(yīng)用的客戶端12、 應(yīng)用刪除完成說(shuō)明:1、 用戶卡片個(gè)人化后未進(jìn)行注銷操作,銀行業(yè)務(wù)平臺(tái)應(yīng)該在“預(yù)操作請(qǐng)求”時(shí)返回錯(cuò)誤信息提示用戶先進(jìn)行注銷,避免卡上有余額造成用戶損失。2、 完成應(yīng)用刪除后如果輔助安全域中沒有其他應(yīng)用,將會(huì)刪除該輔助安全域。5.1.3 應(yīng)用
11、更新1、 用戶在手機(jī)錢包客戶端主界面請(qǐng)求更新應(yīng)用。2、 手機(jī)錢包客戶端向多應(yīng)用開放平臺(tái)發(fā)送應(yīng)用更新請(qǐng)求。3、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“預(yù)操作請(qǐng)求”(SessionType為3,SessionID為新生成)。4、 業(yè)務(wù)平臺(tái)審核用戶下載請(qǐng)求,如果審核通過返回0000;否則返回錯(cuò)誤碼和錯(cuò)誤信息,預(yù)處理響應(yīng)中ProviderSessionID字段不能為空,該值由業(yè)務(wù)平臺(tái)生成并保證唯一性。5、 多應(yīng)用開放平臺(tái)向手機(jī)錢包客戶端返回寫卡指令。6、 手機(jī)錢包客戶端和多應(yīng)用開放平臺(tái)多次交互完成SE應(yīng)用更新。7、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“SE操作反饋請(qǐng)求”,SessionID與“預(yù)操作響應(yīng)”的Prov
12、iderSessionID一致。8、 業(yè)務(wù)平臺(tái)返回結(jié)果,如果需要進(jìn)行個(gè)人化,響應(yīng)報(bào)文中含個(gè)人化數(shù)據(jù)9、 如果業(yè)務(wù)平臺(tái)響應(yīng)報(bào)文中不含個(gè)人化數(shù)據(jù),跳到15,否則。10、 多應(yīng)用開放平臺(tái)向手機(jī)錢包客戶端返回個(gè)人化指令。11、 手機(jī)錢包客戶端依次向SE發(fā)送個(gè)人化APDU指令,直到所有APDU執(zhí)行完畢,或卡片返回錯(cuò)誤(SW不為9000)。12、 手機(jī)錢包客戶端向多應(yīng)用開放平臺(tái)返回最后一條APDU執(zhí)行結(jié)果。13、 多應(yīng)用開放平臺(tái)向業(yè)務(wù)平臺(tái)發(fā)起“SE操作反饋請(qǐng)求”,SessionID與“預(yù)操作請(qǐng)求”時(shí)一直,通過CardPOR發(fā)送最后一條APDU執(zhí)行結(jié)果。14、 重復(fù)9到13步直到個(gè)人化過程完成。15、 多應(yīng)
13、用開放平臺(tái)向手機(jī)錢包客戶端返回結(jié)果。16、 應(yīng)用更新完成。異常處理1、 第4步時(shí),業(yè)務(wù)平臺(tái)對(duì)本次更新請(qǐng)求審核不通過,向用戶提示業(yè)務(wù)平臺(tái)返回的錯(cuò)誤信息,流程結(jié)束。2、 第5-6步過程中出現(xiàn)異常,用戶可以在手機(jī)錢包主界面重新請(qǐng)求更新應(yīng)用,重新更新應(yīng)用時(shí)會(huì)再次向業(yè)務(wù)平臺(tái)發(fā)起“預(yù)操作請(qǐng)求”。3、 卡片執(zhí)行個(gè)人化指令時(shí),指令執(zhí)行的結(jié)果通過“SE操作反饋請(qǐng)求”發(fā)送給業(yè)務(wù)平臺(tái),由業(yè)務(wù)平臺(tái)判斷當(dāng)指令執(zhí)行狀態(tài)字(SW)不為9000時(shí)是否繼續(xù)執(zhí)行。4、 第7-14步過程中發(fā)生錯(cuò)誤,用戶可以在手機(jī)錢包主界面對(duì)該應(yīng)用進(jìn)行刪除操作,或在應(yīng)用超市界面重新下載該應(yīng)用。用戶在應(yīng)用超市重新下載改應(yīng)用時(shí),多應(yīng)用平臺(tái)會(huì)重新發(fā)起預(yù)處
14、理請(qǐng)求,然后刪除實(shí)例并重新創(chuàng)建,再重新執(zhí)行7-14步的流程。6 卡應(yīng)用開發(fā)指南6.1 卡應(yīng)用開發(fā)模式l 移植模式如果卡應(yīng)用之前已經(jīng)在IC卡上實(shí)現(xiàn),那么只需要將原卡應(yīng)用的文件結(jié)構(gòu),指令定義提交給NFC-SIM卡的卡商,便可由卡商協(xié)助完成卡應(yīng)用的移植工作。l 委托開發(fā)模式如果卡應(yīng)用需全新開發(fā),可以將卡應(yīng)用的需求描述清楚,委托NFC-SIM卡的卡商進(jìn)行開發(fā)。因?yàn)榭☉?yīng)用開發(fā)需要對(duì)卡片有一定了解,具有較強(qiáng)的專業(yè)性,建議采用委托卡商開發(fā)的模式來(lái)完成卡應(yīng)用開發(fā)。現(xiàn)階段,各家卡商為了推廣卡片,提升市場(chǎng)占有率,一般會(huì)比較積極的接收開發(fā)需求。6.2 卡應(yīng)用開發(fā)要求1、 空間要求:金融類卡應(yīng)用對(duì)RAM空間占用不超過
15、1.5K,其他卡應(yīng)用對(duì)RAM空間占用不超0.5K。2、 卡應(yīng)用返回碼要求:除61xx - 6Fxx & 9xxx外的返回碼都是非法的狀態(tài)字,可能會(huì)對(duì)卡片產(chǎn)生影響,卡應(yīng)用需嚴(yán)格控制。6.3 密鑰交換流程如果卡應(yīng)用有申請(qǐng)獨(dú)立的輔助安全域,則需要對(duì)輔助安全域的初始密鑰者約定,密鑰約定有兩種操作模式,一種是由應(yīng)用合作方提供初始密鑰,將密鑰碼單通過密碼信封提供給電子商務(wù)基地,另一種是電子商務(wù)基地生成初始密鑰,并將密鑰碼單通過密碼信封提供給應(yīng)用合作方。6.4 卡應(yīng)用開發(fā)一個(gè)典型的Java Card設(shè)備有一個(gè)8或16位的運(yùn)行在3.7MHz的中央處理器,帶有1K的RAM和多于16K的非易失性存儲(chǔ)器(可
16、編程只讀存儲(chǔ)器或者閃存)。高性能的智能卡帶有單獨(dú)的處理器和加密芯片,以及用于加密的內(nèi)存,并且有一些還帶有32位的中央處理器。Java Card技術(shù)規(guī)范目前是2.2版,由三部分組成:1. Java Card虛擬機(jī)規(guī)范,定義了用于智能卡的Java程序語(yǔ)言的一個(gè)子集和虛擬機(jī)。2. Java Card運(yùn)行時(shí)環(huán)境規(guī)范,進(jìn)一步定義了用于基于Java的智能卡的運(yùn)行期行為。3. Java Card應(yīng)用編程接口規(guī)范,定義了用于智能卡應(yīng)用程序核心框架和擴(kuò)展Java程序包和類。6.4.1 JavaCard開發(fā)教程之程序元素完整的Java Card應(yīng)用程序由一個(gè)后端應(yīng)用程序和系統(tǒng)、一個(gè)主機(jī)(卡外)應(yīng)用程序、一個(gè)接口設(shè)
17、備(讀卡器)和卡上小應(yīng)用程序、用戶證書和支持軟件組成。所有的這些元素共同組成一個(gè)安全的端到端應(yīng)用程序:一個(gè)典型的Java Card應(yīng)用程序不是孤立的,而是包含卡端、讀取端和后端元素。讓我們更詳細(xì)的講述一下每個(gè)元素。 后端應(yīng)用程序和系統(tǒng)后端應(yīng)用程序提供了支持卡上Java小應(yīng)用程序的服務(wù)。 例如,一個(gè)后端應(yīng)用程序可以提供到安全系統(tǒng)和卡上的證書的連接,提供強(qiáng)大的安全性。在一個(gè)電子付款系統(tǒng)中,后端應(yīng)用程序可以提供到信用卡及其他付款信息的訪問。讀取端主應(yīng)用程序主應(yīng)用程序存在于一個(gè)例如個(gè)人計(jì)算機(jī)這樣的臺(tái)式機(jī)或者終端、電子付款終端、手機(jī)或者一個(gè)安全子系統(tǒng)中。主應(yīng)用程序處理用戶、Java Card小應(yīng)用程序和
18、供應(yīng)商的后端應(yīng)用程序之間的通訊。讀取端卡片接受設(shè)備卡片接受設(shè)備(CAD)是處于主應(yīng)用程序和Java Card設(shè)備之間的接口設(shè)備。一個(gè)CAD為卡片提供電力,以及與之進(jìn)行電子或者射頻通信。一個(gè)CAD可能是一個(gè)使用串行端口附于臺(tái)式計(jì)算機(jī)的讀卡器,或者可能被整合到終端內(nèi),例如飯店或者加油站內(nèi)的電子付款終端。接口設(shè)備從主應(yīng)用程序到卡片轉(zhuǎn)送應(yīng)用程序協(xié)議數(shù)據(jù)單元( Application Protocol Data Unit,簡(jiǎn)稱APDU)命令(在后面討論),并且從卡片向主應(yīng)用程序轉(zhuǎn)送響應(yīng)。一些CAD有用于輸入個(gè)人識(shí)別號(hào)碼的鍵盤,有的可能還有顯示屏??ㄆ诵?yīng)用程序和環(huán)境Java Card平臺(tái)是一個(gè)多應(yīng)用程
19、序環(huán)境??ㄆ峡赡艽嬖谝粋€(gè)或多個(gè)Java Card小應(yīng)用程序,還有支持軟件-卡片的操作系統(tǒng)和Java Card運(yùn)行時(shí)環(huán)境(JCRE)一起。JCRE由Java Card虛擬機(jī)、Java Card Framework和應(yīng)用程序編程接口以及一些擴(kuò)展應(yīng)用程序編程接口組成。所有的Java Card小應(yīng)用程序擴(kuò)展Applet基本類,并且必須實(shí)現(xiàn)install()和process()方法;JCRE在安裝小應(yīng)用程序的時(shí)候調(diào)用install(),并且在每次有一個(gè)進(jìn)入的用于小應(yīng)用程序的APDU的時(shí)候調(diào)用process()。Java Card小應(yīng)用程序在被裝載的時(shí)候?qū)嵗?,并且在斷電的時(shí)候保持運(yùn)行。Java Car
20、d小應(yīng)用程序起一個(gè)服務(wù)器的作用,并且是無(wú)源的。在一張卡片被加電以后,每個(gè)小應(yīng)用程序都保持非運(yùn)行的狀態(tài)直到它被選擇,在此時(shí)可能會(huì)做初始化。小應(yīng)用程序只有在一個(gè)APDU被發(fā)送給它以后才被激活。與Java Card小應(yīng)用程序通訊(訪問智能卡)可以使用兩種模型中的任何一種來(lái)在一個(gè)主應(yīng)用程序和一個(gè)Java Card小應(yīng)用程序之間通信。第一個(gè)模型是基本消息傳送模型,第二種是基于Java Card遠(yuǎn)程方法調(diào)用(JCRMI),這是J2SE RMI分布式對(duì)象模型的一個(gè)子集。此外,SATSA通過一個(gè)基于更加抽象的應(yīng)用編程接口的普通連接框架(Generic Connection Framework,簡(jiǎn)稱GCF)應(yīng)用
21、編程接口,讓你要么使用消息傳遞要么使用JCRMI來(lái)訪問智能卡。6.5 卡應(yīng)用發(fā)布更新1 準(zhǔn)備客戶端信息實(shí)例如果有多個(gè),則需要填寫多個(gè)實(shí)例信息,模塊AID,實(shí)例AID安裝參數(shù)也需要一并提供a) 應(yīng)用AIDb) cap包數(shù)量c) 文件下載順序d) 文件刪除順序e) 填寫應(yīng)用名稱f) 文件AIDg) 文件加載參數(shù)h) 實(shí)例數(shù)量i) 實(shí)例1i. 模塊AIDii. 實(shí)例AIDiii. 安裝參數(shù)j) k) 實(shí)例N2 填寫TSM應(yīng)用發(fā)布提交物列表。3 提交到中國(guó)移動(dòng)電子商務(wù)有限公司等待發(fā)布7 客戶端開發(fā)指南7.1 應(yīng)用客戶端開發(fā)要求應(yīng)用客戶端必須集成于和包客戶端啟動(dòng)運(yùn)行,要求不能有獨(dú)立的啟動(dòng)入口,需對(duì)安裝過
22、程中的打開按鈕進(jìn)行屏蔽,并且不能生成桌面圖標(biāo)。和包客戶端在啟動(dòng)應(yīng)用客戶端時(shí),會(huì)為應(yīng)用客戶端提供手機(jī)號(hào)、SEID等信息,以更應(yīng)用客戶端進(jìn)行相應(yīng)的業(yè)務(wù)處理。7.2 客戶端開發(fā)準(zhǔn)備l 首先開發(fā)者要有必須的Java開發(fā)基礎(chǔ),如果需要相關(guān)的知識(shí),可以參考一下Java Tutor:l 配置Eclipse集成開發(fā)環(huán)境,如果沒有Eclipse的話,到Eclipse的官方網(wǎng)站上去下載l 安裝了Eclipse后,還要在Eclipse下安裝ADT插件。如果沒有ADT插件,下載地址為:l 開發(fā)者必須要具有Android應(yīng)用的開發(fā)經(jīng)驗(yàn)。 想獲取更多的Android開發(fā)知識(shí),請(qǐng)參考:l 開發(fā)用的設(shè)備必須支持Open Mo
23、bile API,是否支持這個(gè)API跟Android系統(tǒng)的版本和編譯情況有關(guān)系。目前支持NFC功能的終端設(shè)備,多數(shù)都支持此API。比如三星S3、S4、Note3;HTC M7;小米3等等l SIM卡的支持,在手機(jī)上開發(fā)和錢包的應(yīng)用客戶端,需要跟SIM卡的安全模塊通信,所以需要辦理支持NFC功能的SWP-SIM。具體辦理方式可以咨詢10086,測(cè)試SIM卡的辦理,可以聯(lián)系移動(dòng)電子商務(wù)基地。7.3 設(shè)置開發(fā)環(huán)境l Eclipse的開發(fā)環(huán)境需要配置一下,以便能夠使用Google官方最新的SDK版本。開發(fā)者安裝ADT的過程如下:n 點(diǎn)擊Help菜單,選擇Install New Softwaren 在I
24、nstall的對(duì)話框里,選擇Add Repository,點(diǎn)Archive,選中你已經(jīng)下載好的ADT插件,根據(jù)Wizard的提示,完成安裝工作l 然后可以通過SDK Manager去下載相應(yīng)的SDK版本,手機(jī)錢包客戶端要求Android的版本不低于2.2,API Level最低為8:l 運(yùn)行SDK Manager,選中要安裝的SDK即可,這些SDK必須要支持Open Mobile API。具體操作方法如下:n 運(yùn)行Android SDK Managern 點(diǎn)擊 Tools -> Manage Add-on Sites.n 選擇User Defined Sit
25、es 點(diǎn)擊New,添加,關(guān)閉對(duì)話框n 不同的Android版本,對(duì)應(yīng)著不同的API levels:u 15-u 16-未發(fā)布u 15-n 重新加載Package列表:在菜單上選擇: Packages -> Reloadn Package列表刷新后,選擇 Open Mobile API under Android 4.2.2 并且安裝這個(gè)add-on packagen 通過SDK Manager安裝Open Mobile API addon package,接下來(lái)就可以開發(fā)安全模塊(Secure Element)相關(guān)的應(yīng)用程序了.n Open Mobile API的相關(guān)文檔參見下面附件:l
26、 完成安裝后,重啟Eclipse,就可以使用下載好的SDK了。l 注意:如果下載的Android SDK中沒有Open Mobile API的Addon,可以直接以第三方j(luò)ar包的方式引入openMobileAPI.jar文件。需要注意的是在編譯apk的時(shí)候,不要把此jar文件打入到apk中。l 具體的做法是:在工程的Java Build Path中,創(chuàng)建一個(gè)User Library,在此Library中添加openMobileApi.jar,做法如下圖,這樣在導(dǎo)出的apk中就不包含openMobileApi.jar的內(nèi)容了。在此處該jar只做編譯用,運(yùn)行時(shí)調(diào)用手機(jī)系統(tǒng)自己的相關(guān)類文件。l 在
27、Order and Export設(shè)置中,選擇不導(dǎo)出包含OpenMobileAPI的的lib。具體做法如下圖:l Open Mobile API的jar文件只做編譯用,文件如下:7.4 客戶端開發(fā)下面簡(jiǎn)單介紹和包客戶端開發(fā)過程。7.4.1 創(chuàng)建工程1. 使用Eclipse的wizard, 創(chuàng)建新的Android工程,選擇Android Application Project,點(diǎn)擊 Next之后,填充工程的基本屬性。2. 選擇Create Activity -> BlankActivity 點(diǎn)擊Next。3. 輸入activity名稱: MainActivity 點(diǎn)擊完成,創(chuàng)建新的工程。7.
28、4.2 編寫AndroidManifest.xml文件1 在Android應(yīng)用程序中,使用Manifest.xml文件來(lái)描述應(yīng)用程序的基本屬性。在編寫Manifest的時(shí)候應(yīng)該注意兩點(diǎn)個(gè)需要聲明uses-permission,獲得smarcard操作的相關(guān)權(quán)限。如果用的NFC相關(guān)的API,還需要聲明NFC相關(guān)的權(quán)限。2 另外一個(gè)就是聲明uses-library,使用系統(tǒng)的Open Mobile API相關(guān)的lib。這個(gè)地方required為true和false都行。這個(gè)標(biāo)簽主要用于應(yīng)用市場(chǎng)過濾應(yīng)用程序。如果為true,則對(duì)不支持Open Mobile API的手機(jī)屏蔽此應(yīng)用。3 關(guān)于Andro
29、id Manifest聲明的相關(guān)方法,請(qǐng)參考uses-library element 的官方文檔,地址為: 7.4.3 手機(jī)客戶端開發(fā)編碼編碼還需要實(shí)現(xiàn)具體業(yè)務(wù)的APPLICATION類與工具類APPLICATION類實(shí)現(xiàn)1. DEMO中創(chuàng)建了SlaveApp類,主要目的是為整個(gè)應(yīng)用提供一個(gè)重要的全局變量:SlaveClient類變量。在該類中,先定義了一個(gè)成員變量。2. 在Application的onCreate函數(shù)中對(duì)這個(gè)成員變量初始化。其中ConnectService函數(shù)完成對(duì)手機(jī)錢包服務(wù)的通信連接。3. 在完成初始化之后,對(duì)外提供函數(shù),以便使用SlaveClient變量。4. 在使用完
30、SlaveClient后,需要釋放資源。所以在Application的提供了exitApp() 函數(shù)。此函數(shù)中,調(diào)用SlaveClient的shutDown函數(shù)。5. 實(shí)現(xiàn)這個(gè)三個(gè)主要函數(shù)后,SlaveApp的功能就基本實(shí)現(xiàn)了。工具類的實(shí)現(xiàn)1. 整個(gè)Demo中,最重要的部分就是這個(gè)工具類,即SIMCardUtil類。首先看該類的實(shí)現(xiàn)方式:由于該類時(shí)用于打開邏輯通道,跟安全模塊進(jìn)行通信的,所以該類設(shè)計(jì)為單實(shí)例的。2. 在此類中,定義了三個(gè)成員變量:a) private SEService mSEService;b) private Session mSession;c) private Stri
31、ng errMsg;3. mSEService是創(chuàng)建的服務(wù),mSession是對(duì)當(dāng)前會(huì)話的緩存。errMsg是用來(lái)記錄上次打開邏輯通道時(shí)的錯(cuò)誤信息。整個(gè)程序的初始化流程大致如下:u 創(chuàng)建SEServiceu 獲取Readeru 選取SIM相關(guān)的Readeru 獲取Sessionu 打開邏輯通道4. 因此,在獲取到SIMCardUtil實(shí)例之后,要調(diào)用其init函數(shù)進(jìn)行初始化。該函數(shù)主要功能是創(chuàng)建了SEService。5. 在創(chuàng)建SEService的時(shí)候,有兩個(gè)參數(shù),一個(gè)是Context,通常用當(dāng)前Activity作為參數(shù);另外一個(gè)是SEService.CallBack接口,這個(gè)參數(shù)非常重要。6
32、. 當(dāng)SIM卡的安全模塊如果連接成功,采用異步回調(diào)的方式來(lái)通知應(yīng)用程序。也就是當(dāng)Service連接成功, SEService.Callback的函數(shù)serviceConnected()將會(huì)被調(diào)用。在這個(gè)工程里面,內(nèi)嵌類SEServiceCallbackImpl實(shí)現(xiàn)了SEService.CallBack接口,因此它的serviceConnected將會(huì)被調(diào)用7. 在進(jìn)行回到的時(shí)候,先對(duì)mSEService進(jìn)行賦值,然后對(duì)Session進(jìn)行了初始化,也就是調(diào)用了initSession函數(shù)。也就是說(shuō)只有確定SEService連接成功,才能進(jìn)行Session的初始化,只有Session初始化完成,才能
33、打開邏輯通道,這個(gè)操作時(shí)序不能錯(cuò)。8. 在初始化Session的時(shí)候,會(huì)對(duì)mSEService的值進(jìn)行判斷是否為null。然后獲取Reader。如果設(shè)備終端上只有一個(gè)安全模塊,Reader就只有一個(gè)。當(dāng)然也可能存在多個(gè)的情況。所以需要對(duì)Reader進(jìn)行選擇,選中名稱中含有SIM或者UICC字段的Reader。這個(gè)Reader是對(duì)應(yīng)SIM卡的。9. 當(dāng)Session初始化完成之后,就可以在需要的情況下打開邏輯通道,打開邏輯通道的關(guān)鍵代碼只有一句,就是調(diào)用Session的openChannel函數(shù),但是由于執(zhí)行此函數(shù)可能會(huì)報(bào)錯(cuò)的情形比較多,所以要對(duì)其異常情況進(jìn)行處理,加以區(qū)分不同類型的異常,方便錯(cuò)
34、誤的排查。10. 當(dāng)該類使用完畢之后,注意關(guān)閉Session,釋放資源,下次使用是,再重新初始化。7.4.4 代碼示例具體示例代碼及DEMO參考3.1 客戶端發(fā)布更新1. 準(zhǔn)備客戶端信息a) apk文件b) 客戶端名稱c) 啟動(dòng)包名d) 啟動(dòng)類名e) 版本編號(hào)f) 版本名稱g) 客戶端截圖2. 填寫TSM應(yīng)用發(fā)布提交物列表。3. 提交到中國(guó)移動(dòng)電子商務(wù)有限公司等待發(fā)布8 業(yè)務(wù)平臺(tái)開發(fā)指南8.1 多應(yīng)用平臺(tái)與業(yè)務(wù)平臺(tái)接口描述8.1.1 WebService名字空間名稱uriSOAP-ENVsimota8.1.2 接口列表接口名稱消息類型(請(qǐng)求/響應(yīng))消息方向(發(fā)起方/被調(diào)用方)預(yù)操作請(qǐng)求PreO
35、perationsReq/PreOperationsReqResponse多應(yīng)用開放平臺(tái)->業(yè)務(wù)平臺(tái)SE操作反饋OperationResultNotify/OperationResultNotifyResponse多應(yīng)用開放平臺(tái)->業(yè)務(wù)平臺(tái)用戶狀態(tài)變更TsmNotifyReq/TsmNotifyReqResponse多應(yīng)用開放平臺(tái)->業(yè)務(wù)平臺(tái)業(yè)務(wù)事件通知EventNotifyReq /EventNotifyReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)創(chuàng)建安全域CreateSSDReq/CreateSSDReqResponse 業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)安全域刪
36、除DeleteSSDReq/DeleteSSDReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)安全域密鑰更新UpdateDomainKeyReq/UpdateDomainKeyReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)應(yīng)用下載DownloadApplicationReq/DownloadApplicationReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)個(gè)人化管理ApplicationAPDUReq/ApplicationAPDUReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)應(yīng)用刪除DeleteApplicationReq/DeleteApplicationR
37、eqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)應(yīng)用鎖定/解鎖LockApplicationReq/LockApplicationReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)獲取TokenAcquireTokenReqLock/AcquireTokenReqResponse業(yè)務(wù)平臺(tái)->多應(yīng)用開放平臺(tái)8.1.3 數(shù)據(jù)類型說(shuō)明類型說(shuō)明DEC10進(jìn)制數(shù)字HEX16進(jìn)制字符串,長(zhǎng)度必須是2的倍數(shù)STRING字符串8.1.4 數(shù)據(jù)域說(shuō)明數(shù)據(jù)域數(shù)據(jù)類型備注最大長(zhǎng)度simota:SynTypeDEC應(yīng)用、安全域同步類型1:增加2:修改3:刪除.1simota:AppAIDHEX應(yīng)用AID
38、及實(shí)例AID16simota:SEIDHEXSEID10simota:FileNameSTRING如果是應(yīng)用、安全域同步,F(xiàn)ileName為AppAIDsimota:FileContentHEX個(gè)人化數(shù)據(jù)64Ksimota:DomainAIDHEX安全域AID16simota:AppNameSTRING應(yīng)用名稱100simota:StatusCodeSTRING狀態(tài)碼4simota:StatusDescriptionSTRING狀態(tài)描述60simota:SeqNumSTRINGyyyyMMdd24hmmssxxxxxx,xxxxxx為6位流水號(hào) SeqNum與業(yè)務(wù)無(wú)關(guān),應(yīng)保證每個(gè)請(qǐng)求數(shù)據(jù)包中S
39、eqNum的唯一性20simota:CommTypeDEC承載方式1:SMS/BIP(后臺(tái)客服人員WEB管理界面發(fā)起,終端用戶短信、STK、WEB或WAP發(fā)起);2:應(yīng)用管理器,3:終端客戶端1simota:MsisdnSTRING手機(jī)號(hào)碼20simota:OrgMsisdnSTRING原手機(jī)號(hào)碼20simota:KeyVersionHEX密鑰版本1simota:DomainKey節(jié)點(diǎn)安全域密鑰simota:KeyIDHEX密鑰ID2simota:KeyTypeHEX密鑰類型2simota:KeyValueHEX密鑰值32simota:KeyCheckHEX密鑰校驗(yàn)碼6simota:LockF
40、lagDEC鎖定標(biāo)志0:解鎖;1:鎖定。1simota:ResultCodeSTRING卡端操作結(jié)果通知的返回代碼 0x00,成功;其他失敗。4simota:ResultMsgSTRINGSE操作結(jié)果通知的返回信息。60simota:TimeStampSTRING時(shí)間戳14simota:ImsiSTRINGIMSI15simota:Application節(jié)點(diǎn)應(yīng)用simota:SecurityDomain節(jié)點(diǎn)安全域simota:OriginalCommandHEX源發(fā)起請(qǐng)求的命令字2simota:OriginalSeqNumDEC源請(qǐng)求包流水號(hào)20simota:SessionIDSTRING會(huì)話
41、ID,即業(yè)務(wù)平臺(tái)生成的業(yè)務(wù)會(huì)話ID,格式為 ZZZZZZZZZyyyyMMdd24hmmssxxxxxx,其中的ZZZZZZZZZ為9位的應(yīng)用提供商編號(hào),xxxxxx為6位流水號(hào)同一業(yè)務(wù)的數(shù)據(jù)包應(yīng)使用相同的SessionID26simota:ProviderSessionIdSTRING發(fā)起方調(diào)用時(shí)傳遞的SessionID26simota:SessionTypeDEC1:應(yīng)用下載/業(yè)務(wù)訂購(gòu),2:應(yīng)用刪除/業(yè)務(wù)退訂,3:應(yīng)用更新/業(yè)務(wù)更新,4:業(yè)務(wù)遷移,5:應(yīng)用鎖定,6:應(yīng)用解鎖,7:安全域創(chuàng)建,8:安全域刪除,9:安全域密鑰更新,10:個(gè)人化數(shù)據(jù)管理,11:BOSS換號(hào)simota:TARHE
42、X應(yīng)用或安全域的TAR3simota:IsDeleteCAPFileDEC是否刪除CAP文件0:不刪除;1:刪除1simota:CmdTypePersoTypeDEC0:方式一,讀寫個(gè)人化數(shù)據(jù)2:方式二,應(yīng)用調(diào)用安全域個(gè)人化3:方式三,安全域調(diào)用應(yīng)用個(gè)人化1simota:EndflagDEC0:未完1:結(jié)束1simota:APDUSumHEX已執(zhí)行APDU指令數(shù)1simota:LastAPDUSWHEX最后一條APDU執(zhí)行結(jié)果SW2simota:LastDataHEX最后一條指令的執(zhí)行返回?cái)?shù)據(jù)256simota:ModuleInfo節(jié)點(diǎn)Module信息simota:CardPOR節(jié)點(diǎn)卡片返回信
43、息simota:ProvnCodeSTRING省份代碼4simota:IfContinueOptDEC是否還有后續(xù)操作0:無(wú)1:有后續(xù)操作simota:AppProviderCodeSTRING應(yīng)用提供商代碼6simota:TokenHEX完成簽名的Token數(shù)據(jù)simota:HashValueHEX待簽名的哈希數(shù)據(jù)simota:EventIDDEC1、用戶退網(wǎng)2、業(yè)務(wù)退訂3、業(yè)務(wù)訂購(gòu)4、SE掛失simota:UserStatusDEC用戶狀態(tài)1、預(yù)銷戶退訂2、銷戶退訂3、過戶退訂4、改號(hào)退訂5、欠費(fèi)停機(jī)6、用戶掛失停機(jī)7、用戶主動(dòng)停機(jī)8、續(xù)費(fèi)恢復(fù)9、解掛后恢復(fù)10、主動(dòng)停機(jī)后復(fù)機(jī)11、業(yè)務(wù)開
44、通確認(rèn)simota:Personalization節(jié)點(diǎn)個(gè)人化數(shù)據(jù)8.1.5 消息類型描述PreOperationsReq父元素名稱元素名稱約束備注SOAP-ENV:Body simota:PreOperationsReq1simota:PreOperationsReqsimota:SeqNum1simota:PreOperationsReqsimota:SessionID1simota:PreOperationsReqsimota:SessionType1simota:PreOperationsReqsimota:TimeStamp1simota:PreOperationsReqsimota:
45、CommType1simota:PreOperationsReqsimota:Msisdn1simota:PreOperationsReqsimota:SEID1simota:PreOperationsReqimota:IMEI 1simota:PreOperationsReqsimota:AppAID1simota:PreOperationsReqsimota:OrgMsisdn0.1在BOSS換號(hào)時(shí)設(shè)置PreOperationsReqResponse父元素名稱元素名稱約束備注SOAP-ENV:Body simota:PreOperationsReqResponse1simota: PreO
46、perationsReqResponsesimota:SeqNum1simota: PreOperationsReqResponsesimota:TimeStamp1simota: PreOperationsReqResponsesimota:Status1simota: Statussimota:StatusCode1為0000時(shí),表示業(yè)務(wù)平臺(tái)通過審核,繼續(xù)后續(xù)請(qǐng)求操作。返回其他狀態(tài)時(shí),操作終止。simota: Statussimota:StatusDescription1simota: PreOperationsReqResponsesimota:ProviderSessionId1業(yè)務(wù)平
47、臺(tái)調(diào)用操作時(shí)生成的SessionIDsimota: PreOperationsReqResponsesimota:DomainAID0.1simota: PreOperationsReqResponsesimota:SSDDapSign0.1simota: PreOperationsReqResponsesimota:DomainKey0.n請(qǐng)求安全域密鑰更新時(shí),需設(shè)置一組或多組可選項(xiàng)DomainKeysimota:DomainKeysimota:KeyID1simota:DomainKeysimota:KeyType1simota:DomainKeysimota:KeyValue1simot
48、a:DomainKeysimota:KeyCheck1simota: PreOperationsReqResponsesimota:Personalization0.n請(qǐng)求應(yīng)用個(gè)人化時(shí),需設(shè)置一組或多組Personalization數(shù)據(jù)simota:Personalizationsimota:AppAID1當(dāng)應(yīng)用操作時(shí),為應(yīng)用AID,安全域操作時(shí),為安全域AID。simota:Personalizationsimota:FileContent1simota: PreOperationsReqResponsesimota:PersoType0.1請(qǐng)求應(yīng)用個(gè)人化時(shí),需設(shè)置個(gè)人化方式Operatio
49、nResultNotify父元素名稱元素名稱約束備注SOAP-ENV:Body simota:OperationResultNotify1simota:OperationResultNotifysimota:SeqNum1simota:OperationResultNotifysimota:SessionID1simota:OperationResultNotifysimota:SessionType1simota:OperationResultNotifysimota:TimeStamp1simota:OperationResultNotifysimota:OriginalSeqNum1源請(qǐng)
50、求包交易序號(hào)simota:OperationResultNotifysimota:Msisdn1simota:OperationResultNotifysimota:SEID1simota:OperationResultNotifyimota:AppAID0.1simota:OperationResultNotifysimota:ResultCode1simota:OperationResultNotifysimota:ResultMsg1simota:OperationResultNotifysimota:Imsi0.1simota:OperationResultNotifysimota:C
51、ardPOR1simota:CardPORsimota: APDUSum1simota:CardPORsimota: LastAPDUSW1simota:CardPORsimota: LastData1simota:CardPORsimota:LastApdu1OperationResultNotifyResponse父元素名稱元素名稱約束備注SOAP-ENV:Body simota:OperationResultNotifyResponse1simota:OperationResultNotifyResponsesimota:SeqNum1simota:OperationResultNoti
52、fyResponsesimota:TimeStamp1simota:OperationResultNotifyResponsesimota:Status1simota: Statussimota:StatusCode1為0000時(shí),表示業(yè)務(wù)平臺(tái)通過審核,繼續(xù)后續(xù)請(qǐng)求操作。返回其他狀態(tài)時(shí),操作終止。simota: Statussimota:StatusDescription1simota:OperationResultNotifyResponsesimota:IfContinueOpt1simota:OperationResultNotifyResponsesimota:KeyVersion0.
53、1simota:OperationResultNotifyResponsesimota:DomainKey0.1當(dāng)創(chuàng)建委托方式輔助安全域后通知業(yè)務(wù)平臺(tái),業(yè)務(wù)平臺(tái)可返回一組或多組安全域密鑰,通知多應(yīng)用開發(fā)平臺(tái)進(jìn)行密鑰更新。simota:DomainKeysimota:KeyID1simota:DomainKeysimota:KeyType1simota:DomainKeysimota:KeyValue1simota:DomainKeysimota:KeyCheck1simota:OperationResultNotifyResponsesimota:PersoType0.1當(dāng)完成應(yīng)用下載后通知業(yè)務(wù)平臺(tái),若應(yīng)用需個(gè)人化時(shí),需設(shè)置個(gè)人化方式simota:OperationResultNotifyResponsesimota:Personalization 0.n當(dāng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2030年中國(guó)安防電子行業(yè)市場(chǎng)供需趨勢(shì)發(fā)展戰(zhàn)略分析報(bào)告
- 2024年塔吊司機(jī)承包項(xiàng)目勞務(wù)合同3篇
- 2024-2030年中國(guó)太陽(yáng)能發(fā)電系統(tǒng)設(shè)備商業(yè)計(jì)劃書
- 2024-2030年中國(guó)地面通信導(dǎo)航定向設(shè)備行業(yè)當(dāng)前經(jīng)濟(jì)形勢(shì)及投資建議研究報(bào)告
- 茅臺(tái)學(xué)院《圖形圖像信息處理進(jìn)階》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年權(quán)益保障:合同與財(cái)務(wù)制度
- 茅臺(tái)學(xué)院《電子測(cè)量原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 馬鞍山師范高等專科學(xué)?!吨型饣A(chǔ)教育比較》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年在線教育平臺(tái)軟件定制委托開發(fā)合同2篇
- 2024三輪汽車駕駛培訓(xùn)學(xué)校合作經(jīng)營(yíng)協(xié)議3篇
- 2024年低壓電工復(fù)審取證考試題庫(kù)附答案(通用版)
- 新管徑流速流量對(duì)照表
- 咯血病人做介入手術(shù)后的護(hù)理
- 境外投資環(huán)境分析報(bào)告
- 《壓力平衡式旋塞閥》課件
- 物聯(lián)網(wǎng)與人工智能技術(shù)融合發(fā)展年度報(bào)告
- 婦產(chǎn)科醫(yī)生醫(yī)患溝通技巧
- 內(nèi)科學(xué)糖尿病教案
- 《高尿酸血癥》課件
- 微量泵的操作及報(bào)警處置課件查房
- 人教版小學(xué)數(shù)學(xué)四年級(jí)上冊(cè)5 1《平行與垂直》練習(xí)
評(píng)論
0/150
提交評(píng)論