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和MySql中计算时间差的方法
Apr 22 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
php安全配置 如何配置使其更安全
Dec 16 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
将php数组输出html表格的方法
Feb 24 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
ThinkPHP整合百度Ueditor图文教程
Oct 21 PHP
php支付宝接口用法分析
Jan 04 PHP
用php代码限制国内IP访问我们网站
Sep 26 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
php中配置文件保存修改操作 如config.php文件的读取修改等操作
May 12 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图像处理之使用imagecolorallocate()函数设置颜色例子
2014/11/19 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
动态加载iframe
2006/06/16 Javascript
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
Python常用列表数据结构小结
2014/08/06 Python
用Python写冒泡排序代码
2016/04/12 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
python读取raw binary图片并提取统计信息的实例
2020/01/09 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
python exit出错原因整理
2020/08/31 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
聚美优品广告词改编
2014/03/14 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
职位说明书范文
2014/05/07 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
辞职信范文大全
2015/03/02 职场文书
就业导师推荐信范文
2015/03/27 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫
mysql sock文件存储了什么信息
2022/07/15 MySQL