• 微信开发笔记:生成带参数的公众号二维码


     扫一扫进公众号,其实是可以提交参数的。一个公众号可以提供无线多个临时带参数二维码和有限多个永久的带参数二维码,我们就拿永久的带参二维码为例,毕竟这个比较常用一些。操作流程也很常规获取access_token->换取ticket ->换取带参二维码:

    <?php
    define("APPID", APPID);
    define("APPSECRET", APPSECRET);
    
    class wx_user_qr_code
    {
        function __construct(){
            $this->wx_user_qr_code();
        }
        function wx_user_qr_code(){
        }
        function get_access_token(){
        $token_access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . APPID . "&secret=" . APPSECRET;
        $res = file_get_contents($token_access_url);
        $result = json_decode($res, true); 
        $access_token = $result['access_token'];
        return $access_token;
    }
    function generate_qrcode($scene_id){
        $access_token = $this->get_access_token();
        $url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token;
        $parameters = array(
            "action_name"=>"QR_LIMIT_SCENE",
            "action_info"=>array("scene"=>array("scene_id"=>$scene_id))
        );
        $result = $this->postCurl(json_encode($parameters, true),$url);
        $return_data = json_decode($result,true);
    
        $ticket = $return_data["ticket"];
        $img_url = $return_data["url"];
        $codeurl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
            
        $img = file_get_contents($codeurl);
        $file_name = "scene_id_".$scene_id."_".time().".jpg";
        file_put_contents('./user_affiliate_qr/'.$file_name,$img);
        return $file_name;
    }
    function postCurl($send_data, $url, $second = 30){
            // 初始化curl
            $ch = curl_init();
            // 设置超时
            curl_setopt($ch, CURLOP_TIMEOUT, $second);
            // 这里设置代理,如果有的话
            // curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8');
            // curl_setopt($ch,CURLOPT_PROXYPORT, 8080);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            // 设置header
            curl_setopt($ch, CURLOPT_HEADER, FALSE);
            // 要求结果为字符串且输出到屏幕上
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            // post提交方式
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $send_data);
            // 运行curl
            
            $data = curl_exec($ch);
            curl_close($ch);
            // 返回结果
            if ($data) {
                curl_close($ch);
                return $data;
            } else {
                $error = curl_errno($ch);
                echo "curl出错,错误码:$error" . "<br>";
                echo "<a href='http://curl.haxx.se/libcurl/c/libcurl-errors.html'>错误原因查询</a></br>";
                curl_close($ch);
                return false;
            }
        }    
    }
    ?>    
        
  • 相关阅读:
    Select列表操作函数
    IBM职业之路—职业规划和技术发展(转自LU)听听前辈的意见
    C#上传下载文件ftp操作类FTPClient代码(转)
    C# FTP操作类
    UML基础
    DevExpress控件之XtraTreeList
    认识UML类图元素
    C#读写EXCEL
    C#正则表达式整理备忘
    面向对象程序可视化类图的逆向自动生成
  • 原文地址:https://www.cnblogs.com/starkiller/p/5741924.html
Copyright © 2020-2023  润新知