- 是新手,啥也不會,踩了不少坑。於是寫了這邊文章。
這個是官方給出的文檔,有那么一瞬間我瞬間崩了。
這是啥呀,完全沒有頭緒,后來由於我一直一直看文檔,每一個字都不放過,最終我發現。
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
的完整版了。