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 相关文章推荐
php4的session功能评述(一)
Oct 09 PHP
PHP的FTP学习(二)
Oct 09 PHP
php小偷相关截取函数备忘
Nov 28 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
php页面防重复提交方法总结
Nov 25 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
分享一则PHP定义函数代码
Feb 26 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
php实现复制移动文件的方法
Jul 29 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
thinkPHP模板引擎用法示例
Dec 08 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
使用python+whoosh实现全文检索
2019/12/09 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
安全教育心得体会
2013/12/29 职场文书
高中美术教学反思
2014/01/19 职场文书
乡镇办公室工作决心书
2014/03/11 职场文书
岗位职责怎么写
2014/03/14 职场文书
妇女工作先进事迹
2014/08/17 职场文书
竞聘自述材料
2014/08/25 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
个人职业及收入证明
2014/10/13 职场文书
公司员工违纪检讨书
2015/05/05 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
小学体育组工作总结
2015/08/13 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书
javaScript Array api梳理
2021/03/31 Javascript