需求
用户点击绑定微信,弹出二维码,用户打开微信扫描二维码即可完成绑定。如果用户未关注公众号,则点击关注即可完成绑定。
步骤
- 后端生成带随机场景值的二维码
- 用户扫码或关注时会通知服务器,并附带openid
- 通过openid获取用户(可选)
- 前端轮询绑定结果
文档
实现
生成带参数的二维码
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);