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实现维护文件代码
Jun 14 PHP
php打造属于自己的MVC框架
Mar 07 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
yii添删改查实例
Nov 16 PHP
变量在 PHP7 内部的实现(二)
Dec 21 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
php实现连接access数据库并转txt写入的方法
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
PHP 已经成熟
2006/12/04 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
nodejs获取微信小程序带参数二维码实现代码
2017/04/12 NodeJs
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
在Python的框架中为MySQL实现restful接口的教程
2015/04/08 Python
python实现聊天小程序
2018/03/13 Python
详解python中eval函数的作用
2019/10/22 Python
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
就业协议书范本
2014/04/11 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
大学生找工作求职信
2014/07/09 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
先进党支部事迹材料
2014/12/24 职场文书
初中优秀学生评语
2014/12/29 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
原生JS实现飞机大战小游戏
2021/06/09 Javascript