小白的微信支付接入,大神看到可以尽情的喷…喷完之后留下建议,谢谢!
第一次接入微信支付开始比较忐忑,因为和一些朋友讨论说微信这里坑比较多啊,但是成功接入后发现Android端总共也就那么几十行代码.
我遇到的一些问题后的验证:
- APP微信支付是微信开放平台;网页支付是微信公众平台.两个不一样且相互独立,小白不要搞混.
- 微信分享 微信支付 你可以是两个APPID 只要你提交给微信的两个应用签名和包名一致就可以了(这里的应用签名和包名是可以重复的 只要你申请APPID时应用名称不一样就可以).
——————————————分割——————————————
- 微信支付业务流程:你必须熟悉这个流程才能更好地去接入
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3 - 微信接入官方指南:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=1417751808&token=&lang=zh_CN - 微信支付SDK Demo :比较坑的是这里还是 Eclipse,一个Demo也不敢更新一下;如果你要运行Demo 直接运行是不行的,你必须用自己的APPID 去替换demo中的APPID
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
——————————————上面所述如果你已经准备完毕,那就开始写代码吧.——————————————
第一步:在你的项目中添加微信支付的SDK:这个应该是没有任何问题
第二步:在APP中确定购买按钮的点击事件中,向服务器请求生成支付订单,用服务器返回的参数通过微信的SDK调用微信支付(appid,partnerId,prepayId,nonceStr,timeStamp,packageValue,sign,exData)
在这里遇到一个问题:
到这里 调用微信支付的东西已经完成了,进入微信支付页面(或者米没有进入,没有进入说明你或者你的后台出现了错误).
如果有问题….完成微信客户端的回调步骤,通过微信客户端的回调查找问题出处.第三步:从微信支付的Demo中找到wxapi这个文件,复制粘贴到自己的项目中(包括其中的>WXPayEntryActivity
),必须一定是这样的路径存在你的项目中,这是微信定下的规定,不遵守人家就不和你玩,如下图所示.别忘了粘贴进来之后WXPayEntryActivity注册到AndroidManifest中.
注册WXPayEntryActivity时不需要这些的.
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="appid"/>
</intent-filter>
在这个类中你可以删除其余不要的各种代码,保留下图中代码即可
在微信的回调中有三个状态码
这里比较坑的就是这个-1了 ,很想吐槽一下这个”其他异常等 “,多几个errCode又不会少几斤肉….
总之遇到这个-1我的处理办法:
- 第一:必须是签名的包才可以,如果你直接在AndroidStudio中run那样是不可以的.
- 第二:查看提交给微信的应用签名和包名是否和你当前APP的签名和包名一致;
将签名生成工具安装在你的手机上,将你的应用安装在同一部手机上,输入包名,生成的签名去对比提交给微信的签名,如果不一致就修改成为一致的.
- 第三:如果你是在调试中,先清除你当前手机中微信的缓存数据,每次改动你都最好去清理一次缓存
- 第四:看看你的参数是否填写的正确.
到这里我们的微信支付就已经成功的接入了,如果我所述内容有错或者不恰当的地方欢迎各位指出.616494654@qq.com.