原因:
之前稳定运行一段时间的微信H5支付,突然报错:“由于商家传入的H5交易参数有误 该笔交易暂时无法完成 请联系商家解决”。
经过多方排查,最终确定是微信下单的ip传递有误。上传的ip为“127.0.0.1”,这个ip微信H5支付的时候是不认的,如果不传也是同样的报错。
解决办法:
在下单接口传入真实客户端IP即可
$inputObj->SetSpbill_create_ip($_SERVER['REMOTE_ADDR']);//终端ip
如果仍然没有解决,参考官方文档给出:
在有代理的情况下,因为要代替客户端去访问服务器,所以,当请求包经过反向代理后,在代理服务器这里这个IP数据包的IP包头做了修改,最终后端WEB服务器得到的数据包的头部源IP地址是代理服务器的IP地址。这样一来,后端服务器的程序就无法获取用户的真实ip。
nginx有代理的情况:
在nginx中配置中加入
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Apache有代理的情况:
vi /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-remoteip.conf
vi /usr/local/apache/conf/extra/httpd-remoteip.conf
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1
无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。