'f5e04886d0b94e128a3115f895e29e22', 'clientSecret' => '3b3d0eea32242e6b8dddb6ddb9fa9080', 'username' => '18184888888', 'password' => md5('cz221001') ]; $result = $this->ttcurl($apiurl, $postData); if (isset($result['access_token'])) { $expireTime = $result['expires_in']; $accessToken = $result['access_token']; // 缓存token,提前5秒过期 Cache::set('ttlock_token', $accessToken, $expireTime - 5); return $accessToken; } return false; } /** * 通通锁-网关开锁 */ public function unlockByNetwork($lockId) { $apiurl = 'https://cnapi.sciener.com' . '/v3/lock/unlock'; $accessToken = $this->getTtlockToken(); $postData = [ 'clientId' => 'f5e04886d0b94e128a3115f895e29e22', 'accessToken' => $accessToken, 'lockId' => $lockId, 'date' => time() * 1000 ]; return $this->ttcurl($apiurl, $postData); } /** * 通通锁-创建临时密码 */ public function createTempPassword($lockId, $password, $name, $startTime, $endTime) { $config = Config::get('door.ttlock', []); $apiurl = 'https://cnapi.sciener.com' . '/v3/keyboardPwd/add'; $accessToken = $this->getTtlockToken(); $postData = [ 'clientId' => 'f5e04886d0b94e128a3115f895e29e22', 'accessToken' => $accessToken, 'lockId' => $lockId, 'keyboardPwd' => $password, 'keyboardPwdType' => '3', // 时效密码 'keyboardPwdName' => $name, 'startDate' => $startTime * 1000, 'endDate' => $endTime * 1000, 'addType' => 2, 'date' => time() * 1000 ]; return $this->ttcurl($apiurl, $postData); } /** * 通通锁-删除密码 */ public function deletePassword($lockId, $passwordId) { $config = Config::get('door.ttlock', []); $apiurl = $config['base_url'] . '/v3/keyboardPwd/delete'; $accessToken = $this->getTtlockToken(); $postData = [ 'clientId' => $config['client_id'], 'lockId' => $lockId, 'accessToken' => $accessToken, 'keyboardPwdId' => $passwordId, 'deleteType' => 2, 'date' => time() * 1000 ]; return $this->ttcurl($apiurl, $postData); } /** * 通通锁CURL请求(保持原有格式) */ private function ttcurl($apiurl, $postData) { $data_urlencode = http_build_query($postData); $ch = curl_init($apiurl); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_urlencode); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 修复SSL问题 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $result = curl_exec($ch); curl_close($ch); return json_decode($result, true); } }