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