使用微信公众平台接口生成场景二维码,可用来区分公众平台中用户来自哪里。(用户扫描此二维码后,公众号可以接收到事件推送EventKey就是设置的场景值)
官方文档:http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html
测试代码如下
生成二维码代码:
<?php
header("Content-type:text/html;charset=utf-8");$fname=$_REQUEST['fname'];//生成二维码名称(字母或数字)
$cjval=$_REQUEST['cjval'];//二维码携带参数(数字或字母)
$filename = './changjing/'.$fname.'.jpg';
echo "start ...<br/>";//die;
$url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=";
$data='{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "'.$cjval.'"}}}';//永久二维码格式,临时二维码只有参数不同可参考官方格式
bug($data);//die;
$result=httpPostData($url, $data);
bug($result);
$ticket=$result->ticket;
$ticket_url=$result->url;
$ticket=urlencode($ticket);
$qurl="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$ticket;
$return_content = http_get_data($qurl);//获取图片内容
$fp= fopen($filename,"a"); //将文件绑定到流
$bool=fwrite($fp,$return_content); //写入文件
//var_dump($bool);
if($bool){
//二维码生成成功...
echo "success!!!";
$filename=str_ireplace('./','',$filename);
echo "<br/>下载地址:http://www.xxxx.com/".$filename;
}else{
echo "error";
}
function bug($msg){
echo "<pre style='color:red'>";
var_dump($msg);
echo "</pre>";
}
//生成图片
function http_get_data($url) {
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'GET' );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $ch, CURLOPT_URL, $url );
ob_start ();//在服务器打开一个缓冲区来保存所有的输出
curl_exec ( $ch );
$return_content = ob_get_contents ();//前面来获得缓冲区的内容。
ob_end_clean ();//会清除缓冲区的内容,并将缓冲区关闭,但不会输出内容。
return $return_content;
}
//curlget请求
function httpGet($url) {
$curl = curl_init ();
curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $curl, CURLOPT_TIMEOUT, 500 );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, false );
curl_setopt ( $curl, CURLOPT_URL, $url );
$res = curl_exec ( $curl );
curl_close ( $curl );
return $res;
}
//获取token值
function getToken(){
$APPID='wx999999999xxxx390c';
$APPSECRET='6b11a5asdfser2344f01983c01472a52';
$turl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$APPSECRET;
$res = json_decode(httpGet($turl));
$tok=$res->access_token;
return $tok;
}
//curlpost请求
function httpPostData($url,$data,$ck=null) {
$tok=getToken();
bug($tok);//die;
$MENU_URL = $url.''.$tok;
if(!empty($ck)){
$MENU_URL.=$ck;
}
/*var_dump($data);
var_dump($tok);
var_dump($url);*/
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $MENU_URL );
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );
// 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 );
$info = curl_exec ( $ch );
if (curl_errno ( $ch )) {
echo 'Errno' . curl_error ( $ch );
}
curl_close ( $ch );
$msg=json_decode($info);
return $msg;
}
?>