一个空格引发的问题

微信支付成功,更改订单状态本来用curl调用java接口已经调通,后来需求变成了多店支付问题,然后也因为多个环境来回切换便弄了多个文件,通过软连接形式调用,发现总是更改订单状态失败

$oIdAndPId=$arr['out_trade_no'];
$domain=" http://xxx.beta.xxx.com/trade/getOrderStatusByP";
$_url = $domain."?out_trade_no=".$oIdAndPId;//这里out_trade_no就是给java传递的paymentId去更改payment表的支付状态
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS);
$output = curl_exec($ch);
$a=curl_errno($ch);
if($a) {
    return curl_error($ch);
} else {
    $ret = json_decode($output, true);
    if ($ret['status'] == 0) { 
        file_put_contents("/server/logs/notify_success.txt", "_url ={$_url} \t  \t output_success=" . var_export($output, true) . "\t date=" . date('Y-m-d H:i:s', time()) . " \r\n", FILE_APPEND);
        return true;
     } else {
        file_put_contents("/server/logs/notify_fail.txt", "_url ={$_url} \t  \t output_fail=" . var_export($output, true) . "\t date=" . date('Y-m-d H:i:s', time()) . " \r\n", FILE_APPEND);
        return false;
     }
 }

1、记录日志发现$a输出错误码1

CURLE_UNSUPPORTED_PROTOCOL(1)

你的URL传递给libcurl的使用协议,这libcurl的不支持。支持可能是你没有使用一个编译时的选项,它可以是一个拼写错的协议字符串,或者只是一个协议的libcurl没有代码。

$ch = curl_init();发现输出null

根本不知道说的啥意思,然后百度说看phpinfo()查看是否安装curl相关类库,输出发现有,也不是这个问题,而且在其他文件写了简单的demo测试发现能使用curl
2、怀疑接口不是用post方式传输,改成get了,尝试把curl_setopt($ch, CURLOPT_POST, 1);去掉或者改为0发现还是不可以

3、 查看连接curl具体错误,获取一个cURL连接资源句柄的信息

  $info  = curl_ getinfo( $ch ); 

返回如下代码:

array (
  'url' => '     http://xxx.beta.xxx.com/trade/getOrderStatusByP?out_trade_no=1349161_309712298',
  'content_type' => NULL,
  'http_code' => 0,
  'header_size' => 0,
  'request_size' => 0,
  'filetime' => -1,
  'ssl_verify_result' => 0,
  'redirect_count' => 0,
  'total_time' => 0,
  'namelookup_time' => 0,
  'connect_time' => 0,
  'pretransfer_time' => 0,
  'size_upload' => 0,
  'size_download' => 0,
  'speed_download' => 0,
  'speed_upload' => 0,
  'download_content_length' => -1,
  'upload_content_length' => -1,
  'starttransfer_time' => 0,
  'redirect_time' => 0,
  'certinfo' => 
  array (
  ),
  'primary_ip' => '',
  'redirect_url' => '',
)

发现content_type为null,添加如下代码

$header[] = "Content-type: application/x-www-form-urlencoded";
curl_setopt($oCurl, CURLOPT_HTTPHEADER,$header);

还是不可以
4、发现软连接文件所属组和所有用户不对,其他的都是develop,只有这个文件是root

aa.png

更改了所有组和所有者发现还是不可以
5、回想这次和上次的变化,应该只有软连接这块,然后对比之前文件方法,发现双引号中间有个空格,然后去掉发现可以

$domain=" http://mobile.beta.yiwang.com/trade/getOrderStatusByP";

然后看curl_errno($ch);输出的提示
你的URL传递给libcurl的使用协议,这libcurl的不支持。支持可能是你没有使用一个编译时的选项,它可以是一个拼写错的协议字符串,或者只是一个协议的libcurl没有代码。

你可能感兴趣的:(一个空格引发的问题)