zoukankan      html  css  js  c++  java
  • yii2中自定义公共类

    以微信企业号为例:

    1、在YII根目录新建一个文件夹wechat,新建Wechat.php文件

    代码如下:

    <? 
    
    namespace appwechat;
    
    class Wechat
    
    {
    
        const AGENTID = 3;//应用ID
    
        const CORPID = "wx5d0183ad90c95d8b";//ID
    
        const CORPSECRET = "KTHAkkVl4mX4Jr_g89d3PXajYupsUcJFvGWQ1K6ZMagTPOh4kiNMfBLFoDr12DVh";//秘钥
    
        const SCOPE = "snsapi_base"; 
    
        const STATE = "123";    
    
      
    
        //自动登录跳转
    
        public function wxauto($jumpurl){   
    
            $corpid = self::CORPID; 
    
            $scope = self::SCOPE; 
    
            $state = self::STATE;  
    
            $url='https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$corpid.'
    
            &redirect_uri='.urlencode($jumpurl).'
    
            &response_type=code&scope='.$scope.'&state='.$state.'#wechat_redirect';
    
            header("Location:".$url);
    
            exit;
    
        }
    
         
    
        //推送信息
    
        public function getPush($userid , $agentid , $message){
    
                $userinfo = $this->getToken();//获取access_token
    
                $access_token = $userinfo['access_token'];
    
                $sendmsg_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=".
    
                $access_token;
    
                $data="{"touser":"$userid","msgtype":"text","agentid":$agentid,"text":
    
                {"content":"$message"},"safe":0}";
    
                $res = $this->curlPost($sendmsg_url,$data);
    
                $errmsg=json_decode($res)->errmsg;
    
        }
    
         
    
        //获取token
    
        public function getToken(){     
    
            $corpid = self::CORPID; 
    
            $corpsecret = self::CORPSECRET; 
    
            $Url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".$corpid."&corpsecret=".$corpsecret;
    
            $res = $this->curlPost($Url);
    
            $access_token=json_decode($res)->access_token;
    
            $userinfo = array();
    
            $userinfo['access_token']=$access_token;
    
            return $userinfo;
    
        }
    
         
    
        //定义curl方法
    
        public function curlPost($url,$data=""){
    
            $ch = curl_init();
    
            $opt = array(
    
                    CURLOPT_URL     => $url,
    
                    CURLOPT_HEADER  => 0,
    
                    CURLOPT_POST    => 1,
    
                    CURLOPT_POSTFIELDS      => $data,
    
                    CURLOPT_RETURNTRANSFER  => 1,
    
                    CURLOPT_TIMEOUT         => 20
    
            );
    
            $ssl = substr($url,0,8) == "https://" ? TRUE : FALSE;
    
            if ($ssl){
    
                $opt[CURLOPT_SSL_VERIFYHOST] = 2; //注意1已经弃用
    
                $opt[CURLOPT_SSL_VERIFYPEER] = FALSE;
    
            }
    
            curl_setopt_array($ch,$opt);
    
            $data = curl_exec($ch);
    
            curl_close($ch);
    
            return $data;
    
        }
    
    ###########**********增加获取微信openid***********#########################
    
    }
    
    ?>
    

      

    2、控制器的调用:

    引入 use appwechatWechat;

    $chat = new Wechat();  //实例化类
    
    $REDIRECT_URI= $_SERVER['HTTP_HOST'].'/test/back';//定义跳转URL
    
    $chat->wxauto($REDIRECT_URI);//调用类的方法
    
        $chat->getToken();//调用类的方法
    
     
    
    $corpid = Wechat::CORPID;//调用类的常量
    
    $corpsecret = Wechat::CORPSECRET;//调用类的常量
    
    $agentid=Wechat::AGENTID;//调用类的常量
    

      

    参考:

    https://www.php.cn/phpkj/yii/439521.html

    https://www.yiichina.com/question/1414

    https://www.yiichina.com/question/2296

  • 相关阅读:
    C Primer+Plus(十七)高级数据表示 复习题
    C Primer+Plus(十七)高级数据表示(三)
    C Primer+Plus(十七)高级数据表示(二)
    C Primer+Plus(十七)高级数据表示(一)
    C Primer+Plus(十四)编程练习
    AI时代什么最重要,什么是AI时代的基础资产?
    AI在哪些领域里都有哪些应用?
    什么是AI、大数据、深度学习......它们之间什么关系?
    说话的套路
    全书结构
  • 原文地址:https://www.cnblogs.com/meetuj/p/12354644.html
Copyright © 2011-2022 走看看