微信公众平台生成场景二维码

使用微信公众平台接口生成场景二维码,可用来区分公众平台中用户来自哪里。(用户扫描此二维码后,公众号可以接收到事件推送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;
}

?>






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为天空着色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值