说明文档里面的签名下面的代码 增加提示说明,要不然整个流程到了最后一步唤醒微信支付时提示签名验证失败。。。。
chencong520 opened this issue · 0 comments
chencong520 commented
运行环境
- 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,我们只需要输入官方给的参数信息,就可以把流程跑通,然后再进行代码改造融合进业务代码