2 lasgalen Lasgalen 于 2016.02.03 20:16 提问

php,微信扫码支付开发,在部分电脑上测试,出现invalid spbill_create_ip错误

最近在做支付的开发,微信网页扫码支付,语言是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”

不知道该如何解决?

请教各位前辈!如果有遇到过这个问题或者类似问题的前辈,希望能够给我一些指点。谢谢!

3个回答

caozhy
caozhy   Ds   Rxr 2016.02.03 21:27

spbill_create_ip 订单生成的机器IP
看看是不是没有正确获取这些机器的ip。

输出的$ip变量是string '::1' (length=3)
这是你在本地计算机上调试的时候产生的本机ip。外网访问不会是::1

wangyanzhi
wangyanzhi   2016.04.01 09:18

我也遇到这个问题,据说是ipv4和ipv6的问题,我也不是很懂了,我是在这个地方改的$this->parameters["spbill_create_ip"] = gethostbyname($_ENV['COMPUTERNAME']) ;//获取终端ip
不知道是不是正确,反正可以用了,有很多开发上的问题能交流就好了

jinyulong84
jinyulong84 貌似是 外网访问就可以,本机调试就会出这问题,奇怪
一年多之前 回复
jinyulong84
jinyulong84   2016.06.03 16:22

终于搞明白怎么回事
使用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错误

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!