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实现的简单压缩英文字符串的代码
Apr 24 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
php使用百度天气接口示例
Apr 22 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
纯php生成随机密码
Oct 30 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 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
Views rows style模板重写代码
2011/05/16 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
ThinkPHP中的系统常量和预定义常量集合
2014/07/01 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
Array.prototype.slice 使用扩展
2010/06/09 Javascript
js优化针对IE6.0起作用(详细整理)
2012/12/25 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
python 自动识别并连接串口的实现
2021/01/19 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
行政助理求职自荐信
2013/10/26 职场文书
执行总经理岗位职责
2014/02/03 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
致裁判员加油稿
2014/02/08 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
公司承诺书格式
2014/05/21 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
历史博物馆观后感
2015/06/05 职场文书
element多个表单校验的实现
2021/05/27 Javascript