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 相关文章推荐
apache配置虚拟主机的方法详解
Jun 17 PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 PHP
PHP生成不重复标识符的方法
Nov 21 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
基于PHP实现数据分页显示功能
May 26 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
PHP页面输出时js设置input框的选中值
Sep 30 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
一款纯css3制作的2015年元旦雪人动画特效教程
2014/12/29 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
大学生就业自荐信
2013/10/26 职场文书
企划经理的岗位职责
2013/11/17 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
单位租车协议书
2015/01/29 职场文书
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Python中time与datetime模块使用方法详解
2022/03/31 Python