企业微信推送suite_ticket

  1. 是新手,啥也不会,踩了不少坑。于是写了这边文章。

这个是官方给出的文档,有那么一瞬间我瞬间崩了。

 

 

 这是啥呀,完全没有头绪,后来由于我一直一直看文档,每一个字都不放过,最终我发现。

2.这是我认真看文档发现一个encyypt解密,于是我点进去。

 

 

 

 

 

3.点进来后,我发现,里面有一个加密解密的文件库,这是企业微信自带的。于是我焕然大悟,QAQ完全不能用微信或者其他的解密方式,用企业微信自带的就可以了!

 

 

 

4.点进来,往下滑,他就有一个加密解密的码云代码。

 

 

 5.这是下载的语言

 

 

 6.这是PHP的。

 

 

 7.只能说接触新东西,真的得摸索,这东西弄了我一上午。

 

 

 我把代码贴上来,大家自行将代码拔下来,就可以直接用了。

public function getTicket()
    {
        $super_id = superId(\session('admin_cate_id'),\session('admin'));
        $enterprise_set = db("enterprise_set")->where(['super_id' => $super_id])->find();


        $encodingAesKey = $enterprise_set['encodingAesKey'];//这是已有的值
        $token = $enterprise_set['token'];//这是已有的值
        $corpId = $enterprise_set['crop_id']; //  企业ID //这是已有的值
        $suiteId = $enterprise_set['suite_id']; //  应用id //这是已有的值
        
        $msg_signature = $_GET['msg_signature'] ?? 0;//这是回调过来企业微信给的数据
        $timestamp = $_GET['timestamp'] ?? 0;//这是回调过来企业微信给的数据
        $nonce = $_GET['nonce'] ?? 0;//这是回调过来企业微信给的数据
        $file = "./909090.txt";//这是xml格式的数据
        $file1 = "./909091.txt";//这是json的数据
        $sReqData = file_get_contents('php://input');
        file_put_contents($file, "获取验证票据(新)" . date('Y-m-d H:i:s') . "\n" . $sReqData . "\n", FILE_APPEND);
        file_put_contents($file1, json_encode($_GET), FILE_APPEND);
        $a['msg_signature'] = $msg_signature;
        $a['timestamp'] = $timestamp;
        $a['nonce'] = $nonce;
        $xml =  simplexml_load_string($sReqData, 'SimpleXMLElement', LIBXML_NOCDATA); //  xml格式转成对象
        $ToUserName = $xml->ToUserName;
        if ($suiteId == $ToUserName) { //证明是企业微信后台推送
            db("enterprise_set")->where(['suite_id' => $ToUserName])->update(['msg_signature' => $a['msg_signature'], 'timestamp' => $a['timestamp'], 'nonce' => $a['nonce'], 'createtime' => time()]);
            $set = db("enterprise_set")->where(['suite_id' => $ToUserName])->find();
            // print_r($ToUserName);die;
            include_once EXTEND_PATH . "callback/WXBizMsgCrypt.php";//导入企业微信的解密文件
            $wxcpt = new \WXBizMsgCrypt($token, $encodingAesKey, $ToUserName);
            $sMsg     = '';  // 解析之后的明文
            $err_code = $wxcpt->DecryptMsg($set['msg_signature'], $set['timestamp'], $set['nonce'], $sReqData, $sMsg);
            $xmls = simplexml_load_string($sMsg, 'SimpleXMLElement', LIBXML_NOCDATA); //  xml格式转成对象
            if ($err_code == 0) {
                if ($xmls->InfoType) {
                    $xmls = json_decode(json_encode($xmls), 1);
                    $suite_ticket = $xmls['SuiteTicket'];
                    if (!empty($suite_ticket)) {
                        //保存下获取到数据
                        db("enterprise_set")->where(['suite_id' => $ToUserName])->update(['suite_ticket' => $suite_ticket]);
                        echo 'success';  // 返回企业微信消息 success
                    } else {
                        echo 200; //错误信息
                    }
                }
            }
        }
    }

上面就是企业微信

推送suite_ticket

的完整版了。

 

posted @ 2021-09-18 15:30  辛蕾亓  阅读(1118)  评论(1编辑  收藏  举报