带参数的二维码对于渠道营销推广来说是很有用的,可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送,可喜的是微信开通了这个接口,那下面就来研究一下吧。 具体接口说明请参见,微信公众平台开发者文档(代码。 演示图:
由于带参数二维码生成是有限的,所有我是按编号生成的,下次生成的时候直接累加。 另外带设置有备注,方便以后统计。
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 ) ;
}
很简单,基本够用了,喜欢就拿走