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 相关文章推荐
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 PHP
PHP var_dump遍历对象属性的函数与应用代码
Jun 04 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
PHP5函数小全(分享)
Jun 06 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
PHP实现批量修改文件后缀名的方法
Jul 30 PHP
php数组函数array_walk用法示例
May 26 PHP
PHP模拟http请求的方法详解
Nov 09 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
PHP一致性hash分布式算法封装类定义与用法示例
Aug 04 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与数据库代码开发规范
2013/08/08 PHP
php共享内存段示例分享
2014/01/20 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
PDO::query讲解
2019/01/29 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
node.js的Express服务器基本使用教程
2019/01/09 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
2019/08/02 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
在Python中操作字典之setdefault()方法的使用
2015/05/21 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
Python3简单实现串口通信的方法
2019/06/12 Python
python如何统计代码运行的时长
2019/07/24 Python
python实现3D地图可视化
2020/03/25 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
什么是测试驱动开发(TDD)
2012/02/15 面试题
应届生的求职推荐信范文
2013/11/30 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
《锄禾》教学反思
2014/04/08 职场文书
团队精神口号
2014/06/06 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
医学会议开幕词
2016/03/03 职场文书
导游词之山海关
2019/12/10 职场文书
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript