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


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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
PHP基本语法实例总结
Sep 09 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 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原理之Session Gc的一个小概率Notice
2011/04/12 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
PHP中Memcache操作类及用法实例
2014/12/12 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
2013/07/02 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
vue使用原生swiper代码实例
2020/02/05 Javascript
Javascript原型链及instanceof原理详解
2020/05/25 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python程序设计入门(4)模块和包
2014/06/16 Python
python中遍历文件的3个方法
2014/09/02 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
毕业自我鉴定范文
2013/11/06 职场文书
自我评价200字分享
2013/12/17 职场文书
小学生家长评语集锦
2014/01/30 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python