thinkphp5获取小程序码

基于获取小程序码保存到手机的需求,使用tp5进行后台的处理,下面是获取小程序码的方法:

//二维码生成
public function code()
{
    $user_id = $this->uid;
    $user = Users::where("user_id = $user_id")->find();
    if($user['code_img']){
        return $this->success($user['code_img']);
    }else{
        //获取token
        $appID = "XXX";
        $appSecret = "XXXXXXXXX";
        $tokenUrl= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" .$appID ."&secret=".$appSecret;
        $getArr=array();
        $tokenArr=json_decode($this->send_post($tokenUrl,$getArr,"GET"));
        $access_token=$tokenArr->access_token;
        //生成二维码
   $path="pages/index/index?parent_id=".$user_id;
        $width=500;
        $data = [
            'path'=>$path,
            "width"=>$width,
            'auto_color'=>false,
            //'line_color'=>$line_color,
        ];
        $post_data= json_encode($data,true);
        $url="https://api.weixin.qq.com/wxa/getwxacode?access_token=".$access_token;
        $result=$this->api_notice_increment($url,$post_data);
        if ($result){
            $img = "code/".$user_id."code.jpg";
            $url = ROOT_PATH.'public/uploads/img/'.$img;
            if(file_put_contents($url, $result)){
                $code = [
                    'code_img'=>$img,
                ];
                Users::where("user_id = $user_id")->update($code);
                return $this->success($img);
            };
        }
    }
    return $this->error("获取二维码失败");
}

 

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;
}

function api_notice_increment($url,$data)
{
    $curl = curl_init();
    $a = strlen($data);
    $header = array("Content-Type: application/json; charset=utf-8","Content-Length: $a");
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl,CURLOPT_POST,1);
    curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;

}

以上就是获取小程序码的方法

 

 

猜你喜欢

转载自www.cnblogs.com/fortitude526/p/9287301.html