微信支付(wechat_sdk_sample_android_v3_pay)
第一次做微信支付,真是坑爹,足足花了我一天的时间,本来这个功能是同事做的,但是我想学习一下就拿着现有资料就实现一下,真想说,一个字,坑,两个字好坑,对于粗心的人直接把官方的demo复制一遍算了,免得费那个力气,微信支付主要有以下三点:
- 第一步:访问微信服务端生成微信预支付订单号,拿到它,我们下一步用
- 第二步:装载要调起微信支付的必备参数,包含上一步的预支付订单号
- 第三步:调起微信客户端支付
-注意:您在做微信支付开发时,必须要去 [ 微信开放平台 ]申请账号,创建应用,填上正式的包名和签名,获取app微信支付接入资格,其中还要交300大洋通过审核后才有权利创建应用,拿到AppID和AppSecret
微信支付失败需注意的点:
原因一要想支付成功,就必须打个正式签名的包
原因二就是之前您的手机上装了微信客户端,然后运行了debug的包,然后你再装正式包,这个时候微信把你的debug签名缓存了,所以死活调不起来,解决办法就是把微信客户端和您的apk卸载重装或者清除缓存,清除缓存的方式据说可以,我没试过,你们试试,手机的设置–>应用–>应用列表—>找到微信,清除数据就好了,万一不行就卸载把。
原因三就是你在微信开放平台的配置信息更改过,微信服务器没刷新您的数据,比如说:您之前填了个错误的包名,现在你改成正确的了,然后就死活也调不起微信支付,这个时候你该怀疑微信服务器了,去开放平台把配置信息填成错误的,等半小时后再填写成正确的。
原因四就是的代码的问题,在生成预支付订单号的时候,需要发送post请求拿预支付订单号,需要传参数,参数开放平台说必填的就一定要有,然后参数顺序要和官方的一致,类型必须一致,然后不能改变大小写,微信参数key是大写你就大写,人家是小写你就小写,否则会生成预支付订单失败,就是微信咋样你就必须咋样,一丁点的变化都不可以有。
原因五就是你在AndroidManifest.xml的配置,微信支付完成后会回调到我们的应用,这个回调的类名必须是WXPayEntryActivity,并且它还必须在package下面,比如我的包名是com.group.mall,它就必须在com.vinjoy.mall包下。
第一步判断是否安装微信客户端(没安装的不能唤起微信支付)
private boolean isWXAppInstalledAndSupported(IWXAPI api) {
Boolean sIsWXAppInstalledAndSupported = api.isWXAppInstalled()&& api.isWXAppSupportAPI();
if (!sIsWXAppInstalledAndSupported) {
Toast.makeText(PaymentActivity.this, "微信客户端未安装,请确认", 1).show();
}
return sIsWXAppInstalledAndSupported;
}
第二步生成预支付订单号
//生成预支付订单号必须传的参数
//发送post请求拿到微信返回给我们的预支付订单号
第三步生成预支付订单,唤起微信
//通过微信返回给我们的预支付订单号在微信生成预支付订单
第四步就可以看到付款页面了付钱
付完钱就会进入您写的回调页面
由于微信支付涉及到商家信息,所以这里不方便给源码,若有任何技术问题,请入
QQ群:234456543