最新微信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。
我就是搞这个微信支付,全部搞定了,他丫丫的一直返回-1给我,试过很多方法都不行,最后才知道sign需要经过二次签名,丫的,官网api都没说清楚,很多地方都让人不明不白,出的问题特别多,人家支付宝那么容易就可以用了,微信却搞得那么复杂,真是服了它了
有关微信支付的就到此为止了,应该没有什么问题,有问题的话可以在下面留言,我会及时回复的
- 最新微信app支付开发填坑篇
- 微信支付最新
- PHP开发APP微信支付接口
- PHP开发APP微信支付接口
- 微信app开发支付接口相关
- APP微信支付开发的流程
- php 开发微信app支付接口
- 微信APP支付常见开发问题解答
- 微信支付app支付3.0接口开发
- 支付--微信APP支付
- 微信支付app
- 微信支付app
- 微信APP支付
- app微信支付
- APP微信支付
- app微信支付
- 微信APP支付
- 支付--微信APP
- javax.persistence.NoResultException: No entity found for query 异常解决办法
- 关于 UITextField 的总结
- java rmi
- 安卓源码之打电话和发短信
- 《笨办法学python3》的学习笔记(10-15)节
- 最新微信app支付开发填坑篇
- CentOS 下 redis 安装与配置
- HDU1879 继续畅通工程
- KMP字符串匹配算法
- mysql常用函数汇总
- java日志组件介绍(common-logging,log4j,slf4j,logback )+ java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback
- Android Studio中Git的安装配置以及使用
- 深入源码分析go类型系统
- HTML5之FileReader的使用