扫码绑定微信(微信公众平台)

1,417 阅读1分钟

需求

用户点击绑定微信,弹出二维码,用户打开微信扫描二维码即可完成绑定。如果用户未关注公众号,则点击关注即可完成绑定。

步骤

  1. 后端生成带随机场景值的二维码
  2. 用户扫码或关注时会通知服务器,并附带openid
  3. 通过openid获取用户(可选)
  4. 前端轮询绑定结果

文档

实现

基于easywechat

生成带参数的二维码

use EasyWeChat\Factory;
​
// 一些配置
$config = [...];
​
// 使用配置来初始化一个公众号应用实例。
$app = Factory::officialAccount($config);
$result = $app->qrcode->temporary('bind', 6 * 24 * 3600);
​
// Array
// (
//     [ticket] => gQFD8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTmFjVTRWU3ViUE8xR1N4ajFwMWsAAgS2uItZAwQA6QcA
//     [expire_seconds] => 518400
//     [url] => http://weixin.qq.com/q/02NacU4VSubPO1GSxj1p1k
// )

微信事件推送

use EasyWeChat\Factory;
​
$config = [...];
​
$app = Factory::officialAccount($config);
$message = $app->server->getMessage();
​
if (isset($message['MsgType']) && $message['MsgType'] === 'event') {
    switch ($message['Event']) {
        case 'subscribe':
            // 处理用户订阅事件
            if ($message['EventKey'] === 'bind') {
                // todo
            }
            break;
        case 'SCAN':
            // 处理用户扫码事件
            if ($message['EventKey'] === 'qrscene_' . ’bind‘) {
                // todo
            }
            break;
    }
}
​
return $app->server->serve();

通过openid获取用户

use EasyWeChat\Factory;
​
$config = [...];
$app = Factory::officialAccount($config);
$message = $app->server->getMessage();
$openId = $message['FromUserName'];
$user = $app->user->get($openId);