标签:
关于android调用微信支付,在网上基本是骂声一片。在于官方文档,对于许多问题都没有描述。我罗列一下我遇到的麻烦,供大家参考
首先想要获取微信支付功能,必须在微信开放平台,申请app 支付能力,根据官方文档,按照要求,完成后 官方会提供 appid .appsercert两个重要参数。以及自己设置的应用签名
一:官方文档
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
根据官方文档,app需要先调用预支付接口获得 prepayid 等,按照要求来不能出错,
值得注意的是sign ,参考签名生成算法
获取预支付订单号最重要的是细心,参数不要错,官方提供签名生成工具,你可以在自己项目中打印自己的数据和sign 然后和签名工具的比对
(一般公司的项目会选择在服务端做好这些,提供接口你就可以获取prepay_id)
接下来就是调用微信支付,也是很坑的地方
调用微信支付代码不多,对应填参数就可以 。不要忘记先注册app到微信
用过微信充话费的话,都知道支付完成,会跳转到一个订单描述,提示订单完成的界面,点击完成按钮,返回聊天界面(第三方app 肯定要跳转到我们自己的app里面)。微信支付在官方文档没有提到这些怎么操作,但是看给的支付例子demo,可以看到有个WXPayEntryActivity.class他的包名必须是项目包名+wxapi
在WXPayEntryActivity.class里面对返回response判断,做自己的处理,这个界面不能少,少了就返回不了自己的app,
我选择response.errcode==0,立马跳转,关闭这个界面。
接下来是我遇到最让我头痛的问题,运行程序,第一次可以正常支付,但是以后再也不行,errcode==-1,即使是官方的demo也是如此。对于一个菜鸟来说根本不知道发生了什么。查看官方的说明
参数不对,我一遍又一遍的对参数,还是不行。想shi的心都有,请教别人的时候大多说是参数不对,对照签名工具什么的慢慢查吧。我界面别人的手机发现官方的demo和自己的东西都是可以支付的,我还以为自己的手机坏了,想着换手机,shit. 结果确实他们第二次支付的时候都返回errcode==-1. 在网上查啊查 有人说要在配置文件中设置
据说这里不填,偶尔会有一些意外收获。胆子大的可以试试。然后这个方法还是没有解决问题尝试第二种方法: 清微信缓存。这难道是一个调用方法吗?结果大吃一惊 给你们演示一下:
这个百分百可以成功。唯一不解的是,即使卸载微信,重新安装也不一定每一次都可以。但是这种方法明显不能去用,难道打个Toast 让用户先清除一下先???即使有这样的方法调用,那也将用户的有用数据,比如未读消息给清楚掉,每次还要重新登录微信。
下一个方法就是应用签名!!!!将自己的应用签名换成和微信开放平台上应用签名一致,简单的说就是第一次应用签名的时候有个.keystore文件,拿过来重新布置一下(对于签名不熟悉的童鞋,可以百度一下)。注意一点微信开放平台上面的包名必须和你在配置文件中注册的包名一致我拿官方支付的demo演示一下
再次运行官方的demo,每次都是可以支付了
《又说错的地方,欢迎大家指出来 毕竟我也是一只菜鸟》
标签:
原文地址:http://blog.csdn.net/just_me123/article/details/51083678