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下使用SMTP发邮件的代码
Jan 10 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
php 操作excel文件的方法小结
Dec 31 PHP
php编写一个简单的路由类
Apr 13 PHP
php修改指定文件后缀的方法
Sep 11 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
PHP的Socket网络编程入门指引
Aug 11 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
CI框架简单分页类用法示例
Jun 06 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
destoon各类调用汇总
2014/06/20 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
js获取及修改网页背景色和字体色的方法
2015/12/29 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
js 函数性能比较方法
2020/08/24 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
浅谈Python实现2种文件复制的方法
2018/01/19 Python
分析Python中解析构建数据知识
2018/01/20 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
图书馆标语
2014/06/19 职场文书
学习十八大宣传标语
2014/10/09 职场文书
2014年销售工作总结
2014/12/01 职场文书
2015年度销售个人工作总结
2015/03/31 职场文书
保护动物的宣传语
2015/07/13 职场文书
护理培训心得体会
2016/01/22 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书