php微信开发之批量生成带参数的二维码


Posted in PHP onJune 26, 2016

带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧。
 具体接口说明请参见,微信公众平台开发者文档(http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html) ,我这里就直接上代码。
 演示图:

 php微信开发之批量生成带参数的二维码

由于带参数二维码生成是有限的,所有我是按编号生成的,下次生成的时候直接累加。
另外带设置有备注,方便以后统计。

public function createewm(){
     if(IS_POST){
       $access_token=checkAccessToken($this->token); //获取access_token
       $json_url='https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token;
        
       $action_name=$this->_post('action_name');  //生成类型(临时、永久)
       $create_num=$this->_post('create_num');   //生成数量
 
       //数据库里查询最后生成一个编号
       $now_secne_id=M('erweima')->where(array('token'=>$this->token))->order('scene_id desc')->getField('scene_id');
 
       //新生成在最后一个编辑上加1
       $start_secne_id=intval($now_secne_id)+1;
       $end_secne_id=intval($now_secne_id)+intval($create_num);
       $n=0;
       for($i=$start_secne_id;$i<=$end_secne_id;$i++){
         $curl_data='';
         if($action_name=='QR_SCENE'){
           //临时 post的json数据
           $curl_data='{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$i.'}}}';
        }
         
         if($action_name=='QR_LIMIT_SCENE'){
          //永久 post的json数据
           $curl_data='{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$i.'}}}';
         } 
         $json_info=json_decode($this->api_notice_increment($json_url,$curl_data),true); 
 
         //这里代表生成成功,记录数据以便插入到数据库,方便以后统计查找
         if($json_info['errcode']!=40013){ 
           $data[$n]['token']=$this->token;
           $data[$n]['tiket']=$json_info['ticket'];
           $data[$n]['url']=$json_info['url'];
           $data[$n]['scene_id']=$i;
           $data[$n]['expire_seconds']=$json_info['expire_seconds'];
           $data[$n]['action_name']=$action_name;
           $data[$n]['remark']='';
           $data[$n]['createtime']=time();
           $n++;
         }else{
           $this->error('操作失败');
         }
       }
      if(count($data)>0){
         $res= M('erweima')->addAll($data);//插入数据
         if($res){
          $this->success('添加成功');
         }else{
          $this->error('操作失败');
         }
       }else{
         $this->error('操作失败');
       } 
     } 
  }
function api_notice_increment($url, $data){
    $ch = curl_init();
    $header = "Accept-Charset: utf-8";
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $tmpInfo = curl_exec($ch);
    if (curl_errno($ch)) {
      //curl_close( $ch )
      return $ch;
    }else{
      //curl_close( $ch ) 
      return $tmpInfo;
    }
    curl_close( $ch ) ;
  }

很简单,基本够用了,喜欢就拿走

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
WML,Apache,和 PHP 的介绍
Oct 09 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
PHP Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
php smarty 二级分类代码和模版循环例子
Jun 01 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
Nov 07 PHP
php读取csv数据保存到数组的方法
Jan 03 PHP
php截取html字符串及自动补全html标签的方法
Jan 15 PHP
php安装swoole扩展的方法
Mar 19 PHP
php实现阳历阴历互转的方法
Oct 28 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 PHP
php日期操作技巧小结
Jun 25 #PHP
php项目开发中用到的快速排序算法分析
Jun 25 #PHP
php函数传值的引用传递注意事项分析
Jun 25 #PHP
php好代码风格的阶段性总结
Jun 25 #PHP
php编译安装php-amq扩展简明教程
Jun 25 #PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 #PHP
php自动载入类用法实例分析
Jun 24 #PHP
You might like
摩卡咖啡
2021/03/03 咖啡文化
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
jQuery 查找元素操作实例小结
2019/10/02 jQuery
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Django卸载之后重新安装的方法
2017/03/15 Python
对python读取CT医学图像的实例详解
2019/01/24 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
客服文员岗位职责
2013/11/29 职场文书
廉洁校园实施方案
2014/05/25 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL