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_MySQL教程-第一天
Mar 18 PHP
PHP 网页过期时间的控制代码
Jun 29 PHP
php cookies中删除的一般赋值方法
May 07 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
php实现的简单日志写入函数
Mar 31 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
万能的php分页类
Jul 06 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP CURL中传递cookie的方法步骤
May 09 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
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中的字符串查找操作方法总结
2016/06/27 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
Python编程中类与类的关系详解
2019/08/08 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
全球性的奢侈品梦工厂:Forzieri(福喜利)
2019/02/20 全球购物
商场总经理岗位职责
2014/02/03 职场文书
欢迎横幅标语
2014/06/17 职场文书
小学安全汇报材料
2014/08/14 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
靠谱准确的求职信
2019/04/02 职场文书