最新项目需要对接微信的电子发票功能 业务场景如下图所示:
业务场景参考官方给出的文档提示 先搞清楚整个业务流程
业务流程搞清楚大致的业务流程之后 可以开始对接微信平台了
1 第一步 必备数据
先准备必要的一些账户信息 比如在微信平台注册的 appid 和app secret 注意这个注册信息的时候 需要用到应用的包名和签名文件 签名信息中有 md5,sha1,sha256 三种 但是微信平台并没有明确提示使用哪一种 。这边我使用的是sha256 我推测通常平台都是使用这种类型 因为sha256的安全性更高 ,实际开发中,暂时未发现报错 但是没有验证其它两种 所以不做评论 感兴趣的可以自己去试验一下
2 第二步 对接sdk
最新的sdk已经改成jcenter远程仓库了 所以只需要添加依赖即可
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请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
4 具体的代码逻辑
主要的请求类是 ChooseCardFromWXCardPackage,不多说 直接上代码
api实例 详细代码片段其中 req的参数 可以通过js-sdk获取 详情可以去看官方文档 因为我这边后台的同事已经处理好了 所以就不展示获取参数的代码了 一定要注意 checkargs()这个方法 这个方法会验证你的参数 有哪几个是必填的 . 通过这两步就可以直接打开微信的电子发票界面了 算是完成了30%
5 选择发票的数据回调
在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,manifest文件里面加上exported属性,设置为true,(在多渠道打包的情况下 一点要注意这个WXEntryActivity类资源的路径问题 )
实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法,在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法
网友评论