Kshy.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <?php
  2. namespace app\api\complex;
  3. use think\Request;
  4. /**
  5. * 旷世互娱
  6. */
  7. class Kshy implements ComplexInterface
  8. {
  9. private $channel = 'kshy';
  10. /**
  11. * ## 登陆 - 校验
  12. *
  13. * @param $data
  14. * @param $polyChannelGame
  15. *
  16. * @return false
  17. */
  18. public function getSpecialParam($data, $polyChannelGame = [])
  19. {
  20. if(empty($data['username'])){
  21. return ['code' => -510, 'msg' => '缺少必传参数: username', 'data' => []];
  22. }
  23. return $data['username'];
  24. }
  25. // ## 登陆 - 登陆
  26. public function checkLogin($data, $polyChannelGame = [])
  27. {
  28. // 参数:username = username, extparam = logintime
  29. if (!isset($data['username']) || !isset($data['extparam'])) {
  30. return ['code' => -610, 'msg' => '对接参数有误', 'data' => []];
  31. }
  32. if (empty($polyChannelGame['param'])) {
  33. return ['code' => -611, 'msg' => '对接参数异常', 'data' => []];
  34. }
  35. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  36. return ['code' => -620, 'msg' => '渠道缺少参数配置', 'data' => []];
  37. }
  38. try {
  39. // app_id, app_key, game_id
  40. $param = [
  41. 'username' => $data['username'],
  42. 'logintime' => $data['extparam'],
  43. 'appid' => $channelConfig['app_id'],
  44. 'gameid' => $channelConfig['game_id'],
  45. ];
  46. $param['sign'] = md5("&appkey=" . $channelConfig['app_key'] . "&logintime=" . $data['extparam'] . "username=" . $data['username']);
  47. $res = getHttpPost('http://api2.kas6.cn/sdkapi/login/verification', $param);
  48. $res = json_decode($res, true);
  49. if ($res['status'] == 1) {
  50. // 互通游戏必要
  51. return ['user_id' => $data['username']];
  52. }
  53. return ['code' => -600, 'msg' => '渠道登录效验失败', 'data' => []];
  54. } catch (\Exception $e) {
  55. // dump($e->getMessage(), $e->getFile().":".$e->getLine());
  56. return ['code' => -630, 'msg' => '渠道登录效验处理失败:'.$e->getMessage(), 'data' => []];
  57. }
  58. }
  59. /**
  60. * ## 回调 - 效验
  61. * attach = 需要客户端传递祈盟订单号
  62. *
  63. * @param $data
  64. * @param $polyChannelGame
  65. *
  66. * @return array|true
  67. */
  68. public function paySign($data, $polyChannelGame = [])
  69. {
  70. $param = Request::instance()->only(['orderid', 'username', 'gameid', 'roleid', 'serverid', 'paytype', 'amount', 'paytime', 'attach', 'sign']);
  71. if (empty($param['orderid']) || empty($param['gameid'])|| empty($param['sign'])) {
  72. return ['code' => -710, 'msg' => '对接参数异常', 'data' => []];
  73. }
  74. if (empty($polyChannelGame['param'])) {
  75. return ['code' => -720, 'msg' => '渠道缺少参数配置', 'data' => []];
  76. }
  77. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  78. return ['code' => -721, 'msg' => '渠道参数配置有误!', 'data' => []];
  79. }
  80. $param['appkey'] = $channelConfig['app_key'];
  81. $string = "";
  82. foreach ($param as $k => $v) {
  83. if($k == 'sign'){
  84. continue;
  85. }
  86. if($v){
  87. $v = urldecode($v);
  88. }
  89. if ($string) {
  90. $string .= "&{$k}={$v}";
  91. } else {
  92. $string = "{$k}={$v}";
  93. }
  94. }
  95. $md5Res = md5($string);
  96. if ($param['sign'] == $md5Res) {
  97. return true;
  98. }
  99. return ['code' => -700, 'msg' => '回调效验失败!', 'data' => []];
  100. }
  101. // ## 回调 - 下单参数获取
  102. public function getData($data)
  103. {
  104. if (!isset($data['attach']) || !isset($data['amount']) || !isset($data['orderid'])) {
  105. return false;
  106. }
  107. return [
  108. 'orderid' => $data['attach'], // 我方聚合订单
  109. 'amount' => $data['amount'], // 充值金额(单位:元)
  110. 'sub_orderid' => $data['orderid'], // 渠道订单
  111. ];
  112. }
  113. // ## 下单 - 处理下单数据
  114. public function getOrder($data){
  115. // username = username
  116. if (!empty(array_diff(['username', 'roleid', 'attach'], array_keys($data)))) {
  117. return ['code' => -110, 'msg' => '下单参数有误!', 'param' => []];
  118. }
  119. if (empty($data['channel_info']['param'])) {
  120. return ['code' => -120, 'msg' => '渠道配置参数有误!', 'param' => []];
  121. }
  122. $param = $data['channel_info']['param'];
  123. $param = json_decode($param, true);
  124. $signStr = md5("{$data['member_info']['complex_username']}#{$data['roleid']}#{$data['pay_info']['orderid']}#{$param['app_key']}");
  125. // log_message('Kshy@getOrder.str='."{$data['member_info']['complex_username']}#{$data['roleid']}#{$data['attach']}#{$param['app_key']}".', sign=' . $signStr, 'log', LOG_PATH . 'apilog/');
  126. if ($signStr) {
  127. return ['code' => 200, 'msg' => 'success', 'param' => ['sign' => $signStr]];
  128. }
  129. return ['code' => -100, 'msg' => '渠道配置参数有误!', 'param' => []];
  130. }
  131. // ## 角色 - 处理角色数据
  132. public function getRole($data){
  133. if (!empty(array_diff(['role_id', 'username', 'role_level', 'role_power'], array_keys($data)))) {
  134. return ['code' => -110, 'msg' => '下单参数有误!', 'data' => []];
  135. }
  136. if (empty($data['complex_param']) || empty($data['complex_param']['app_key'])) {
  137. return ['code' => -120, 'msg' => '渠道配置参数有误或缺少!', 'data' => []];
  138. }
  139. $complex_param = $data['complex_param'];
  140. $signStr = md5("{$data['role_id']}#{$data['complex_username']}#{$complex_param['game_id']}#{$data['role_level']}#0#{$complex_param['app_key']}");
  141. // 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/');
  142. if ($signStr) {
  143. return ['code' => 200, 'msg' => 'success', 'data' => $signStr];
  144. }
  145. return ['code' => -100, 'msg' => '渠道配置参数有误!', 'data' => []];
  146. }
  147. // ## 回调 - 成功返回
  148. public function getSuccess($msg = '')
  149. {
  150. echo "success";
  151. exit();
  152. }
  153. // ## 回调 - 失败返回
  154. public function getFail($msg = '')
  155. {
  156. log_message('getFail: '.$msg, 'error', LOG_PATH."complexPaylog/{$this->channel}/");
  157. echo "fail:". $msg;
  158. exit();
  159. }
  160. }