前言
前几天给我们的app接入微信支付,因为在很久之前我就已经了解到我们的app有这方面的需求,因此我早就预习了微信支付的官方文档,自以为成足在胸,跃跃欲试,最后才发现我还是too young too simple!!!以下是我接入的坎坷过程......
过程
因为项目原来就已经有微信分享以及微信登录的功能,所以官网里以下2个步骤(图片截于官网)我是直接跳过
于是我直接写代码进入发起支付请求阶段
官网上的代码如下:
将以上代码照葫芦画瓢移植到我的app后(数据由我们后台提供),然后我就充满憧憬地运行程序,调起微信支付,顿时我就傻眼了!!!一点反应也没有!!!当时的我还天真无邪地崇尚着官网上的代码,开始质疑起自己来,是不是我之前的步骤没做到位...于是我仔细地核查了好几遍集成步骤,还是不行!当然在这个过程中我也Google(自从被某度坑过......此处省略万字)出了好几篇关于微信支付的坑的博文,以及各位前人大贤们对官方文档的吐槽...当时搜出以下原因:
1.appid错误(由于之前已经完成了微信登录和微信分享的功能,排除);
2.第三方分享的SDK集成了微信的SDK,调用微信支付时调用了第三方分享框架里的微信SDK接微信支付时,无法打开微信app,7楼的解答(排除)
当时几乎是搜遍都找不到原因,直到我看到一篇博文(额,网址忘记了),里面提到支付请求有两个方法,其中一个方法不行就试试另一个
于是我抱着试试的心态把sendReq换成了safeSendReq,曙光就这样降临(同时心中万只草泥马奔腾有没有)......
还有如果想在不同位置响应不同操作(如微信登录,支付,分享)的回调方法可以在这里设置
如上我是设置了登录和支付在自己写的WXApiTool响应回调,而分享是在DWZShareKit这个框架响应回调。
另外,在搜索的过程中发现大家遇到比较多的问题是可调用微信支付,但是进入的页面空白或者只有确定按钮,这种情况一般是发起支付请求的参数有误,可参考微信支付的小坑 - Kinoの技术博客 以及iOS微信支付的那些坑 - 简书 ,我的参数都是由后台提供,把上述的坑填好后就直接通过了(后台也是挺给力的哈)。
总结
这次给了我一个启发:不要盲目相信官方文档的代码(哪怕是某信这样的大公司),遇到问题多Google(又让我想起某度给我留下的阴影...),看看前人的答案,最后送上我的座右铭:学习之路,与君共勉。