zoukankan      html  css  js  c++  java
  • 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;

    }

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

     

     

  • 相关阅读:
    消息队列技术
    NET Core中使用Apworks
    TCP基础
    Oracle停止一个JOB
    如何在Java 8中愉快地处理日期和时间
    mysql字符串区分大小写的问题
    【已解决】javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint
    spring boot 1.4默认使用 hibernate validator
    mysql shell
    android:background="@drawable/home_tab_bg"
  • 原文地址:https://www.cnblogs.com/fortitude526/p/9287301.html
Copyright © 2011-2022 走看看