微信生成带参数二维码,跳转公众号

    protected $appid = '';
    protected $secret = '';
    protected $access_tokens;

    private function access_token_lst(){
        //获取$access_token
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->secret;
        $result = $this->curl_post($url);
        $access_tokens = json_decode($result, true);
        $this->access_tokens = $access_tokens['access_token'];
    }
   
    public function qr_code()
    {
        //获取access_token
        $this->access_token_lst();

        //非必传项
        $rs = $this->getTemporaryQrcode($this->access_tokens, 12345678912345678912345678912345);
     
        $ticket = $rs['ticket'];
        $qrcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . $ticket . "";
        echo "<img src=". $qrcode .">";
    }

    //生成二维码
    private function getTemporaryQrcode($access_tokens, $orderId)
    {
        $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" . $access_tokens . "";
        //生成二维码需要的参数
        $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": ' . $orderId . '}}}';
        $momo = json_decode($qrcode, true);
        $result = $this->curl_post($url, $momo);
        $rs = json_decode($result, true);
        return $rs;
    }

    private function curl_post($url, array $params = array()){
        $data_string = json_encode($params);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER,
    
            array(
    
                'Content-Type: application/json'
    
            )
    
        );
        $data = curl_exec($ch);
        curl_close($ch);
        return ($data);
    }

 

原文:https://www.cnblogs.com/jiaoda/p/10769129.html

posted @ 2020-09-14 16:24  钧一  阅读(1175)  评论(0编辑  收藏  举报