PHP.支付宝手机支付接口错误 ALI14

  最近在做一个php网站的 支付宝手机端支付时,遇到一个很奇怪的问题。手机支付时 一直显示 “订单处理失败,请稍后再试(ALI14)”。

PHP.支付宝手机支付接口错误 ALI14_第1张图片

然后也确认支付接口相关的文件也没什么问题。然后在网上搜索 也搜不出什么结果。无奈 只能自己一点一点的调试了。

首先从 支付宝跳转的连接中,发现request_token的参数是空的,然后顺藤摸瓜找到了 支付宝接口中getHttpResponseGET()方法有问题。

然后就简单了,找到这个方法:

function getHttpResponseGET($url,$cacert_url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 过滤HTTP头
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 显示输出结果
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL证书认证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//严格认证
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//证书地址
$responseText = curl_exec($curl);
//var_dump( curl_error($curl) );//如果执行curl过程中出现异常,可打开此开关,以便查看异常内容
curl_close($curl);

return $responseText;
}

打开调试后 发现curl有问题: 

Problem (2) in the Chunked-Encoded data

然后在网上 搜索这个问题 就找到了解决方法:

在curl_exec()之前添加
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);

你可能感兴趣的:(PHP.支付宝手机支付接口错误 ALI14)