微信支付timeStamp invalid

来源:互联网 发布:app下载软件 编辑:程序博客网 时间:2024/06/12 01:24

今天做微信支付,js版本的,是基于官方提供的php sdk

正确配置完后,点击支付,提示timeStamp invalid,起初以为是本地时间和服务器时间不一致,所以重启校准了一下时间,但还是有问题,于是查看sdk代码,在WxPay.jsApiPay.php的GetJsApiParameters中看到timeStamp参数。

原代码是

$timeStamp = time();

后来查看文档说timeStamp参数应该为字符串,因为看到sdk demo里有用到date("YmdHis")

所以代码改成如下:

public function GetJsApiParameters($UnifiedOrderResult){if(!array_key_exists("appid", $UnifiedOrderResult)|| !array_key_exists("prepay_id", $UnifiedOrderResult)|| $UnifiedOrderResult['prepay_id'] == ""){throw new WxPayException("参数错误");}$jsapi = new WxPayJsApiPay();$jsapi->SetAppid($UnifiedOrderResult["appid"]);<span style="color:#ff6666;">$timeStamp = date("YmdHis");</span>$jsapi->SetTimeStamp($timeStamp);$jsapi->SetNonceStr(WxPayApi::getNonceStr());$jsapi->SetPackage("prepay_id=" . $UnifiedOrderResult['prepay_id']);$jsapi->SetSignType("MD5");$jsapi->SetPaySign($jsapi->MakeSign());$parameters = json_encode($jsapi->GetValues());return $parameters;}

点击支付,成功通过。埋坑完毕:)

0 0
原创粉丝点击