微信支付统一下单接口返回的必须类似是 wx18150336246279f98d3de78d1950474601 的一串,才算统一下单成功了。
首先一定要检查商户号的密钥是否正确,然后查看请求 https://api.mch.weixin.qq.com/pay/unifiedorder 接口的错误回调。
如果错误信息是 60 ,就是 效验SSL失败,php的解决方法是在curl 中添加
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //不验证 SSL 证书
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);//不验证 SSL 证书域名
完整网络请求代码封装示例:
/* 发送json格式的数据,到api接口 -xzz0704 */
function https_curl_json($url,$data){
$curl = curl_init();
//设置url
curl_setopt($curl, CURLOPT_URL,$url);
//设置发送方式:post
curl_setopt($curl, CURLOPT_POST, true);
//试试手气新增,增加之后 curl 不报 60# 错误,可以请求到微信的响应
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //不验证 SSL 证书
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);//不验证 SSL 证书域名
//设置发送数据
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
//TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$return_xml = curl_exec($curl);
//关闭cURL资源,并且释放系统资源
curl_close($curl);
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
//先把xml转换为simplexml对象,再把simplexml对象转换成 json,再将 json 转换成数组。
$value_array = json_decode(json_encode(simplexml_load_string($return_xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
$return_xml = $value_array['prepay_id'];
if ($return_xml) {
return $return_xml;
} else {
$error = curl_errno($curl);
return "curl error, error code ".$error;
//throw new WxPayException("curl出错,错误码:$error");
}
}
小程序和后端完整代码链接 php后端的