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


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 数字左侧自动补0
Mar 31 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
PHP获取时间排除周六、周日的两个方法
Jun 30 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
PHP实现的sqlite数据库连接类
Dec 12 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
php中使用url传递数组的方法
Feb 11 PHP
php通过两层过滤获取留言内容的方法
Jul 11 PHP
php简单计算年龄的方法(周岁与虚岁)
Dec 06 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
Feb 04 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 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
基于php缓存的详解
2013/05/15 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP函数超时处理方法
2016/02/14 PHP
CI框架整合smarty步骤详解
2016/05/19 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
js 处理URL实用技巧
2010/11/23 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
js跑步算法的实现代码
2013/12/04 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
微信小程序 解决swiper不显示图片的方法
2017/01/04 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
js 两数组去除重复数值的实例
2017/12/06 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
angular json对象push到数组中的方法
2018/02/27 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
python实现巡检系统(solaris)示例
2014/04/02 Python
Python如何实现守护进程的方法示例
2017/02/08 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
中学教师管理制度
2014/01/14 职场文书
文明村创建实施方案
2014/03/27 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
python使用pygame创建精灵Sprite
2021/04/06 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
HTML常用标签超详细整理
2022/03/19 HTML / CSS