集成步骤
先贴上官方文档的集成步骤
资源链接
微信支付所需要的资源文件(包含支付demo和签名生成工具)
集成步骤链接
按照官方文档,一步一步集成下去,你会发现一个接一个-1等着你。
导入依赖库(jar包)
- 导入相关文件,在eclipse上是导入jar包,在AS环境中,可以再build.gradle文件中,添加如下依赖即可
1 | dependencies { |
- 当然也还可以用导入jar包的方式,下载demo文件,找到libammsdk.jar,导入到自己的项目libs文件夹中(解压压缩包,在libs文件夹中找到libammsdk.jar)
下载地址同上面的资源链接,之后同步工程,jar包导入工作就算完成了。
添加WXPayEntryActivity文件(微信结果回调的类)
WXPayEntryActivity是微信支付结果的回调类,调用微信支付SDK之后返回的结果,都会此类中获取到,根据集成要求,此类必须放在指定的位置。
如上图WXPayEntryActivity必须放在这个路径下面(在Project目录结构下 main
–java
–自己的包名
–wxapi
–WXPayEntryActivity
),如果集成过微信分享,放置的文件位置是一样的。
然后在清单文件(AndroidManifest)中加入WXPayEntryActivity的相关配置
1 | <!--微信支付--> |
看一下里面的内容
在onCreat方法中,有一个布局文件,你可以自定义,微信支付调起以后,你想展示怎样的界面,如何告知用户,都可以在WXPayEntryActivity中展示,当然,也可以注释掉,不使用任何布局,获取到支付结果后,做相应的处理就行。
下面是获取支付结果的方法:
demo中给出的onResp方法,会将支付结果以弹窗的形式显示出来。当然你可以根据不同的状态码做不同的操作,
仅供参考(code 0、支付成功 -1、支付失败 -2、取消支付)
你可以根据不同的状态做相应的处理,文档也对三种状态有对应的解释:
其中支付失败,返回-1的场景有很多,后面再详细说明。
调用微信支付
1 | private void toWeChatPay(OrderModel orderModel) { |
调用时的七个参数,可以查看具体的文档说明
这些个参数,可以跟后台沟通,返回给我们使用,当然其中的appid可以定义成静态的全局变量,在使用之前最好做一下非空判断。
调用返回-1分析
以上步骤如果你已经全部完成,那么恭喜你集成算是成功了,接下来将是调用迎来的errCode = -1,在文档上,对于-1的解释是这样的:
可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等
对以上提到的错误原因我们一一分析:
首先说说签名错误
签名如何获取?根据文档提供的下载链接,下载签名工具,输入包名,生成app唯一的签名,在文档上有详细的说明,但是要注意生成的签名,debug包和release包生成的签名是不一样的,所以在微信开放平台中填写的签名一定要区分,在测试阶段使用的是debug包生成的签名,上线使用的必须是release包生成的签名,一句话,应用包和签名一致,如果签名不一致,就会造成支付失败,errCode返回-1的情况。如果集成的有微信分享,可以用微信分享验证签名是否正确,如果同一签名下,微信分享可以分享成功,那么微信支付的签名一定是对的,返回-1就从其他方面找原因。
APPID错误
APPID是微信开放平台给应用分配的,从上面复制就行,可以把APPID放在本地(一般不会变的),在AndroidManifast中、调用微信支付、WXPayEntryActivity等都会用到APPID。
参数错误
APPID和签名都正确的情况,再去调用微信支付。可能会出现这样的情况:如果微信未登录的情况下,会把微信调起来,在登录的情况下,返回值还是-1,这时候就要考虑参数的问题了,从demo里面拿过来的appid和一系列参数,放到自己的项目里面是不行的,参数要使用自己的appid对应生成的参数才可以,调用起微信。