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下限制每个虚拟主机的并发数!!!!
Oct 09 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
Jun 30 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
php+xml实现在线英文词典查询的方法
Jan 23 PHP
php的socket编程详解
Nov 20 PHP
Zend Framework分发器用法示例
Dec 11 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 PHP
laravel框架与其他框架的详细对比
Oct 23 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和MYSQL实现分页导航思路详解
2017/04/11 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
跟随鼠标旋转的文字
2006/11/30 Javascript
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
React中的refs的使用教程
2018/02/13 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
微信小程序之swiper滑动面板用法示例
2018/12/04 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
python协程用法实例分析
2015/06/04 Python
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
python中的编码知识整理汇总
2016/01/26 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
俄罗斯购买剧院和演唱会门票网站:Parter.ru
2019/11/09 全球购物
七年级历史教学反思
2014/02/05 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
2015年校长新年寄语
2014/12/08 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
golang特有程序结构入门教程
2021/06/02 Python