host =config('game_host'); } /** * post请求 * @param $action * @param $params * @param bool $json_decode * @return string|\stdClass */ public function doPost($action, $params, $json_decode = true) { $client = new Client([ 'timeout' => 30 ]); $json = json_encode($params); list($microsecond, $time) = explode(' ', microtime()); //' '中间是一个空格 $ts = floor((floatval($microsecond) + floatval($time)) * 1000); $sign = md5(implode(';', ['5a7553560c9cf51c105678f3', '/' . $action, $json, $ts])); $query = sprintf("ts=%s&sign=%s", $ts, $sign); $fullUrl = $this->host . '/' . $action . '?' . $query; Log::record('fullUrl:' . $fullUrl); Log::record('json:' . $json); $resBody = null; try { $res = $client->post($fullUrl, ['body' => $json]); if ($res) { if ($res->getStatusCode() == 200) { $resBody = $res->getBody()->getContents(); if ($json_decode) { return json_decode($resBody, true); } } else { Log::record('response status code = ' . $res->getStatusCode()); //exception('游服status不通',404); } } else { Log::record('client request null'); //exception('游服client不通',404); } } catch (\Exception $e) { Log::record('游服'.$e->getMessage()); //exception('游服不通',404); } return $resBody; } /** * 用户详情 * * """Param"": { * ""ID"":323, //用户id * }" * * * "{ * ""State"": 1, * ""ErrMes"":"""", * ""Data"": { * } * }" * * @param $params * @return \stdClass|string */ public static function PlayerData($params) { return (new self)->doPost('api/Player/PlayerData', ['Param' => $params]); } }