Android集成微信支付SDK
最近接了集成android微信支付SDK的需求,感觉跟其它的SDK的接入并无太大区别,只不过有一些坑可能需要踩,前人已经踩的差不多了,本人就少踩了一些,总结一下最新的微信支付SDK的集成过程与注意事项。
1. 去官网上申请微信支付所需要的各种APPID等,申请的时候可能需要你的包名,与签名信息等,获取签名信息时,可能会踩坑,(一定要保证生产环境可以支付,要不然等到发版时,发现生产环境不能用,重新提交申请,得等1,2个工作日,老板就得拿你说事儿了),可以参考我的另一篇文章:
http://blog.****.net/yukimineryuu/article/details/53041552 《微信授权登录错误记appid》,因为之前申请过微信授权登录时用的APPID,微信支付时,用的同一账号,因此,appid用以前申请的就可以了。
2. 下载微信官方android支付DEMO: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
3. 仅参考它的demo代码(本人试着运行了下,提示“服务器请求错误”,就再没鼓捣它了)
4. 引入libs包。依据官方文档,已不再维护eclipse的jar包版本的sdk了,需要大家尽快切换到Android Studio来(AS太好用了),引入的方式是使用jcenter.
如下:
dependencies {
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
同步完成即可。
5. 由于微信SDK改成通过Gradle的方式发布到jcenter,包名做了相应修改,从原来的com.tencent.mm.sdk修改为com.tencent.mm.opensdk,需要开发者修改对应的import语句
6. 如果要是有混淆,要将之前的旧包名的混淆改成如下:
-keep class com.tencent.mm.opensdk.** {
*;
}
-keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
7. 注册微信:我是在Application里注册一次,保证初始化的时候注册了就好(官网盗图):
8. 从你们的java后台,获取到数据(必须的是以下7条,其中appId可以自己在代码里写死),添到下面大红框里就可以了,最后一个字段extData是optional(非必选),根据业务自行选择。
9. 在你的包名下(即下图红框就是包名),
)
再建一层目录,必须叫:wxapi, 这个目录下的文件必须叫:WXPayEntryActivity
如何确认是否建立正确: 打开你的WXPayEntryActivity,看到代码里第一行的package是否正确,如下图所示:
10, 然后在AndroidManifest.xml里声明一下,有人说必须这样声明,但微信支付给的官网demo里是简化的,不知道简化的调起WXPayEntryActivity是否有效,我没有验证,反正用其他开发者提供的下面的声明没有问题:
11 , 在WXPayEntryActivity里接收支付结果的返回状态:
因为WXPayEntryActivity还是一个activity,他是有界面的,所以当我得到返回码的时候把它finish()掉了,然后通过EventBus发送状态码给JAVA后台(当然, 这里是用的接口)
12 ,其它的配置,可以参考微信的DEMO代码,比如权限申请,activty在清单文件里的声明等。
本文只列举出了注意点。供大家参考,免得以后再踩坑。
13, 关于支付状态码 -1 :
有各种情况,首先保证包名与线上签名信息一致,再就是运行的时候,使用
gradle clean assembleRelease打出apk包,再签名运行。不要直接用鼠标点击IDE的RUN
以上就是我此次集成遇到的问题,关键点应该都有,如果有遗漏,请大家指正。