Dangle.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. namespace app\api\complex;
  3. /**
  4. * 当乐
  5. */
  6. class Dangle implements ComplexInterface
  7. {
  8. private $channel = 'dangle';
  9. /**
  10. * ## 登陆 - 校验
  11. *
  12. * @param $data
  13. * @param $polyChannelGame
  14. *
  15. * @return false
  16. */
  17. public function getSpecialParam($data, $polyChannelGame = [])
  18. {
  19. // 参数:user_id = umid, channel_token = access_token
  20. if (!isset($data['user_id']) || !isset($data['channel_token'])) {
  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. 'appid' => $channelConfig['app_id'],
  31. 'token' => $data['channel_token'],
  32. 'umid' => $data['user_id'],
  33. ];
  34. $param['sig'] = md5(sprintf("%s|%s|%s|%s", $param['appid'], $channelConfig['app_key'], $param['token'], $param['umid']));
  35. $res = getHttpGet('https://ctmaster.d.cn/api/cp/checkToken', $param);
  36. $res = json_decode($res, true);
  37. if ($res['msg_code'] == 2000) {
  38. return $data['user_id'];
  39. } else {
  40. return false;
  41. }
  42. }
  43. // ## 登陆 - 登陆
  44. public function checkLogin($data, $polyChannelGame = [])
  45. {
  46. return true;
  47. }
  48. // ## 下单 - 客户端需要的参数
  49. public function getOrder($data)
  50. {
  51. if (!$channelConfig = json_decode($data['channel_info']['param'], true)) {
  52. return false;
  53. }
  54. $param = [
  55. "cpOrder" => $data['pay_info']['orderid'],
  56. "ext" => "ext",
  57. "money" => number_format($data['amount'], 2),
  58. "roleId" => $data['roleid'],
  59. "umid" => $data['member_info']['complex_id'],
  60. ];
  61. $sign = md5("{$param['cpOrder']}|{$param['ext']}|{$param['money']}|{$param['roleId']}|{$param['umid']}|{$channelConfig['pay_key']}");
  62. return ['code' => 200, 'msg' => 'success', 'param' => ['sign' => $sign]];
  63. }
  64. // ## 回调 - 效验
  65. public function paySign($data, $polyChannelGame = [])
  66. {
  67. $param = [
  68. 'result' => $data['result'], // 商户ID
  69. 'money' => $data['money'], // 游戏ID
  70. 'order' => $data['order'], // 游戏服ID
  71. 'mid' => $data['mid'], // 玩家id
  72. 'time' => $data['time'], // 时间戳(Unix time)
  73. 'ext' => $data['ext'], // orderid
  74. 'cpOrder' => $data['cpOrder'], // 充值金额(单位元)
  75. 'signature' => $data['signature'], // 自定义参数(自定义参数)
  76. ];
  77. $getValues = array_values($param);
  78. if (empty(array_diff(['result', 'money', 'order', 'mid', 'time', 'ext', 'cpOrder', 'signature'], $getValues))) {
  79. return false;
  80. }
  81. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  82. return false;
  83. }
  84. $hadleSign = md5("order={$param['order']}&money={$param['money']}&mid={$param['mid']}&time={$param['time']}&result={$param['result']}&cpOrder={$param['cpOrder']}&ext={$param['ext']}&key={$channelConfig['pay_key']}");
  85. if ($param['signature'] == $hadleSign) {
  86. return true;
  87. }
  88. return false;
  89. }
  90. // ## 回调 - 下单参数获取
  91. public function getData($data)
  92. {
  93. if (!isset($data['cpOrder']) || !isset($data['money']) || !isset($data['order'])) {
  94. return false;
  95. }
  96. return [
  97. 'orderid' => $data['cpOrder'], // 我方聚合订单
  98. 'amount' => $data['money'], // 充值金额(单位:元)
  99. 'sub_orderid' => $data['order'], // 渠道订单
  100. ];
  101. }
  102. // ## 回调 - 成功返回
  103. public function getSuccess($msg = '')
  104. {
  105. echo "success";
  106. exit();
  107. }
  108. // ## 回调 - 失败返回
  109. public function getFail($msg = '')
  110. {
  111. echo "failure";
  112. exit();
  113. }
  114. }