php微信开发之批量生成带参数的二维码

前端之家收集整理的这篇文章主要介绍了php微信开发之批量生成带参数的二维码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧。 具体接口说明请参见,微信公众平台开发者文档(代码。 演示图:

由于带参数二维码生成是有限的,所有我是按编号生成的,下次生成的时候直接累加。 另外带设置有备注,方便以后统计

token); //获取access_token $json_url='https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token;
   $action_name=$this->_post('action_name');  //<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a>类型(临时、永久)
   $create_num=$this->_post('create_num');   //<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a><a href="/tag/shuliang/" target="_blank" class="keywords">数量</a>

   //<a href="/tag/shujuku/" target="_blank" class="keywords">数据库</a>里<a href="/tag/chaxun/" target="_blank" class="keywords">查询</a>最后<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a>一个编号
   $now_secne_id=M('erweima')->where(array('token'=>$this->token))->order('scene_id desc')->getField('scene_id');

   //新<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a>在最后一个编辑上加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); 

     //这里代表<a href="/tag/shengcheng/" target="_blank" class="keywords">生成</a>成功,记录数据以便插入到<a href="/tag/shujuku/" target="_blank" class="keywords">数据库</a>,方便以后<a href="/tag/tongji/" target="_blank" class="keywords">统计</a>查找
     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('<a href="/tag/tianjia/" target="_blank" class="keywords">添加</a>成功');
     }else{
      $this->error('操作失败');
     }
   }else{
     $this->error('操作失败');
   } 
 } 

}

PHP;"> 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,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相关文章