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


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 4.2书写安全的脚本
Oct 09 PHP
MySQL授权问题总结
May 06 PHP
PHP 引用文件技巧
Mar 02 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
Yii开启片段缓存的方法
Mar 28 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 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自动生成月历代码
2006/10/09 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python实现的三层BP神经网络算法示例
2018/02/07 Python
python实现多线程网页下载器
2018/04/15 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
使用OpenCV实现人脸图像卡通化的示例代码
2021/01/15 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
激励口号大全
2014/06/17 职场文书
人事专员岗位说明书
2014/07/29 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
网站出售协议书范文
2014/10/10 职场文书
复兴之路展览观后感
2015/06/02 职场文书
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
Python创建SQL数据库流程逐步讲解
2022/09/23 Python