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


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 相关文章推荐
判“新”函数:得到今天与明天的秒数
Oct 09 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
深入理解PHP变量的值类型和引用类型
Oct 21 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
浅谈PHP进程管理
Mar 08 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
PHP7变量处理机制修改
Mar 09 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
WebPack配置vue多页面的技巧
2018/05/15 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
vue登录以及权限验证相关的实现
2019/10/25 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python中定时任务框架APScheduler的快速入门指南
2017/07/06 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
python中pip的安装与使用教程
2018/08/10 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
python 实现将多条曲线画在一幅图上的方法
2019/07/07 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
2020/02/07 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
HTML5之web workers_动力节点Java学院整理
2017/07/17 HTML / CSS
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
机关搬迁方案
2014/05/18 职场文书
企业活动策划方案
2014/06/02 职场文书
推广活动策划方案
2014/08/23 职场文书
2015年度保密工作总结
2015/04/24 职场文书
困难补助申请报告
2015/05/19 职场文书
电影圆明园观后感
2015/06/03 职场文书
金榜题名主持词
2015/07/02 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL