最近(2016.3)做了第三方支付的接入开发,支付宝没有什么曲折,逻辑清晰,对接容易。然而对接微信支付,却是大坑小坑接踵而来。
在网上搜索相关问题时,发现大家对微信的吐槽真是不断。罗列一下开发需要注意的地方,大家也好对号入坑。
1.关于测试时不调用微信,而直接返回-1的情况
-申请微信支付需要上传我们的应用签名,包名。签名大家一定不要上传错误了,因为微信支付的测试,需要我们对应用进行打包测试,要使用对应的keyStore进行打包。如果签名不正确,测试会返回-1的结果
-在跟微信服务器进行通信时,需要注册我们的应用,wxApi.registerApp(Constants.WXAPP_ID);参数是微信为我们分配的appId.
-微信建议开发者在服务器端生成预支付订单(调用他们的统一下单接口),生成预支付订单后会将预支付参数返回给开发者的服务器,开发者再将预支付参数经过签名返回给app,由app调起微信支付。如果签名或者参数错误,也是会返回-1的。
2.关于调用函数wxApi.sendReq(request)向微信发起支付请求无返回的情况
-接收微信支付的返回,要求我们建一个 *.wxapi的包,包下包含类WXPayEntryActivity.java(继承Activity,实现微信IWXAPIEventHandler接口),如果包名类名不同,是接收不到返回的。另外关于这个类的相关配置大家参考Demo即可。
-友盟分享中微信SDK冲突,也会导致无法调起微信支付。