w7corp / easywechat

📦 一个 PHP 微信 SDK
https://easywechat.com
MIT License
10.28k stars 2.4k forks source link

添加卡券时签名错误 #1096

Closed zacksleo closed 6 years ago

zacksleo commented 6 years ago

我用的环境

PHP 版本:7.1.3 overtrue/wechat 版本:4.0.8 是否使用了框架?框架名称:yii2

问题及现象

通过js-sdk, 批量添加卡券时出错,

$this->registerJsFile('https://res.wx.qq.com/open/js/jweixin-1.2.0.js');
$config = $app->jssdk->buildConfig(['addCard'], true);
$cards = [
    ['card_id' => $cardId , 'openid' => $openid],
];
$json = $app->card->jssdk->assign($cards); // 返回 json 格式
$js = <<<JS
wx.config($config);
$('#add-card').click(function(){
  wx.addCard({
    cardList: $json,
    success: function (res) {
      var cardList = res.cardList;
      var card = cardList[0];
      $('#member-card-form').submit();
    }
  });
});
JS;
$this->registerJs($js, \yii\web\View::POS_END);
?>
wx20180110-220830 2x

image

zacksleo commented 6 years ago

经查,https://github.com/overtrue/wechat/blob/master/src/OfficialAccount/Card/JssdkClient.php#L73 此处返回的配置信息,缺少nonce_str项,见官方文档:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

image