获取微信临时二维码

public function index(){
        //获取临时二维码
        $access_token=$this->get_wx_access_token();
        $url="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$access_token;
        $postArr=[
            'expire_seconds'=>604800,
            'action_name'=>"QR_SCENE",
            'action_info'=>[
                'scene'=>[
                    'scene_id'=>2000
                ]
            ]
        ];
        $postJson= json_encode($postArr);
        $res=$this->http_curl($url,$postJson,'post','json');
        //获取ticket
        $ticket=$res['ticket'];
        //使用ticket获取二维码图片 ticket一定要urlencode
        $url="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
        echo "<img src='$url' alt=''>";
    }
    public function get_wx_access_token()
    {
        //将access_token存在session/cookie中
        //如果access_token在session中并没有过期
        if (isset($_SESSION['access_token']) && $_SESSION['expire_time'] > time()) {
            return $_SESSION['access_token'];
        }
        //如果access_token不存在或者已经过期,重新获取access_token
        else {
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->appsecret;
            $arr = $this->http_curl($url);
            //存到session中
            $access_token             = $arr['access_token'];
            $_SESSION['access_token'] = $arr['access_token'];
            $_SESSION['expire_time']  = time() + 7200;
            return $access_token;
        }
    }

    protected function http_curl($url, $arr = '', $type = 'get', $res = 'json')
    {
        $ch = curl_init();
        //设置curl的参数
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if ($type == 'post') {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
        }
        //采集
        $output = curl_exec($ch);
        if ($res == 'json') {
            if ($err = curl_errno($ch)) {
                //要在关闭之前获得curl_errno
                curl_close($ch);
                //请求失败,返回错误信息
                return $err;
            } else {
                //请求成功
                return json_decode($output, true);
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值