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 相关文章推荐
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
PHP判断数据库中的记录是否存在的方法
Nov 14 PHP
php发送与接收流文件的方法
Feb 11 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
简单的自定义php模板引擎
Aug 26 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 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
PHP:风雨欲来 路在何方?
2006/10/09 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
微信小程序 教程之WXSS
2016/10/18 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
vue组件传值的实现方式小结【三种方式】
2020/02/05 Javascript
python封装对象实现时间效果
2020/04/23 Python
Python3基础之list列表实例解析
2014/08/13 Python
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
Python的垃圾回收机制详解
2019/08/28 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
2014厂务公开实施方案
2014/02/17 职场文书
党员违纪检讨书
2014/02/18 职场文书
夏季药店促销方案
2014/08/22 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
五好家庭事迹材料
2014/12/20 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
Java新手教程之ArrayList的基本使用
2021/06/20 Java/Android
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫