Weilian.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace app\api\complex;
  3. /**
  4. * 唯恋-v2
  5. */
  6. class Weilian implements ComplexInterface
  7. {
  8. private $channel = 'weilian';
  9. /**
  10. * ## 登陆 - 校验
  11. *
  12. * @param $data
  13. * @param $polyChannelGame
  14. *
  15. * @return false
  16. */
  17. public function getSpecialParam($data, $polyChannelGame = [])
  18. {
  19. // 参数:user_id = uid
  20. if (empty($data['user_id'])) {
  21. return false;
  22. }
  23. if (empty($polyChannelGame['param'])) {
  24. return false;
  25. }
  26. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  27. return false;
  28. }
  29. $param = [
  30. 'app_id' => $channelConfig['app_id'],
  31. 'timestamp' => time(),
  32. 'uid' => $data['user_id'],
  33. ];
  34. $param['sign'] = md5("app_id={$channelConfig['app_id']}&timestamp={$param['timestamp']}&uid={$param['uid']}&pay_key={$channelConfig['pay_key']}");
  35. $res = get_http_response('https://sdk.frpmce.cn/tools/gamefactor.ashx?action=factor_login', $param);
  36. $res = json_decode($res, true);
  37. if ($res['status'] == 1) {
  38. return $data['user_id'];
  39. } else {
  40. // log_message('Weilian@getSpecialParam.str='."app_id={$channelConfig['app_id']}&timestamp={$param['timestamp']}&uid={$param['uid']}&pay_key={$channelConfig['pay_key']}".', sign=' . $param['sign'], 'log', LOG_PATH . 'apilog/');
  41. return false;
  42. }
  43. }
  44. // ## 登陆 - 登陆
  45. public function checkLogin($data, $polyChannelGame = [])
  46. {
  47. return true;
  48. }
  49. // ## 下单 - 处理下单数据
  50. public function getOrder($data){
  51. if (!empty(array_diff(['attach'], array_keys($data)))) {
  52. return ['code' => -110, 'msg' => '下单参数有误!', 'param' => []];
  53. }
  54. if (empty($data['channel_info']['param'])) {
  55. return ['code' => -120, 'msg' => '渠道配置参数有误!', 'param' => []];
  56. }
  57. $param = $data['channel_info']['param'];
  58. $param = json_decode($param, true);
  59. $timestamp = time();
  60. // $signStr = sprintf(
  61. // "amount=%s&app_id=%s&cporder=%s&timestamp=%s&uid=%s%s",
  62. // $data['attach'],
  63. // $param['app_id'],
  64. // $data['pay_info']['orderid'],
  65. // $timestamp,
  66. // $data['member_info']['complex_username'],
  67. // $param['pay_key']
  68. // );
  69. $amount = formatYuanToFen($data['amount']);
  70. $signStr = "amount={$amount}&app_id={$param['app_id']}&cporder={$data['pay_info']['orderid']}&timestamp={$timestamp}&uid={$data['member_info']['complex_username']}{$param['pay_key']}";
  71. $sign = md5($signStr);
  72. // log_message('Weilian@getOrder.str='.$signStr.', sign=' . $sign, 'log', LOG_PATH . 'apilog/');
  73. if ($sign) {
  74. return ['code' => 200, 'msg' => 'success', 'param' => ['sign' => $sign, 'extension' => $timestamp]];
  75. }
  76. return ['code' => -100, 'msg' => '渠道配置参数有误!', 'param' => []];
  77. }
  78. // ## 回调 - 效验
  79. public function paySign($data, $polyChannelGame = [])
  80. {
  81. $handleKeys = ['app_id', 'timestamp', 'uid', 'cp_order_id', 'order_id', 'order_amount', 'server_id', 'role_id', 'sign'];
  82. if (array_diff($handleKeys, array_keys($data))) {
  83. return false;
  84. }
  85. $param = [
  86. "app_id" => $data['app_id'],
  87. "timestamp" => $data['timestamp'],
  88. "uid" => $data['uid'],
  89. "cp_order_id" => $data['cp_order_id'],
  90. "order_id" => $data['order_id'],
  91. "order_amount" => $data['order_amount'],
  92. "server_id" => $data['server_id'],
  93. "role_id" => $data['role_id'],
  94. "extras_params" => $data['extras_params']??'',
  95. "sign" => $data['sign'],
  96. ];
  97. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  98. return false;
  99. }
  100. $hadleSign = md5("app_id={$param['app_id']}&cp_order_id={$param['cp_order_id']}&order_amount={$param['order_amount']}&order_id={$param['order_id']}
  101. &role_id={$param['role_id']}&server_id={$param['server_id']}&timestamp={$param['timestamp']}&uid={$param['uid']}&pay_key={$channelConfig['pay_key']}");
  102. if ($param['sign'] == $hadleSign) {
  103. return true;
  104. }
  105. return false;
  106. }
  107. // ## 回调处理相关参数
  108. public function getData($data)
  109. {
  110. if (!isset($data['cp_order_id']) || !isset($data['order_amount']) || !isset($data['order_id'])) {
  111. return false;
  112. }
  113. return [
  114. 'orderid' => $data['cp_order_id'], // 我方聚合订单
  115. 'amount' => $data['order_amount'], // 充值金额(单位:元)
  116. 'sub_orderid' => $data['order_id'], // 渠道订单
  117. ];
  118. }
  119. // ## 回调 - 成功返回
  120. public function getSuccess($msg = '')
  121. {
  122. echo 'SUCCESS';
  123. exit();
  124. }
  125. // ## 回调 - 失败返回
  126. public function getFail($msg = '')
  127. {
  128. trace($this->channel . '@getFail@回调失败:' . $msg);
  129. echo 'FAILURE';
  130. exit();
  131. }
  132. }