微信支付JS各种调试问题

 

一、    首先微信支付官方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无效

原因是微信设置的支付目录错误或者无效

原文地址:https://www.cnblogs.com/feimengv/p/4730264.html