- 是新手,啥也不会,踩了不少坑。于是写了这边文章。
这个是官方给出的文档,有那么一瞬间我瞬间崩了。
这是啥呀,完全没有头绪,后来由于我一直一直看文档,每一个字都不放过,最终我发现。
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
的完整版了。