如何查看系统中的libcurl版本?微信双向验证证书,返回xml格式错误有可能是什么原因?

在做微信的企业付款至银行卡功能,需要对商户证书做双向验证,我根据文档中的demo修改之后运行返回错误如下:

string(108) "<xml>
<return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[XML格式错误]]></return_msg>
</xml>"

我怀疑是系统libcurl版本的原因,服务器的系统是ubuntu,如何查看系统中的libcurl版本?

有没有大神做过求指点。

代码如下:

function certCheck($url='https://api.mch.weixin.qq.com/secapi/pay/refund',$vars='merchantid=1486229xxx',$second=30,$aHeader=array())
    {
        //$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';

        //证书地址 绝对路径 ROOT_PATH
        $certPath = ROOT_PATH . 'extend' . DS . 'cart' . DS . 'apiclient_cert.pem';
        $keyPath = ROOT_PATH . 'extend' . DS . 'cart' . DS . 'apiclient_key.pem';

        $ch = curl_init();
        //超时时间
        curl_setopt($ch, CURLOPT_TIMEOUT,$second);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

        //默认格式为PEM,可以注释
        curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
        curl_setopt($ch, CURLOPT_SSLCERT,$certPath);
        //默认格式为PEM,可以注释
        curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');
        curl_setopt($ch, CURLOPT_SSLKEY,$keyPath);


        if (count($aHeader) >= 1) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
        }

        curl_setopt($ch,CURLOPT_POST, 1);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $vars);
        $data = curl_exec($ch);

        if ($data) {
            curl_close($ch);
            return $data;
        } else {
            $error = curl_errno($ch);
            echo "call faild, errorCode:$error\n";
            curl_close($ch);
            return false;
        }
    }
阅读 5.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题