微信接口生成带参数的二维码


Posted in PHP onJuly 31, 2017

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

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

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

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

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

(I)首先创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id)。

/** 
 * 首先创建二维码ticket 
 * @param string $sceneid 场景值ID 
 * @param string $type 值为'temp'的时候生成临时二维码 
 * @param string $expire_seconds 二维码过期时间 
 * @return string 二维码ticket 
 */ 
public function _getTicket($sceneid,$type='temp',$expire_seconds=604800){ 
 if($type=='temp'){ 
  $data = '{"expire_seconds": %s, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": %s}}}'; 
  $data = sprintf($data,$expire_seconds,$sceneid); 
 }else{ 
  $data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": %s}}}'; 
  $data = sprintf($data,$sceneid); 
 } 
 $curl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$this->_getAccessToken(); 
 $content = $this->_request($curl,true,'POST',$data); 
 $cont = json_decode($content); 
  
 return $cont->ticket; 
}

(II)然后凭借ticket到指定URL换取二维码

获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。

//然后凭借ticket到指定URL换取二维码 
public function _getQRCode($sceneid,$type='temp',$expire_seconds=604800){ 
 $ticket = $this->_getTicket($sceneid,$type,$expire_seconds); 
 $curl = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket); 
 $content = $this->_request($curl); 
 return $content; 
}

调用输出:

header('Content-type:image.jpeg'); 
$result = $wechat->_getQRCode(30); 
echo $result;

总结

以上所述是小编给大家介绍的微信接口生成带参数的二维码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php 采集书并合成txt格式的实现代码
Mar 01 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
Jul 03 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP通过串口实现发送短信
Jul 08 PHP
php无序树实现方法
Jul 28 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
Dec 24 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
Sep 01 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
PHP设计模式(五)适配器模式Adapter实例详解【结构型】
May 02 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 #PHP
PHP中TP5 上传文件的实例详解
Jul 31 #PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 #PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 #PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 #PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 #PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 #PHP
You might like
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
Linux编译升级php的详细方法
2013/11/04 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
php实现记事本案例
2020/10/20 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
js判断字符长度以及中英文数字等
2013/12/31 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
vue实现购物车小案例
2019/09/27 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
Python调用SQLPlus来操作和解析Oracle数据库的方法
2016/04/09 Python
深入解析Python的Tornado框架中内置的模板引擎
2016/07/11 Python
python Celery定时任务的示例
2018/03/13 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
刮痧观后感
2015/06/05 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
新手初学Java List 接口
2021/07/07 Java/Android
windows10 家庭版下FTP服务器搭建教程
2022/08/05 Servers