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


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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
一个php作的文本留言本的例子(三)
Oct 09 PHP
杏林同学录(五)
Oct 09 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Jul 11 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 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 PDOStatement::setAttribute讲解
2019/02/01 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
javascript中attribute和property的区别详解
2014/06/05 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
JavaScript中this详解
2015/09/01 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
手写Node静态资源服务器的实现方法
2018/03/20 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
Python读写unicode文件的方法
2015/07/10 Python
python制作最美应用的爬虫
2015/10/28 Python
python实现发送邮件功能
2017/07/22 Python
Python内置模块logging用法实例分析
2018/02/12 Python
用Python解决x的n次方问题
2019/02/08 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
永远是春天观后感
2015/06/12 职场文书
酒店温馨提示语
2015/07/14 职场文书