微信公众平台开发———— 生成带参数二维码

首先我们需要获取ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

这里我是使用THINKPHP来写的

我写的获取方法如下:

//生成ticket
//uid为带的参数
function getticket($appid,$secret,$uid){
  //查询微信公众号配置信息
    if (!session(access_token)) {
      //先获取开发者access_token
      $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
      // 获取远程文件内容
      $output = fopen_url($token_url);
      $jsoninfo = json_decode($output, true);
      $access_token = $jsoninfo["access_token"];
      session(array('access_token'=>$access_token,'expire'=>7200));     //access_token只有二小时有效期
    }else{
      $access_token = session(access_token);
    }
    //获取ticket
    $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$access_token;
    $post_data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$uid.'}}}';
    //二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久,QR_LIMIT_STR_SCENE为永久的字符串参数值
    $tic_con = https_post($url, $post_data);
    $tic_con = json_decode($tic_con, true);
    $ticket = $tic_con['ticket'];
    return $ticket;
}

 

/**
 * 发送post请求
 * @param string $url 请求地址
 * @param array $data post键值对数据
 * @return string
 */
function https_post($url, $data) {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
  if (!empty($data)) {
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  }
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $output = curl_exec($curl);
  curl_close($curl);
  return $output;
}  

场景二维码的URL

https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=$ticket

posted @ 2017-09-15 18:02  智昕  阅读(388)  评论(0编辑  收藏  举报