-510, 'msg' => '缺少必传参数: username', 'data' => []]; } return $data['username']; } // ## 登陆 - 登陆 public function checkLogin($data, $polyChannelGame = []) { // 参数:username = username, extparam = logintime if (!isset($data['username']) || !isset($data['extparam'])) { return ['code' => -610, 'msg' => '对接参数有误', 'data' => []]; } if (empty($polyChannelGame['param'])) { return ['code' => -611, 'msg' => '对接参数异常', 'data' => []]; } if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return ['code' => -620, 'msg' => '渠道缺少参数配置', 'data' => []]; } try { // app_id, app_key, game_id $param = [ 'username' => $data['username'], 'logintime' => $data['extparam'], 'appid' => $channelConfig['app_id'], 'gameid' => $channelConfig['game_id'], ]; $param['sign'] = md5("&appkey=" . $channelConfig['app_key'] . "&logintime=" . $data['extparam'] . "username=" . $data['username']); $res = getHttpPost('http://api2.kas6.cn/sdkapi/login/verification', $param); $res = json_decode($res, true); if ($res['status'] == 1) { // 互通游戏必要 return ['user_id' => $data['username']]; } return ['code' => -600, 'msg' => '渠道登录效验失败', 'data' => []]; } catch (\Exception $e) { // dump($e->getMessage(), $e->getFile().":".$e->getLine()); return ['code' => -630, 'msg' => '渠道登录效验处理失败:'.$e->getMessage(), 'data' => []]; } } /** * ## 回调 - 效验 * attach = 需要客户端传递祈盟订单号 * * @param $data * @param $polyChannelGame * * @return array|true */ public function paySign($data, $polyChannelGame = []) { $param = Request::instance()->only(['orderid', 'username', 'gameid', 'roleid', 'serverid', 'paytype', 'amount', 'paytime', 'attach', 'sign']); if (empty($param['orderid']) || empty($param['gameid'])|| empty($param['sign'])) { return ['code' => -710, 'msg' => '对接参数异常', 'data' => []]; } if (empty($polyChannelGame['param'])) { return ['code' => -720, 'msg' => '渠道缺少参数配置', 'data' => []]; } if (!$channelConfig = json_decode($polyChannelGame['param'], true)) { return ['code' => -721, 'msg' => '渠道参数配置有误!', 'data' => []]; } $param['appkey'] = $channelConfig['app_key']; $string = ""; foreach ($param as $k => $v) { if($k == 'sign'){ continue; } if($v){ $v = urldecode($v); } if ($string) { $string .= "&{$k}={$v}"; } else { $string = "{$k}={$v}"; } } $md5Res = md5($string); if ($param['sign'] == $md5Res) { return true; } return ['code' => -700, 'msg' => '回调效验失败!', 'data' => []]; } // ## 回调 - 下单参数获取 public function getData($data) { if (!isset($data['attach']) || !isset($data['amount']) || !isset($data['orderid'])) { return false; } return [ 'orderid' => $data['attach'], // 我方聚合订单 'amount' => $data['amount'], // 充值金额(单位:元) 'sub_orderid' => $data['orderid'], // 渠道订单 ]; } // ## 下单 - 处理下单数据 public function getOrder($data){ // username = username if (!empty(array_diff(['username', 'roleid', 'attach'], array_keys($data)))) { return ['code' => -110, 'msg' => '下单参数有误!', 'param' => []]; } if (empty($data['channel_info']['param'])) { return ['code' => -120, 'msg' => '渠道配置参数有误!', 'param' => []]; } $param = $data['channel_info']['param']; $param = json_decode($param, true); $signStr = md5("{$data['member_info']['complex_username']}#{$data['roleid']}#{$data['pay_info']['orderid']}#{$param['app_key']}"); // log_message('Kshy@getOrder.str='."{$data['member_info']['complex_username']}#{$data['roleid']}#{$data['attach']}#{$param['app_key']}".', sign=' . $signStr, 'log', LOG_PATH . 'apilog/'); if ($signStr) { return ['code' => 200, 'msg' => 'success', 'param' => ['sign' => $signStr]]; } return ['code' => -100, 'msg' => '渠道配置参数有误!', 'param' => []]; } // ## 角色 - 处理角色数据 public function getRole($data){ if (!empty(array_diff(['role_id', 'username', 'role_level', 'role_power'], array_keys($data)))) { return ['code' => -110, 'msg' => '下单参数有误!', 'data' => []]; } if (empty($data['complex_param']) || empty($data['complex_param']['app_key'])) { return ['code' => -120, 'msg' => '渠道配置参数有误或缺少!', 'data' => []]; } $complex_param = $data['complex_param']; $signStr = md5("{$data['role_id']}#{$data['complex_username']}#{$complex_param['game_id']}#{$data['role_level']}#0#{$complex_param['app_key']}"); // log_message('Kshy@getRole.str=' ."{$data['role_id']}#{$data['complex_username']}#{$complex_param['game_id']}#{$data['role_level']}#0#{$complex_param['app_key']}".', sign='. $signStr, 'log', LOG_PATH . 'apilog/'); if ($signStr) { return ['code' => 200, 'msg' => 'success', 'data' => $signStr]; } return ['code' => -100, 'msg' => '渠道配置参数有误!', 'data' => []]; } // ## 回调 - 成功返回 public function getSuccess($msg = '') { echo "success"; exit(); } // ## 回调 - 失败返回 public function getFail($msg = '') { log_message('getFail: '.$msg, 'error', LOG_PATH."complexPaylog/{$this->channel}/"); echo "fail:". $msg; exit(); } }