['uri' => '', 'method' => 'get'], 'send-email' => ['uri' => '', 'method' => 'get'], 'self-apply-foster' => ['uri' => '', 'method' => 'get'], ]; public function __construct($game = null) { $this->client = new Client([ 'base_uri' => 'http://rebate.99you.cn/xyy_apply.php/23400/', 'timeout' => 10.0, ]); } public function api($name, array $params = []) { $api = $this->apis[$name] ?? null; if (is_null($api)) { throw new \Exception('接口不存在'); } $params[self::SIGN_NAME] = $this->sign($name, $params); try { return $this->request($api, $params); } catch (\Exception $e) { $env = C('APP_ENV', null, 'prod'); Log::error('rebate:XYYXMJS ' . $e->getMessage()); return ['code' => 3, 'msg' => '接口请求错误。' . ($env == 'prod' ? '' : $e->getMessage()) , 'data' => []]; } } public function request($api, $params) { if ($api['method'] == 'get') { return $this->get($api['uri'], $params); } else { return $this->post($api['uri'], $params); } } protected function post($uri, array $params = []) { $response = $this->client->post($uri, [ 'verify' => false, 'form_params' => $params, ]); $result = (string)$response->getBody(); Log::info('rebate:XYYXMJS ' . $uri . ' -- '. json_encode($params) . ' -- '. $result); return json_decode($result, true); } protected function get($uri, array $params = []) { $response = $this->client->get($uri, [ 'verify' => false, 'query' => $params, ]); $result = (string)$response->getBody(); Log::info('rebate:XYYXMJS ' . $uri . ' -- '. json_encode($params) . ' -- '. $result); return json_decode($result, true); } protected function sign($name, $params) { if ($name == 'send-email') { return md5($params['prop_id'].$params['serverid'].$params['role_id'].self::SIGN_KEY); } elseif ($name == 'send-gold') { return md5($params['money'].$params['serverid'].$params['role_id'].self::SIGN_KEY); } else { return ''; } } public function sendEmail($giftItem, $order) { $data = [ 'act' => 'send_email', 'serverid' => $order['server_id'], 'role_id' => $order['role_id'], 'prop_id' => $giftItem['id'], ]; $result = $this->api('send-email', $data); return $this->getCommonResult($result); } public function sendGold($gold, $order) { $data = [ 'act' => 'sendgold', 'serverid' => $order['server_id'], 'role_id' => $order['role_id'], 'money' => $gold, ]; $result = $this->api('send-gold', $data); return $this->getCommonResult($result); } private function getCommonResult($result) { if ($result['code'] == 1) { return [ 'status' => true, 'message' => $result['msg'], 'result' => $result ]; } else { return [ 'status' => false, 'message' => $result['msg'], 'result' => $result ]; } } /** * @todo 暂时没有测试资源 */ public function apply($order, $role) { return $this->sendGold($order['ref_amount'], $role); } public function getResourceTypes($deviceType) { if ($deviceType == 'andriod') { return [['id' => 1, 'name' => '通用', 'device_type' => 'andriod']]; } elseif ($deviceType == 'ios') { return [['id' => 2, 'name' => '通用', 'device_type' => 'ios']]; } } public function getResources($typeId, $deviceType) { return [ 1 => ['ref_id' => 1, 'name' => '60元宝', 'amount' => 6], 2 => ['ref_id' => 2, 'name' => '300元宝', 'amount' => 30], 3 => ['ref_id' => 3, 'name' => '980元宝', 'amount' => 98], 4 => ['ref_id' => 4, 'name' => '1280元宝', 'amount' => 128], 5 => ['ref_id' => 5, 'name' => '1980元宝', 'amount' => 198], 6 => ['ref_id' => 6, 'name' => '3280元宝', 'amount' => 328], 7 => ['ref_id' => 7, 'name' => '6480元宝', 'amount' => 648], 8 => ['ref_id' => 8, 'name' => '10000元宝', 'amount' => 1000], 9 => ['ref_id' => 9, 'name' => '20000元宝', 'amount' => 2000], 10 => ['ref_id' => 10, 'name' => '30000元宝', 'amount' => 3000], 11 => ['ref_id' => 11, 'name' => '50000元宝', 'amount' => 5000], 12 => ['ref_id' => 12, 'name' => '100000元宝', 'amount' => 10000], 13 => ['ref_id' => 13, 'name' => '200000元宝', 'amount' => 20000], ]; } }