Youxiyou.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <?php
  2. namespace app\api\complex;
  3. /**
  4. * 游戏友 - v2.5.0
  5. */
  6. class Youxiyou implements ComplexInterface
  7. {
  8. private $channel = 'youxiyou';
  9. /**
  10. * ## 登陆 - 校验
  11. *
  12. * @param $data
  13. * @param $polyChannelGame
  14. *
  15. * @return false
  16. */
  17. public function getSpecialParam($data, $polyChannelGame = [])
  18. {
  19. // 参数:user_id = user_id, 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. 'user_id' => $data['user_id'],
  31. 'token' => $data['channel_token'],
  32. ];
  33. $res = getHttpPost('https://sdk-api.youxiyou.cn/login_notify/login_verify', $param);
  34. $res = json_decode($res, true);
  35. if ($res['code'] == 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' => []];
  50. }
  51. // ## 回调 - 效验
  52. public function paySign($data, $polyChannelGame = [])
  53. {
  54. $handleKeys = ['game_order', 'out_trade_no', 'pay_extra', 'pay_status', 'price', 'user_id', 'sign'];
  55. if (array_diff($handleKeys, array_keys($data))) {
  56. return false;
  57. }
  58. $param = [
  59. 'game_order' => $data['game_order'], // sdk下单时,游戏方透传信息(CP订单号)
  60. 'out_trade_no' => $data['out_trade_no'], // 平台方订单
  61. 'pay_extra' => $data['pay_extra'], // 透传参数
  62. 'pay_status' => $data['pay_status'], // 支付结果 固定值1
  63. 'price' => $data['price'], // 支付金额(单位:元)
  64. 'user_id' => $data['user_id'], // 用户唯一标识,游戏方需验证是否和发起订单一致
  65. 'sign' => $data['sign'],
  66. ];
  67. // $getValues = array_values($param);
  68. // if (empty(array_diff(['game_order', 'out_trade_no', 'pay_extra', 'pay_status', 'price', 'user_id', 'sign'], $getValues))) {
  69. // return false;
  70. // }
  71. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  72. return false;
  73. }
  74. $hadleSign = md5($param['game_order'].$param['out_trade_no'].$param['pay_extra'].$param['pay_status'].$param['price'].$param['user_id'].$channelConfig['game_key']);
  75. if ($param['sign'] == $hadleSign) {
  76. return true;
  77. }
  78. return false;
  79. }
  80. // ## 回调 - 下单参数获取
  81. public function getData($data)
  82. {
  83. if (!isset($data['game_order']) || !isset($data['price']) || !isset($data['out_trade_no'])) {
  84. return false;
  85. }
  86. return [
  87. 'orderid' => $data['game_order'], // 我方聚合订单
  88. 'amount' => $data['price'], // 充值金额(单位:元)
  89. 'sub_orderid' => $data['out_trade_no'], // 渠道订单
  90. ];
  91. }
  92. // ## 回调 - 成功返回
  93. public function getSuccess($msg = '')
  94. {
  95. echo "success";
  96. exit();
  97. }
  98. // ## 回调 - 失败返回
  99. public function getFail($msg = '')
  100. {
  101. echo "failure:" . $msg;
  102. exit();
  103. }
  104. }