为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

目前有2种类型的二维码:

1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

用户扫描带场景值二维码时,可能推送以下两种事件:

如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。

获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

注意
expire_seconds 该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
action_name 二维码类型,QR_SCENE为临时的整型参数值,QR_STR_SCENE为临时的字符串参数值,QR_LIMIT_SCENE为永久的整型参数值,QR_LIMIT_STR_SCENE为永久的字符串参数值
action_info 二维码详细信息
scene_id 场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1–100000)
scene_str 场景值ID(字符串形式的ID),字符串类型,长度限制为1到64

<?php
namespace app\api\model;
set_time_limit(30);class WxQrcode{//构造方法static $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?";static $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";static $qrcode_get_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?";//生成二维码public function getEwm($fqid,$type = 1){$appid = '你的appid';$secret = '你的secret';$ACCESS_TOKEN = $this->getToken($appid,$secret);$url = $this->getQrcodeurl($ACCESS_TOKEN,$fqid,$type);save_log('测试保存的路径'.$url.'fid'.$fqid);return $this->DownLoadQr($url,time());}protected function getQrcodeurl($ACCESS_TOKEN,$fqid,$type = 1){$url = self::$qrcode_url.'access_token='.$ACCESS_TOKEN;if($type == 1){//生成永久二维码$qrcode= '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_str": '.$fqid.'}}}';}else{//生成临时二维码$qrcode = '{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": '.$fqid.'}}}';}$result = $this->http_post_data($url,$qrcode);$oo = json_decode($result[1]);if (empty($oo->ticket)){return false;}if(!$oo->ticket){$this->ErrorLogger('getQrcodeurl falied. Error Info: getQrcodeurl get failed');exit();}$url = self::$qrcode_get_url.'ticket='.$oo->ticket.'';return $url;}protected function getToken($appid,$secret){$ACCESS_TOKEN = file_get_contents(self::$token_url."appid=$appid&secret=$secret");$ACCESS_TOKEN = json_decode($ACCESS_TOKEN);$ACCESS_TOKEN = $ACCESS_TOKEN->access_token;return $ACCESS_TOKEN;}protected function http_post_data($url, $data_string) {$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8','Content-Length: ' . strlen($data_string)));ob_start();curl_exec($ch);if (curl_errno($ch)) {$this->ErrorLogger('curl falied. Error Info: '.curl_error($ch));}$return_content = ob_get_contents();ob_end_clean();$return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);return array($return_code, $return_content);}//下载二维码到服务器protected function DownLoadQr($url,$filestring){if($url == ""){return false;}$filename = $filestring.rand(0,99999999999).'.jpg';ob_start();readfile($url);$img=ob_get_contents();ob_end_clean();$size=strlen($img);$fp2=fopen('static/qrcode/'.$filename,"a");if(fwrite($fp2,$img) === false){$this->ErrorLogger('dolwload image falied. Error Info: 无法写入图片');exit();}fclose($fp2);return 'static/qrcode/'.$filename;}//错误日志private function ErrorLogger($errMsg){$logger = fopen('log.txt', 'a+');fwrite($logger, date('Y-m-d H:i:s')." Error Info : ".$errMsg."\r\n");fclose($logger);}}

廖圣平博客整理
参考微信官方文档

php微信生成微信公众号二维码扫描进入公众号带参数相关推荐

  1. 制作微信公众号二维码,跳转,获取参数

    1.我在pc端使用qrcodejs2插件,你只需要把服务器地址填入进去就好了,后面参数你可以拼接(唯一注意的点是url的长度) 2.获取二维码(也就是url)传递过来的参数 //获得url let u ...

  2. 怎么获取公众号二维码?

    如果是公众号的管理员,当然可以从微信公众平台直接下载二维码,但这里我要说的场景是:不是公众号的管理员,怎么获取公众号的二维码(且获取到的二维码都是静态的,不带参数的). 使用场景 首先解释一下为什么要 ...

  3. 微信公众号二维码怎么生成?好用的生成方法介绍

    微信公众号二维码怎么生成?从事新媒体行业的小伙伴们应该都对微信公众号不陌生吧,公众号是一个企业对外宣传的重要方式之一.通常情况下我们都会将公众号的二维码放置在文章的文末.以便于读者扫码关注公众号.那么 ...

  4. 根据微信号,生成微信公众号二维码

    第一步:获取公众号的微信号(公众号微信号默认是没有设置的,需要设置后才有) 第二步:使用官网地址,生成公众号二维码 从微信官方获取微信公众号名片:https://open.weixin.qq.com/ ...

  5. 微信公众号二维码海报自动生成,海报通推广有绝招

    公众号二维码海报自动生成,使用公众号开发接口生成带参数的二维码和获取用户基本信息(UnionID机制)实现海报通的效果,在自己的服务器上部署就可以,也可以直接使用微号帮平台生成海报二维码. 1.生成海 ...

  6. 生成微信公众号二维码(用户扫码关注公众号)

    1.token 文件 /*** https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=1 ...

  7. 微信公众号 二维码场景统计 场景二维码

    之前接到了一个项目,要求在关注公众号的用户,推广下个用户,实行奖励模式(只有两级!).然而,一脸懵,网站开发推广生成二维码,我知道怎么做,大不了记录用户Id,生成二维码,扫描的时候,获取用户Id,然后 ...

  8. 关注微信公众号二维码可以带参数吗?

    2019独角兽企业重金招聘Python工程师标准>>> 需求是这样的,用户可以分享自己的微信二维码,别人扫码进入,能监测到.功能怎么实现呢? 通过微号帮平台可以实现,微信公众平台接口 ...

  9. 专属微信二维码python制作_如何利用Python制作简单的公众号二维码关注图

    创意配图:微信,微信公众号,微信大V 而且最近发现了一个新的图像处理方面的库-Wand,它是 ImageMagick 库的 Python 接口.于是,我就打算用这个库来实现简单的制作一个二维码关注图, ...

最新文章

  1. 7.3 rpm工具用法
  2. 一文告诉你,为什么要研究JVM原理
  3. zblog文件大小超出,上传成功但插入不了
  4. ant构建项目迁移到gradle_自动化构建、自动化部署发布一览
  5. linux中断的上半部和下半部
  6. php+反序列化代码执行漏洞,PHP反序列化漏洞
  7. 2.x最终照着教程,成功使用OpenGL ES 绘制纹理贴图,添加了灰度图
  8. eclipse下生成Java类图和时序图,生成UML图
  9. Scala初步学习(二)
  10. python的设计具有很强的可读性_Python是什么?具有怎么样的特点呢?
  11. WinXP中自带的netsh命令自动切换IP(zz)
  12. MySQL-数据库基础
  13. springboot Validation
  14. 网易的java微专业_网易微专业Java高级架构师
  15. python远程监控服务器多个日志_flume远程监控一个文件
  16. 我的世界java地狱更新_【我的世界】我得世界:1.16地狱大年夜更新_玩得好游戏攻略...
  17. java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例
  18. C# 修改本地以太网ip地址
  19. 阿里 前端 规范_阿里前端开发规范
  20. 【文献翻译】Network Security Entity Recognition Methods Based on the Deep Neural Network

热门文章

  1. css3中-moz、-ms、-webkit、-o 各是什么意思
  2. 数字图像处理实验之伽马变换
  3. JACTF misc wp
  4. PS制作心跳二维码动画 学会后能增加粉丝关注率哦
  5. 手机计算机数字游戏怎么玩,计算器游戏攻略
  6. 视频教程-网络安全与渗透测试工程师-渗透测试
  7. 苹果电脑App Store下载失败
  8. 开启运维自动化架构师成长之路
  9. 通过添加dns加速访问app store
  10. w3wp ash oracle,Oracle session简介