Closed chencong520 closed 1 year ago
- OS:linux - PHP:7.4 - wechatpay-php: use WeChatPay\Formatter; use WeChatPay\Crypto\Rsa; $merchantPrivateKeyFilePath = 'file:///path/to/merchant/apiclient_key.pem'; $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath); $params = [ 'appId' => 'wx8888888888888888', 'timeStamp' => (string)Formatter::timestamp(), <====这个地方在JS端使用wx.chooseWXPay({})方式调用的时候需要全部小写,要不然整个流程到了最后一步唤醒微信支付时提示签名验证失败。。。。 'nonceStr' => Formatter::nonce(), 'package' => 'prepay_id=wx201410272009395522657a690389285100', ]; $params += ['paySign' => Rsa::sign( Formatter::joinedByLineFeed(...array_values($params)), $merchantPrivateKeyInstance ), 'signType' => 'RSA']; echo json_encode($params);
见代码中的 箭头标注 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#58 官方描述 timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
误导了。。。。。
ps:官方 下次版本升级 是否可以提供一个完整的demo版本,就像微信刚出来的时候提供了一个官方demo,我们只需要输入官方给的参数信息,就可以把流程跑通,然后再进行代码改造融合进业务代码
运行环境
描述你的问题现象
见代码中的 箭头标注 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#58 官方描述 timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
误导了。。。。。
ps:官方 下次版本升级 是否可以提供一个完整的demo版本,就像微信刚出来的时候提供了一个官方demo,我们只需要输入官方给的参数信息,就可以把流程跑通,然后再进行代码改造融合进业务代码