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


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 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
php 函数中使用static的说明
Jun 01 PHP
php使用json_encode对变量json编码
Apr 07 PHP
php实现对象克隆的方法
Jun 20 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
掌握PHP垃圾回收机制详解
Mar 13 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 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发明人谈MVC和网站设计架构 貌似他不支持php用mvc
2011/06/04 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
js Array对象的扩展函数代码
2013/04/24 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
改变隐藏的input中value值的方法
2014/03/19 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
2020/07/19 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
售前工程师职业生涯规划
2014/03/02 职场文书
法律进企业活动方案
2014/03/04 职场文书
2014年毕业演讲稿范文
2014/05/13 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
工商行政处罚决定书
2015/06/24 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers