最新消息:世上无难事,只要肯放弃。

easywechat带参数二维码不支持字符串的问题

admin 852 次 0 条

在我使用easywechat开发的时候遇到一个小坑,当时的需求是要在二维码里面带上一些用户的id跟openid作为参数,我们都知道openid是一串字符串,我在后台处理扫码事件的时候发现怎么接收参数都是一个整数,我需要的openid并没有传过来,开始我以为是微信做了限制不能在二维码里面带openid,后来在我翻阅easywechat底层源码的时候发现原来是他们根本没有做这一个临时参数二维码带字符串的功能,后来小小的改动了一下也是完美的解决了这个问题。

找到 vendor/overtrue/wechat/src/QRCode/QRCode.php这个文件
新增一个常量 const SCENE_QR_TEMPORARY_STR = 'QR_STR_SCENE'; 这个值是按微信官方文档来的不能随便设
接下来找到72行的temporary方法只需要简单的修改一下

    public function temporary($sceneId,$expireSeconds = null)
    {
        if (is_int($sceneId) && $sceneId > 0 && $sceneId < self::SCENE_MAX_VALUE) {
            
            $scene = ['scene_id' => intval($sceneId)];
            return $this->create(self::SCENE_QR_TEMPORARY, $scene, true, $expireSeconds);

        } else {
            $scene = ['scene_str' => $sceneId];
            return $this->create(self::SCENE_QR_TEMPORARY_STR, $scene, true, $expireSeconds);
        }

    }
发表我的评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址