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


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执行sql语句的写法
Mar 10 PHP
php auth_http类库进行身份效验
Mar 19 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
Yii操作数据库的3种方法
Mar 11 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
php获取远程文件大小
Oct 20 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
Zend的Registry机制的使用说明
2013/05/02 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
在浏览器中打开或关闭JavaScript的方法
2015/06/03 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
python 实现矩阵按对角线打印
2019/11/29 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python生成器实现简单"生产者消费者"模型代码实例
2020/03/27 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
电子商务专员岗位职责
2013/12/11 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
开平碉楼导游词
2015/02/06 职场文书
自主招生自荐信格式范文
2015/03/25 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL