想必做过微信支付的都知道微信支付是一大坑。
这不是重点,重点是今天我们来如何解决问题,跳出这个大坑。
下面就来说说经常出现的几种问题:
1.url未注册
:公众平台配置支付授权目录(配置到支付页面的上层)
2.缺少参数或参数错误total_fee
:setParameter("total_fee", "1"); //商品金额,以分为单位
3.签名错误
:注意签名参数的大小写,支付密钥key要到商户平台设置,设置的规则是32位数字与字母大小写的组合(不能随便填写,用在线工具生产)。
:body有中文时注意转码 首先换成英文试试看是不是编码问题
:参与签名生成的xml文件格式是否正确
4.xml数据格式错误
5.没有支付权限
:检查该公众帐号是否已经获取了支付资格。
6.redirect—uri参数错误
:请进入公众平台-开发者中心,找到填写商户的支付授权域名,填写的就是商户支付授权目录上的域名。
7.get_brand_wcpay_request:fail
:签名错误(签名参数的大小写),请仔细检查签名
8.jsapi 缺少参数 key0
:问题出在网页端调起支付API接口中timeStamp参数,必须是string类型,但是php默认生成的时间戳是int类型。
解决方法:修改下lib/Wxpay.Data.php约2731行处SetTimeStamp方法,修改为$this->values['timestamp'] = (string)$value;
9.错误返回“-1”
:开放平台配置的报名和应用签名是否一致:(android);确认是否使用正式的keystore打包apk并安装调试;(android);提交订单部分需要在服务器端完成。
10、网络环境未能通过安全验证,请稍后再试(IP改变导致的)
11、商家参数格式有误,请联系商家解决(H5支付的referer为空导致)
12、商家存在未配置的参数,请联系商家解决(H5支付的域名问题)
13、支付请求已失效,请重新发起支付(有效期为5分钟)
14、请在微信外打开订单,进行支付(H5支付不能直接在微信客户端内调起)
这里只是列举了一些常见的问题,更多可以参考微信官方文档https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1
如遇到问题欢迎进群308742428。