【推荐理由】赠运费险
【优惠券】20 【券后价】59.00
【下单链接】18¥ CZ0001 G5fHdEqOsnB¥
温州天时网站建设经过多方查证无果,初步判断为curl方面的错误。就是抓取服务器端数据可能出现了状况。
后来在微信支付的官方文档里面有一个“注意事项”链接如下https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_2
注意事项的第一条发现了一个重要信息。原文摘抄如下:
1、服务器SSL版本说明
由于低版本的SSL存在高危漏洞,需要确认您系统所使用的SSL版本是否需要升级,详细说明请见公众平台SSL安全策略说明:https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1414562353&version=11&lang=zh_CN
ThinkPHP集成微信支付代码:
Vendor("WxpayAPI_php_v3.lib.WxPay","",".Api.php"); //vendor("WxpayAPI"); //初始化值对象 WxPayUnifiedOrder $input = new \WxPayUnifiedOrder(); //文档提及的参数规范:商家名称-销售商品类目 $input->SetAppid($appId); $input->SetMch_id(C("mch_id"));//商户号 $input->SetBody( "uid:".$insData["uid"]. "--crom_id:".$insData['crom_id']. "--starttime:".$insData['starttime']. "--endtime:".$insData['endtime']. "--zs_jiner:".$insData['zs_jiner']. "--totaltime:".$insData['totaltime']. "--gbeizhu:".$insData["gbeizhu"]); //订单号应该是由小程序端传给服务端的,在用户下单时即生成,demo中取值是一个生成的时间戳 $input->SetOut_trade_no($odbhao); //费用应该是由小程序端传给服务端的,在用户下单时告知服务端应付金额,demo中取值是1,即1分钱 $input->SetTotal_fee($insData['zs_jiner']); $input->SetNotify_url(C("Notify_URL")); $input->SetTrade_type("JSAPI"); //由小程序端传给服务端 $input->SetOpenid($openId); //向微信统一下单,并返回order,它是一个array数组 $order =\WxPayApi::unifiedOrder($input); $data=array("result"=>'ok',"orderId"=>$thisId,"orderArr"=>$order,"mch_key"=>C("mch_key"));
修改方案:
在WxPay.Api.php 文件中找到如下代码(约538行),可以做直接搜索一下代码:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
修改为:
if(stripos($url,"https://")!==FALSE){ curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); } else { curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验 }
经过温州天时网站建设实际测试,完美解决问题。