最新微信app支付开发填坑篇

来源:互联网 发布:新股自动申购软件 编辑:程序博客网 时间:2024/05/21 09:45

之前开发过高德地图的,百度地图的,人家官网的资料,开发文档,官方论坛,应有尽有,特别详细。直到我开始搞微信app支付之后,我一直吐槽,没见过这么坑的api,微信支付真的太坑了

首先他们官网上面只有eclipse的案列说明,没有Android studio版本的,其实也没什么太大的区别,注意一点就行了

在调用微信支付之前,首先要申请微信开放平台帐号,微信商户平台帐号,还有在微信开放平台添加移动应用等等操作都要先做到位,不然是没法支付的

1、首先你要申请微信开放平台,然后完成后,进入开放平台的管理中心,创建移动应用,应用审核成功后会直接拥有微信分享、收藏等功能,而app支付需要另外再申请

这里写图片描述

然后进行微信支付的申请,申请需要填写资料进行审核,而且还需要微信商户帐号,关联商户帐号,获得商户key(商户key在后面生成sign值时需要用到)

2、服务器那边应该要操作的是,首先调用微信统一下单接口,需要用到多个参数(包括商户key)进行调用接口,成功后会获得应该返回给我们的参数,这一次返回值当中会有sign值,但是该sign值不需要用到,也不需要返回给我们app端,这里需要特别注意的一点是,后台服务需要二次签名,就是把调用统一下单接口返回的值(主要六个参数appid,partnerid,prepayid,package,noncestr,timestamp),进行二次签名得到sign,该sign就是app端需要用到的。(因为进行签名的时候需要用到商户key,商户key比较敏感,所以签名步骤需要放在服务器端进行,签名之后由app端请求返回)

3、接下来就是介绍app端要操作的步骤,首先,你需要对你的app进行打包操作,获得keystone文件,或者,然后运行微信官网提供的app获取你的应用签名,操作如下
这里写图片描述
输入包名,就可以获得你的应用签名(这里需要注意的是,需要打包后的app,而不是直接运行的),然后进入微信开放平台,在你的应用那里添加。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。如下图所示

这里写图片描述

接下来就是app调用了,在App调用当中,首先要先注册app,就是往微信客户端添加你的应用,还要引入官网提供的jar包,相信引包的操作大家都会了,然后才可以进行app支付
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp(“wxd930ea5d5a258f4f”);

app支付中,我们客户端请求服务器接口,回调需要的参数,然后根据参数进行app支付请求,,具体操作如下

这里写图片描述
上图是微信官网上的案例,上面有个错误的地方,大家自己改过来,还有这里的sign,是服务器那边进行二次签名得到的sign,而不是调用统一下单接口得到的sign,服务器后台的工作人员请特别注意。(本人被这个sign给坑了好几天了)

然后就是支付回调这一块了,这一块也是超级坑爹的,我从这一块就觉得微信好霸道。
你需要在你的应用包名相同路径下创建一个包路径wxapi,然后在下面再创建WXPayEntryActivity类,比如说你的应用包名是com.example.app,那么你就需要在com.example.app.wxapi下面创建WXPayEntryActivity类,而且微信那边特别强调,如包名或类名不一致会造成无法回调结果(微信够霸道吧)。。。而且我发现,Android studio上面开发的话,还有一个很坑爹的情况,就是as上的包名可以在build.gradle上面指定为applicationId,然后在AndroidManifest文件上的package另外命名包路径,这时候就有问题了,因为微信指定是AndroidManifest文件上的package的包名,但是你却随便路径,不与应用包名一致,结果导致你连回调结果都不可能实现,参考一下官网资料,如下图所示

这里写图片描述
还有配置文件记得给WXPayEntryActivity类加入android:exported=”true”,不然即使回调成功也不会出现该结果界面,也顺便加上启动模式吧android:launchMode=”singleTop”

<activity            android:name=".wxapi.WXPayEntryActivity"            android:exported="true"            android:launchMode="singleTop"            android:theme="@android:style/Theme.NoTitleBar" />

当你没其他问题时,你会回调成功,回调成功,并不一定调用支付成功
回调中errCode值列表:
名称描述解决方案0成功展示成功页面-1错误可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。-2用户取消无需处理。发生场景:用户不支付了,点击取消,返回APP。

回调中errCode值列表

我就是搞这个微信支付,全部搞定了,他丫丫的一直返回-1给我,试过很多方法都不行,最后才知道sign需要经过二次签名,丫的,官网api都没说清楚,很多地方都让人不明不白,出的问题特别多,人家支付宝那么容易就可以用了,微信却搞得那么复杂,真是服了它了

有关微信支付的就到此为止了,应该没有什么问题,有问题的话可以在下面留言,我会及时回复的

1 0
原创粉丝点击