Ledao.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace app\api\complex;
  3. /**
  4. * 乐岛联运安卓
  5. */
  6. class Ledao implements ComplexInterface
  7. {
  8. private $channel = 'ledao';
  9. /**
  10. * ## 登陆 - 校验
  11. *
  12. * @param $data
  13. * @param $polyChannelGame
  14. *
  15. * @return false
  16. */
  17. public function getSpecialParam($data, $polyChannelGame = [])
  18. {
  19. // 参数:user_id = userID, channel_token = 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. 'userID' => $data['user_id'],
  31. 'token' => $data['channel_token'],
  32. ];
  33. $signStr = sprintf('userID=%stoken=%s%s', $param['userID'], $param['token'], $channelConfig['app_secret']);
  34. $param['sign'] = md5($signStr);
  35. $res = get_http_response('http://unionapi.ezjhy.com/user/verifyAccount', $param);
  36. $res = json_decode($res, true);
  37. if ($res['state'] == 1) {
  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. return ['code' => 200, 'msg' => 'success', 'param' => []];
  52. }
  53. // ## 回调 - 效验
  54. public function paySign($data, $polyChannelGame = [])
  55. {
  56. $handleKeys = ['productID', 'orderID', 'userID', 'channelID', 'gameID', 'serverID', 'extension', 'roleID', 'currency', 'signType', 'sign'];
  57. if (array_diff($handleKeys, array_keys($data))) {
  58. return false;
  59. }
  60. $param = [
  61. 'productID' => $data['productID'],
  62. 'orderID' => $data['orderID'],
  63. 'userID' => $data['userID'],
  64. 'channelID' => $data['channelID'],
  65. 'gameID' => $data['gameID'],
  66. 'serverID' => $data['serverID'],
  67. 'money' => $data['money'],
  68. 'extension' => $data['extension'],
  69. 'roleID' => $data['roleID'],
  70. 'currency' => $data['currency'],
  71. 'signType' => $data['signType'],
  72. 'sign' => $data['sign'],
  73. ];
  74. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  75. return false;
  76. }
  77. $hadleSign = $this->signNotify($param, $channelConfig['app_secret']);
  78. if ($data['sign'] == $hadleSign) {
  79. return true;
  80. }
  81. return false;
  82. }
  83. // ## 回调处理相关参数
  84. public function getData($data)
  85. {
  86. if (!isset($data['extension']) || !isset($data['money']) || !isset($data['orderID'])) {
  87. return false;
  88. }
  89. return [
  90. 'orderid' => $data['extension'], // 我方聚合订单
  91. 'amount' => formatFenToYuan($data['money']), // 充值金额(单位:元)
  92. 'sub_orderid' => $data['orderID'], // 渠道订单
  93. ];
  94. }
  95. // ## 回调 - 成功返回
  96. public function getSuccess($msg = '')
  97. {
  98. echo 'SUCCESS';
  99. exit();
  100. }
  101. // ## 回调 - 失败返回
  102. public function getFail($msg = '')
  103. {
  104. echo 'FAIL';
  105. exit();
  106. }
  107. // 回调签名
  108. private function signNotify($param, $app_key)
  109. {
  110. $oldSign = $param['sign'];
  111. unset($param['sign']);
  112. unset($param['signType']);
  113. unset($param['orderTime']);
  114. unset($param['orderCompleteTime']);
  115. ksort($param);
  116. $string = '';
  117. foreach ($param as $k => $v) {
  118. $string .= $k . '=' . $v.'&';
  119. }
  120. $sign = $string . $app_key;
  121. $md5Res = md5($sign);
  122. trace('str=' . $sign . ' - sign: ' . $oldSign . ' - ' . $md5Res, 'Ledao@signNotify.result');
  123. return $md5Res;
  124. }
  125. }