赞
踩
微信支付的接口文件demo一拿到,就放到的服务器上测试,首先打开,把对应的参数配置好,打开一看第一个错误就出现了
微信支付示例接口一打开就报了这样的错误
Notice: Use of undefined constant CURLOP_TIMEOUT - assumed 'CURLOP_TIMEOUT' in /wx_pay_test/WxPayPubHelper/WxPayPubHelper.php on line 155
Warning: curl_setopt() expects parameter 2 to be long, string given in wx_pay_test/WxPayPubHelper/WxPayPubHelper.php on line 155
一下就懵了,仔细打开源码一看,文件中在155行这里设置超时的时候,本来应该是
curl_setopt($ch, CURLOPT_TIMEOUT, $second);
可是接口中的文件却是这样的
curl_setopt($ch, CURLOP_TIMEOUT, $second);
哈哈,设置参数的字母写错了,修改这里,两条报错消失。
169行起 //运行curl $data = curl_exec($ch); curl_close($ch); //返回结果 if($data) { curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "curl出错,错误码:$error"."<br>"; echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>"; curl_close($ch); return false; }
仔细查看发现腾讯官方的开发人员也太粗心了,在注释返回结果前面的那一行,已经将$ch连接关闭了,后面的if..else语句中又对它进行了关闭操作,很明显,第二次调用的时候这个连接已经不存在了,必然会报错啊。
解决方法很简单,直接将注释返回结果前面的那一行注释掉即可。
修改后的代码如下:
169行起 //运行curl $data = curl_exec($ch); //curl_close($ch); //返回结果 if($data) { curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "curl出错,错误码:$error"."<br>"; echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>"; curl_close($ch); return false; }
运行结果出来了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。