最近在做支付的开发,微信网页扫码支付,语言是php。
在本地开发和测试很顺利,在大部分电脑上测试也正常。但是在某几台电脑上测试时,执行到微信统一下单一步时,会返回错误信息“invalid spbill_create_ip”。
试了两种方案:
1、用$ip = Request::getClientIp(true);获取IP。
输出的$ip变量是string '::1' (length=3)
2、指定$ip = '192.168.1.1';
输出的$ip变量是string '192.168.1.1' (length=11)
两种方案都是报同样的错“invalid spbill_create_ip”
不知道该如何解决?
请教各位前辈!如果有遇到过这个问题或者类似问题的前辈,希望能够给我一些指点。谢谢!
spbill_create_ip 订单生成的机器IP
看看是不是没有正确获取这些机器的ip。
输出的$ip变量是string '::1' (length=3)
这是你在本地计算机上调试的时候产生的本机ip。外网访问不会是::1
我也遇到这个问题,据说是ipv4和ipv6的问题,我也不是很懂了,我是在这个地方改的$this->parameters["spbill_create_ip"] = gethostbyname($_ENV['COMPUTERNAME']) ;//获取终端ip
不知道是不是正确,反正可以用了,有很多开发上的问题能交流就好了
终于搞明白怎么回事
使用localhost访问会出现此问题,使用127.0.0.1访问不会出现此问题
ping localhost发现地址为::1
参考文章http://www.cnblogs.com/hayywcy/p/5341550.html
WIN10 LOCALHOST 解析为 IPV6地址 ::1 的解决办法
打开注册表,找到键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters ,添加类型为DWORD 名字为 DisabledComponents 的项(已经有了的不用添加直接改值)。然后修改值为20,值类型为16进制 。
补充一下 DWORD是32位
重启电脑后, PING LOCALHOST恢复127.0.0.1
再调试微信支付不会出现invalid spbill_create_ip错误