小程序生成菊花二维码示例

声明:这段代码是我在网上查找到后自己加工的。原来的链接找不到了,没法放在这里。

 public function getXcxCode($scene)
    {

        //获取参数值
        $url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" . $this->_getAccessToken();

        $data = [

            'scene' =>"uid=".$scene,

            'width' => 430,

            'auto_color' => false,

        ];

        $data = json_encode($data);

        $result = $this->_requestPost($url, $data);

        if (!$result) {

            return false;

        }

        $dir ="/public/qrcode/";

        !file_exists(".".$dir) && mkdir(".".$dir, 0777, true);

        $fileName = time().rand(10000,999999);

        // 将二维码写入图片
        file_put_contents("." .$dir.$fileName . ".jpeg", $result);

        return $dir.$fileName . ".jpeg";

    }


    private function _getAccessToken($token_file='./access_token') {

        $appid =Config::get('AppId');

        $secret = Config::get('AppSecret');

        // 考虑过期问题,将获取的access_token存储到某个文件中
        $life_time = 7200;

        if (file_exists($token_file) && time()-filemtime($token_file)<$life_time) {

            // 存在有效的access_token
            return file_get_contents($token_file);

        }

        // 目标URL:
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid ."&secret=".$secret;

        //向该URL,发送GET请求
        $result = $this->_requestGet($url);

        if (!$result) {

            return false;
        }

        // 存在返回响应结果
        $result_obj = json_decode($result);

        // 写入
        file_put_contents($token_file, $result_obj->access_token);

        return $result_obj->access_token;
    }

    protected function _requestGet($url, $ssl=true) {
        // curl完成
        $curl = curl_init();

        //设置curl选项
        curl_setopt($curl, CURLOPT_URL, $url);//URL

        $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 FirePHP/0.7.4';

        curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);//user_agent,请求代理信息

        curl_setopt($curl, CURLOPT_AUTOREFERER, true);//referer头,请求来源

        curl_setopt($curl, CURLOPT_TIMEOUT, 30);//设置超时时间

        //SSL相关
        if ($ssl) {

            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁用后cURL将终止从服务端进行验证

            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//检查服务器SSL证书中是否存在一个公用名(common name)。

        }

        curl_setopt($curl, CURLOPT_HEADER, false);//是否处理响应头

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//curl_exec()是否返回响应结果

        // 发出请求
        $response = curl_exec($curl);

        if (false === $response) {

            echo '<br>', curl_error($curl), '<br>';

            return false;
        }

        curl_close($curl);

        return $response;
    }

    /**
     * 发送GET请求的方法
     * @param string $url URL
     * @param bool $ssl 是否为https协议
     * @return string 响应主体Content
     */
    protected function _requestPost($url, $data, $ssl=true) {

        //curl完成
        $curl = curl_init();

        //设置curl选项
        curl_setopt($curl, CURLOPT_URL, $url);//URL

        $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 FirePHP/0.7.4';

        curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);//user_agent,请求代理信息

        curl_setopt($curl, CURLOPT_AUTOREFERER, true);//referer头,请求来源

        curl_setopt($curl, CURLOPT_TIMEOUT, 30);//设置超时时间

        //SSL相关
        if ($ssl) {

            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁用后cURL将终止从服务端进行验证

            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//检查服务器SSL证书中是否存在一个公用名(common name)。

        }
        // 处理post相关选项
        curl_setopt($curl, CURLOPT_POST, true);// 是否为POST请求

        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);// 处理请求数据

        // 处理响应结果
        curl_setopt($curl, CURLOPT_HEADER, false);//是否处理响应头

        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//curl_exec()是否返回响应结果

        // 发出请求
        $response = curl_exec($curl);

        if (false === $response) {

            echo '<br>', curl_error($curl), '<br>';

            return false;
        }

        curl_close($curl);

        return $response;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值