前言

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

1、目前有2种类型的二维码

  • 临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景

  • 永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景

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

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

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

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

3、创建二维码ticket

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

4、临时二维码请求说明


http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

5、永久二维码请求说明

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

6、临时二维码和永久二维码生成实现的代码

//临时二维码public function getQrls()
{$accessToken = $this->_getWxAccessToken();$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}";$postArr =  ["action_name" => "QR_SCENE","expire_seconds" => 604800,"action_info" => ['scene' => ['scene_id' => 2000],],];$postJson = json_encode($postArr);$res = $this->ch($url, 'post', 'json', $postJson);$ticket = $res['ticket'];$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);echo "<img src='".$url."'>";}//永久二维码public function getQryj()
{$accessToken = $this->_getWxAccessToken();$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}";$postArr =  ["action_name" => "QR_LIMIT_SCENE","action_info" => ['scene' => ['scene_id' => 3000],],];$postJson = json_encode($postArr);$res = $this->ch($url, 'post', 'json', $postJson);$ticket = $res['ticket'];$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);echo "<img src='".$url."'>";}//url请求private function ch($url, $type='get', $res='json', $arr='')
{$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);if ($type == 'post') {curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);}$cnt = curl_exec($ch);if (curl_errno($ch)) {return;}curl_close($ch);if ($res == 'json') {return json_decode($cnt, true);}return $cnt;}

生成临时、永久二维码的图片这里就不放了,感兴趣的可以自己运行一下哈。

【黄啊码】PHP配合微信公众号生成推广二维码相关推荐

  1. 怎么实现微信公众号生成专属二维码推广来源统计

    为了实现微信公众号生成专属二维码推广来源统计功能,第三方平台微号帮提供了渠道二维码生成功能实现,可以给微信公众号在线生成专属推广二维码,统计公众号各个渠道来源的粉丝,一个渠道对应一个推广二维码,可以生 ...

  2. 微信公众号生成临时二维码

    微信公众号生成临时二维码 微信公众平台生成带参数的二维码官方文档 分为三个部分: 获取access_token.通过ticket换取二维码.生成带参数的二维码 特别注意:需要有生成二维码的权限. 整个 ...

  3. java_微信公众号扫码绑定个人信息(微信公众号场景值二维码的使用)

    看了一下网上关于公众号场景值二维码这方面的教程,基本上是微信官方开发文档的复制,没有具体实例.这里给出实例,并附加二维码url转文件流的方法. 思路: 1.后台传入个人信息保存,以个人信息的" ...

  4. 微信公众号带参数二维码的几个使用场景

    微信公众号官方开放了 "带参数二维码" 的功能,根据官网文档的描述,有如下的特点: 为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口. 通过 ...

  5. Yii实现微信公众号的场景二维码

    在Yii中实现场景二维码这里我使用的是easywechat插件,安装easywechat插件 composer require jianyan74/yii2-easy-wechat github地址: ...

  6. laravel生成微信公众号带参数二维码并响应扫描带参数二维码

    微信公众号后台ip白名单.网页接口域名之类的配置就不多说了,这里主要配置的是开发->基本配置->服务器配置(注:一旦启用改配置,公众号自动回复就会失效): 1.服务器地址(URL):这里要 ...

  7. 微信公众号带参二维码的生成以及后台Java的处理

    1.生成带参二维码 有两种方式,一是通过微信公众平台来生成,二是通过java代码生成 一:微信平台生成 首先进入公众平台,找到接口权限进入 进入后找到获取access_tocken接口,获取acces ...

  8. JAVA微信公众号开发之二维码的创建与获取

    微信文档说明 两种二维码: 1.临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量.临时二维码主要用于帐号绑定等不要求二维码永久保存的业务 ...

  9. 微信公众平台----带参数二维码生成和扫描事件

    原文:微信公众平台----带参数二维码生成和扫描事件 摘要: 账号管理----生成带参数的二维码 消息管理----接收消息----接收事件推送 为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众 ...

最新文章

  1. 利用classloader同一个项目中加载另一个同名的类_线程上下文类加载器ContextClassLoader内存泄漏隐患...
  2. 深入浅出全面解析RDMA
  3. mysql写入 cpu飙升_分析MySQL中索引引引发的CPU负载飙升的问题
  4. phpcms关于 {if} 判断后台是否上传{thumb} 缩略图 - 代码篇
  5. Python高级——Web静态服务器(面向对象)
  6. 多线程编程学习总结(转载)
  7. 杭电2066--一个人的旅行(Floyd)
  8. 了解 Adobe Scout 收集和使用的数据
  9. Mac聚焦搜索Spotlight搜不到文件怎么办?
  10. 奔腾4 2.4CPU计算机硬件能升级吗,CPU怎么升级啊
  11. 内存模拟块设备驱动程序设计
  12. 管理感悟:工作管理的两大要点
  13. 【C语言函数调用详解】——传值调用传址调用
  14. html5svg在线编辑器,HTML5 SVG简介
  15. linux网络操作系统项目教程课本,Linux网络操作系统项目式教程(CentOS7.6)-课后练习题.docx...
  16. Echarts图表之南丁格尔图
  17. echarts去除x轴和y轴上的刻度值_Echarts实现隐藏x轴,y轴,刻度线,网格
  18. 1380 D - Berserk And Fireball(思维,贪心)
  19. 第六节 ftpserver的安装与配置(Windows)
  20. 用户故事地图(User Story Mapping)之初体验

热门文章

  1. 信息系统项目管理师必背核心考点(七十二)V模型
  2. CH9121串口转以太网配置调试
  3. tensorflow——模型的保存和恢复tf.trian.saver()
  4. 程序员怎么从中国直接去美国工作?
  5. 物联网-位置信息、定位技术与位置服务
  6. 使用anaconda安装opencv包
  7. 游戏UI界面设计视频教程全套
  8. ARM——开发工具—编译器
  9. MATLAB基于形态学的目标检测(一)简单图形统计
  10. 在 Parallels Desktop 中,全屏模式使用 Win7,唤醒时黑屏