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


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中for循环语句的几种变型
Mar 16 PHP
Php Cookie的一个使用注意点
Nov 08 PHP
解析dedeCMS验证码的实现代码
Jun 07 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
Nov 14 PHP
PHP实现的增强性mhash函数
May 27 PHP
PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
Jan 07 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
深入理解PHP+Mysql分布式事务与解决方案
Dec 03 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脚本[带参数]的方法
2010/01/22 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
php操作redis缓存方法分享
2015/06/03 PHP
php图片添加水印例子
2016/07/20 PHP
PHP中ajax无刷新上传图片与图片下载功能
2017/02/21 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
浅谈ECMAScript 中的Array类型
2019/06/10 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
关于python写入文件自动换行的问题
2018/06/23 Python
Django中URL的参数传递的实现
2019/08/04 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
意大利奢侈品多品牌集合店:TheDoubleF
2019/08/24 全球购物
大专生自我评价
2014/01/28 职场文书
制作部班长职位说明书
2014/02/26 职场文书
股权转让协议书
2014/04/12 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python