一、 首先微信支付官方demo中就有错误导致无法正常支付,我能说脏话吗?
a) 微信支付 curl出错,错误码:60
1.第一个问题,这个问题完全是微信团队的问题,给出的example就是错的:
Warning: curl_setopt() expects parameter 2 to be long, string given in D:wwwrootweixinpaytestpayWxPay.JsApiPay.php on line 99
找到WxPay.JsApiPay.php文件的99行,curl_setopt($ch, CURLOP_TIMEOUT, 30);
微信团队example代码里少了一个“T”,正确代码应该是 curl_setopt($ch, CURLOPT_TIMEOUT, 30);
这样,这一个问题就解决了
b) 微信支付 curl出错,错误码:60
atal error: Uncaught exception ‘WxPayException‘ with message ‘curl出错,错误码:60‘ in D:wwwrootweixinpaytestlibWxPay.Api.php:564 Stack trace: #0 D:wwwrootweixinpaytestlibWxPay.Api.php(62):
WxPayApi::postXmlCurl(‘<xml><appid><![...‘, ‘https://api.mch...‘, false, 6) #1 D:wwwrootweixinpaytestpayjsapi.php(36):
WxPayApi::unifiedOrder(Object(WxPayUnifiedOrder)) #2 {main} thrown in D:wwwrootweixinpaytestlibWxPay.Api.php on line 564
这个错误通过修改文件WxPay.Api.php 解决,具体如下:
第537行
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
改:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验2
二、 微信支付问题$key0错误$key0$get_brand_wcpay_request:fail
问题出在网页端调起支付API接口中timeStamp参数,必须是string类型,但是php默认生成的时间戳是int类型。
解决方法就是修改下 lib/Wxpay.Data.php约2731行处SetTimeStamp方法,修改为 $this->values['timeStamp'] = (string)$value;
三、 微信支付appid无效$get_brand_wcpay_request:appid无效
原因是微信设置的支付目录错误或者无效