想必做过微信支付的都知道微信支付是一大坑。

这不是重点,重点是今天我们来如何解决问题,跳出这个大坑。

下面就来说说经常出现的几种问题:

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。