wechatpay-apiv3/wechatpay-php

说明文档里面的签名下面的代码 增加提示说明,要不然整个流程到了最后一步唤醒微信支付时提示签名验证失败。。。。

chencong520 opened this issue · 0 comments

运行环境

- 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,我们只需要输入官方给的参数信息,就可以把流程跑通,然后再进行代码改造融合进业务代码