Ledaoios.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace app\api\complex;
  3. /**
  4. * 乐岛-IOS
  5. */
  6. class Ledaoios implements ComplexInterface
  7. {
  8. private $channel = 'Ledaoios';
  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, channel_token = authToken
  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. 'uid' => $data['user_id'],
  31. 'authToken' => $data['channel_token'],
  32. ];
  33. $res = get_http_response('http://sdk.ezjld.com/checkUser', $param);
  34. $res = json_decode($res, true);
  35. if ($res['status'] == 200) {
  36. return $data['user_id'];
  37. } else {
  38. return false;
  39. }
  40. }
  41. // ## 登陆 - 登陆
  42. public function checkLogin($data, $polyChannelGame = [])
  43. {
  44. return true;
  45. }
  46. // ## 下单 - 客户端需要的参数(客户端自己做了,这块暂时不用)
  47. public function getOrder($data)
  48. {
  49. return ['code' => 200, 'msg' => 'success', 'param' => ['notify_url' => $data['notify_url']]];
  50. }
  51. // ## 回调 - 效验
  52. public function paySign($data, $polyChannelGame = [])
  53. {
  54. $handleKeys = ['orderNumber', 'cpOrderNumber', 'userName', 'uid', 'serverName', 'primaryAmount', 'time', 'extrasParams', 'sign'];
  55. if (array_diff($handleKeys, array_keys($data))) {
  56. return false;
  57. }
  58. $param = [
  59. 'orderNumber' => $data['orderNumber'],
  60. 'cpOrderNumber' => $data['cpOrderNumber'],
  61. 'userName' => $data['userName'],
  62. 'uid' => $data['uid'],
  63. 'serverName' => $data['serverName'],
  64. 'primaryAmount' => $data['primaryAmount'],
  65. 'time' => $data['time'],
  66. 'extrasParams' => $data['extrasParams'],
  67. 'sign' => $data['sign'],
  68. ];
  69. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  70. return false;
  71. }
  72. $hadleSign = $this->signNotify($param, $channelConfig['pay_secret']);
  73. if ($data['sign'] == $hadleSign) {
  74. return true;
  75. }
  76. return false;
  77. }
  78. // ## 回调处理相关参数
  79. public function getData($data)
  80. {
  81. if (!isset($data['cpOrderNumber']) || !isset($data['primaryAmount']) || !isset($data['orderNumber'])) {
  82. return false;
  83. }
  84. return [
  85. 'orderid' => $data['cpOrderNumber'], // 我方聚合订单
  86. 'amount' => formatFenToYuan($data['primaryAmount']), // 充值金额(单位:元)
  87. 'sub_orderid' => $data['orderNumber'], // 渠道订单
  88. ];
  89. }
  90. // ## 回调 - 成功返回
  91. public function getSuccess($msg = '')
  92. {
  93. echo 'SUCCESS';
  94. exit();
  95. }
  96. // ## 回调 - 失败返回
  97. public function getFail($msg = '')
  98. {
  99. echo 'FAIL';
  100. exit();
  101. }
  102. // 回调签名
  103. private function signNotify($param, $app_key)
  104. {
  105. $oldSign = $param['sign'];
  106. unset($param['sign']);
  107. ksort($param);
  108. $string = '';
  109. foreach ($param as $k => $v) {
  110. $string .= $k . '=' . $v . '&';
  111. }
  112. $sign = $string . $app_key;
  113. $md5Res = md5($sign);
  114. trace('str=' . $sign . ' - sign: ' . $oldSign . ' - ' . $md5Res, 'Ledaoios@signNotify.result');
  115. return $md5Res;
  116. }
  117. }