美文网首页Android问题汇总(遥远的回忆过去)三方
微信支付采坑记(2018.08.16)errCode=-1

微信支付采坑记(2018.08.16)errCode=-1

作者: MonkeyLei | 来源:发表于2019-08-02 09:47 被阅读4次

纯属个人实际感受,谁用谁知道....为了怕被封qq,微信啥的,就xxx来表示,哈哈。。。开个玩笑....

大概两三年前还在北京的时候,当时需要接入xx信和xxx宝支付,xxx宝支付从申请到完成也就几天时间搞定。而xxx信支付呢?一个星期,为什么妮 - 因为坑多。官方demo也不知道是哪个“人事部门的人写的“,我只想说,一个刚毕业的,懂点编程的应该也能写,什么格式注释叫一个乱....

多年之后(2018年08月),同样的需要接入微信支付。现在来看集成方便多了,demo的话随便看个支付的就行了。官方文档也可以看下。。。很早以前做微信支付,订单是本地生成的(也就是android或者ios客户端自己组装订单信息,自己签名密钥啥的,然后调起微信支付),现在下订单都放到后台做了,前端就很简洁了,只需要1.调用订单生成方法,然后获取返回的订单信息2.用该订单信息调起微信支付,支付完成后后台回收到回调通知。 So,很方便了。

业务流程建议了解下: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

红色的地方关注一下(这个地方也是后台做,不过一直出问题,所以Android这边也参与本地签名调试才发现问题的)

image

Demo下载地址(可以参考里面的回调类,或者直接复制过来用WXPayEntryActivity.jva),然后关注下PayActivity.java里面的:

image

然后随便再看下这里(看Demo其实就可以了,更详细...这里只是做了说明);

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

同时了解下相关字段含义,方便和后台调试沟通:

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12

image

最后集成方式: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN

以上基本就OK了。 可以看到基本Android只需要调用下单接口,由后台负责调用微信支付下单接口,然后进行签名后返给App,App拿到下单成功的信息即可发起支付,支付成功后App就完事了(后台才是会收到支付成功的回调)。 大部分工作都是后台来完成的....

坑1. 然后和后台都完成功能对接后,当调起微信支付确是“一闪而过”, -1 啊 -1 ....此时已经过了半天了,还是-1。

image

Appid,没问题呀。。也注册了。 那就只有一种更大的可能性就是签名错误。 但是签名是后台返的呀。。。好吧!我们找后台去...后台说就是按照文档来的...哎!

继续查看资料...好吧。我本地自己签名试试吧...反正后台给的信息足够。。。有本地完成如下操作(红框部分):

    步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。
参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。
注意:package的值格式为Sign=WXPay 
image

还是不行呀,调不起来??我操。。。fuck....

然后看了一篇也是本地生成签名的文章发现: 看见没,红色部分需要一个key呀。。。我去。。。。回过头你去看上面文档的介绍,确实没好友说道需要一个这个key作为签名参数...

image

坑2. 有时候修改了发现也不行呀,然后试着清理微信缓存,然后就好使了。 这个貌似老版本才有的问题呀,怎么回事妮??

另外,建议支付回调页面这样配置: 虽然有些人说不用,有些人说用。但是我们都整上吧,不然不知道哪天又出什么幺蛾子.....

image

坑3. php签名还是不行?????我本以为我本地试过了,没问题了呀。。。然后后台统一生产sign给我,还是不行。 对比了下,我擦,两个生产的不一样....

         Android本地签名-之前php后台给的签名和这里不一样导致签名失败....
(Sign=WXPay被转移为Sign%3D=WXPay)

是因为php转义导致字符串不一致,进而签名不同。 所以.......

坑踩完了。。xxx信,你官方能出一个说明不妮,总结一下各种坑,或者验证下是否有这些坑,做一个说明妮....

另外如果不想要回调页面显示空白,提示自己的回调信息或页面,可以设置回调页面背景透明,然后回调返回后立即finish掉。

透明

          this.getWindow().getDecorView().setBackgroundColor(Color.TRANSPARENT);

回调处理示例:

image

相关文章

网友评论

    本文标题:微信支付采坑记(2018.08.16)errCode=-1

    本文链接:https://www.haomeiwen.com/subject/wbekdctx.html