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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP 观察者模式的实现代码
May 10 PHP
PHP实现采集抓取淘宝网单个商品信息
Jan 08 PHP
php去除html标记的原生函数详解
Jan 27 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
PHP实现支持CURL字符串证书传输的方法
Mar 23 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
php discuz 主题表和回帖表的设计
2009/03/13 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
2016/01/08 Javascript
jQuery中fadein与fadeout方法用法示例
2016/09/16 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
js+html5实现页面可刷新的倒计时效果
2017/07/15 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
Python计算三维矢量幅度的方法
2015/06/15 Python
Python统计日志中每个IP出现次数的方法
2015/07/06 Python
Django forms组件的使用教程
2018/10/08 Python
Python制作动态字符图的实例
2019/01/27 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
python编程的核心知识点总结
2021/02/08 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
MySQL面试题
2014/01/12 面试题
优秀的毕业生的自我评价
2013/12/12 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
Redis中有序集合的内部实现方式的详细介绍
2022/03/16 Redis