微信小程序生成带参数二维码(PHP)

1,709 阅读1分钟
    官方获取小程序页面API
   

QQ图片20170217192918.png 

下载附件



  由于小程序参数二维码API提供的帮助有限,以下是我对该功能的一些理解

我主要是通过thinkphp后台接口实现,代码如下:
  1、先获取 ACCESS_TOKEN:
   

               $tokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->secret;
        $getArr=array();
        $tokenArr=json_decode($this->send_post($tokenUrl,$getArr,"GET"));
 
        $access_token=$tokenArr->access_token;

  send_post:
  

                function send_post($url, $post_data,$method='POST') {
        $postdata = http_build_query($post_data);
        $options = array(
            'http' => array(
                'method' => $method, //or GET
                'header' => 'Content-type:application/x-www-form-urlencoded',
                'content' => $postdata,
                'timeout' => 15 * 60 // 超时时间(单位:s)
            )
        );
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
 
 
        return $result;
    }
    


2、生成二维码:

      $path="pages/index?query=1";
        $width=430;
        $post_data='{"path":"'.$path.'","width":'.$width.'}';
 
        $url="https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=".$access_token;
 
 
        $result=$this->api_notice_increment($url,$post_data);



api_notice_increment:

               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, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $tmpInfo = curl_exec($ch);
        //         var_dump($tmpInfo);
        //        exit;
        if (curl_errno($ch)) {
            return false;
        }else{
            // var_dump($tmpInfo);
            return $tmpInfo;
        }
    }


3、根据返回的二进制数据生成图片并上传到自己的服务器

  主要代码:
file_put_contents($filepath, $result)


我的是上传到阿里云服务器、就不贴上传部分的代码了