最新項(xiàng)目需要對(duì)接微信的電子發(fā)票功能 業(yè)務(wù)場(chǎng)景如下圖所示:
參考官方給出的文檔提示 先搞清楚整個(gè)業(yè)務(wù)流程
? ? 搞清楚大致的業(yè)務(wù)流程之后? 可以開(kāi)始對(duì)接微信平臺(tái)了
1? 第一步 必備數(shù)據(jù)
????????先準(zhǔn)備必要的一些賬戶(hù)信息? 比如在微信平臺(tái)注冊(cè)的 appid 和app secret? 注意這個(gè)注冊(cè)信息的時(shí)候 需要用到應(yīng)用的包名和簽名文件? 簽名信息中有 md5,sha1汽烦,sha256 三種? 但是微信平臺(tái)并沒(méi)有明確提示使用哪一種? 抬闯。這邊我使用的是sha256? 我推測(cè)通常平臺(tái)都是使用這種類(lèi)型 因?yàn)閟ha256的安全性更高 阵漏,實(shí)際開(kāi)發(fā)中,暫時(shí)未發(fā)現(xiàn)報(bào)錯(cuò)? 但是沒(méi)有驗(yàn)證其它兩種? 所以不做評(píng)論 感興趣的可以自己去試驗(yàn)一下
2 第二步? 對(duì)接sdk??
????????最新的sdk已經(jīng)改成jcenter遠(yuǎn)程倉(cāng)庫(kù)了 所以只需要添加依賴(lài)即可
dependencies {
? ? compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
或者添加
dependencies {
? ? compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
3? 獲取access_token? 官方提供的接口
? ??https請(qǐng)求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
4 具體的代碼邏輯?
? ? 主要的請(qǐng)求類(lèi)是?ChooseCardFromWXCardPackage,不多說(shuō) 直接上代碼
其中 req的參數(shù)? 可以通過(guò)js-sdk獲取 詳情可以去看官方文檔? 因?yàn)槲疫@邊后臺(tái)的同事已經(jīng)處理好了 所以就不展示獲取參數(shù)的代碼了? 一定要注意? checkargs()這個(gè)方法? 這個(gè)方法會(huì)驗(yàn)證你的參數(shù) 有哪幾個(gè)是必填的 . 通過(guò)這兩步就可以直接打開(kāi)微信的電子發(fā)票界面了 算是完成了30%
5? 選擇發(fā)票的數(shù)據(jù)回調(diào)
? ??在你的包名相應(yīng)目錄下新建一個(gè)wxapi目錄择示,并在該wxapi目錄下新增一個(gè)WXEntryActivity類(lèi)标捺,manifest文件里面加上exported屬性模蜡,設(shè)置為true迂猴,(在多渠道打包的情況下 一點(diǎn)要注意這個(gè)WXEntryActivity類(lèi)資源的路徑問(wèn)題 )??
實(shí)現(xiàn)IWXAPIEventHandler接口,微信發(fā)送的請(qǐng)求將回調(diào)到onReq方法离唐,發(fā)送到微信請(qǐng)求的響應(yīng)結(jié)果將回調(diào)到onResp方法病附,在WXEntryActivity中將接收到的intent及實(shí)現(xiàn)了IWXAPIEventHandler接口的對(duì)象傳遞給IWXAPI接口的handleIntent方法?