decrypt($encrypt, $corpid); print_r($result); die(); */ $signature = $_GET["signature"]; $timeStamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $postdata = file_get_contents("php://input"); /*$signature = '36e154f3bbaf043a6110b2025dca684967d67784'; $timeStamp = '1578453834041'; $nonce = 'bpmnoUjO'; $postdata = '{"encrypt":"mh8kSwUzMKYr4VyvH+6Ay5UJdz41rgPqhjniHqdq3euo2P0XLZqu2fhQxgQBs5ZLNv7W8hjuQgmpf+ZVNElAhNv9SVT39ZdBmXY/e1481qOsZoLw9SP9HE6Q/Uma9feA"}';*/ $postList = json_decode($postdata,true); $encrypt = $postList['encrypt']; $crypt = new DingtalkCrypt(TOKEN, ENCODING_AES_KEY, SUITE_KEY); $msg = ""; $errCode = $crypt->DecryptMsg($signature, $timeStamp, $nonce, $encrypt, $msg); if ($errCode != 0) { Log::e(json_encode($_GET) . " ERR:" . $errCode); /** * 创建套件时检测回调地址有效性,使用CREATE_SUITE_KEY作为SuiteKey */ $crypt = new DingtalkCrypt(TOKEN, ENCODING_AES_KEY, CREATE_SUITE_KEY); $errCode = $crypt->DecryptMsg($signature, $timeStamp, $nonce, $encrypt, $msg); if ($errCode == 0) { Log::i("DECRYPT CREATE SUITE MSG SUCCESS " . json_encode($_GET) . " " . $msg); $eventMsg = json_decode($msg); $eventType = $eventMsg->EventType; if ("check_create_suite_url" === $eventType) { $random = $eventMsg->Random; $testSuiteKey = $eventMsg->TestSuiteKey; $encryptMsg = ""; $errCode = $crypt->EncryptMsg($random, $timeStamp, $nonce, $encryptMsg); if ($errCode == 0) { Log::i("CREATE SUITE URL RESPONSE: " . $encryptMsg); echo $encryptMsg; } else { Log::e("CREATE SUITE URL RESPONSE ERR: " . $errCode); } } else { //should never happened } } else { Log::e(json_encode($_GET) . "CREATE SUITE ERR:" . $errCode); } return; } else { /** * 套件创建成功后的回调推送 */ Log::i("DECRYPT MSG SUCCESS " . json_encode($_GET) . " " . $msg); GetPost_http('http://www.mycht.cn/webht.php/apps/dingtools/index/recivecallback',$msg,'POST'); $eventMsg = json_decode($msg); $eventType = $eventMsg->EventType; /** * 套件ticket */ if ("suite_ticket" === $eventType) { Cache::setSuiteTicket($eventMsg->SuiteTicket); } /** * 临时授权码 */ else if ("tmp_auth_code" === $eventType) { $tmpAuthCode = $eventMsg->AuthCode; Activate::autoActivateSuite($tmpAuthCode); } /** * 授权变更事件 */ /*user_add_org : 通讯录用户增加 user_modify_org : 通讯录用户更改 user_leave_org : 通讯录用户离职 org_admin_add :通讯录用户被设为管理员 org_admin_remove :通讯录用户被取消设置管理员 org_dept_create : 通讯录企业部门创建 org_dept_modify : 通讯录企业部门修改 org_dept_remove : 通讯录企业部门删除 org_remove : 企业被解散 */ else if ("user_add_org" === $eventType) { Log::e(json_encode($_GET) . " ERR:user_add_org"); //handle auth change event } else if ("user_modify_org" === $eventType) { Log::e(json_encode($_GET) . " ERR:user_modify_org"); //handle auth change event } else if ("user_leave_org" === $eventType) { Log::e(json_encode($_GET) . " ERR:user_leave_org"); //handle auth change event } /** * 应用被解除授权的时候,需要删除相应企业的存储信息 */ else if ("suite_relieve" === $eventType) { $corpid = $eventMsg->AuthCorpId; ISVService::removeCorpInfo($corpid); //handle auth change event }else if ("change_auth" === $eventType) { //handle auth change event } /** * 回调地址更新 */ else if ("check_update_suite_url" === $eventType) { $random = $eventMsg->Random; $testSuiteKey = $eventMsg->TestSuiteKey; $encryptMsg = ""; $errCode = $crypt->EncryptMsg($random, $timeStamp, $nonce, $encryptMsg); if ($errCode == 0) { Log::i("UPDATE SUITE URL RESPONSE: " . $encryptMsg); echo $encryptMsg; return; } else { Log::e("UPDATE SUITE URL RESPONSE ERR: " . $errCode); } } else { //should never happen } $res = "success"; $encryptMsg = ""; $errCode = $crypt->EncryptMsg($res, $timeStamp, $nonce, $encryptMsg); if ($errCode == 0) { echo $encryptMsg; Log::i("RESPONSE: " . $encryptMsg); } else { Log::e("RESPONSE ERR: " . $errCode); } } function GetPost_http($url, $data = '', $method = 'GET') { $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer if ($method == 'POST' && !empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); } curl_setopt($curl, CURLOPT_TIMEOUT, 40); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_TIMEOUT_MS, 40000); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 $errno = curl_errno($curl); if ($errno !== 0) { log_message('error', 'ctripost'.$errno.curl_error($curl)); } curl_close($curl); //关闭CURL会话 return $tmpInfo; //返回数据 }