Youchen.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace app\api\complex;
  3. use think\Request;
  4. /**
  5. * 游辰
  6. */
  7. class Youchen implements ComplexInterface
  8. {
  9. private $channel = 'youchen';
  10. /**
  11. * ## 登陆 - 校验
  12. *
  13. * @param $data
  14. * @param $polyChannelGame
  15. *
  16. * @return false
  17. */
  18. public function getSpecialParam($data, $polyChannelGame = [])
  19. {
  20. // 参数:user_id = user_id
  21. return $data['user_id'];
  22. }
  23. // ## 登陆 - 登陆
  24. public function checkLogin($data, $polyChannelGame = [])
  25. {
  26. // 参数:channel_token = token
  27. if (!isset($data['user_id']) || !isset($data['channel_token'])) {
  28. return ['code' => -610, 'msg' => '对接参数有误', 'data' => []];
  29. }
  30. if (empty($polyChannelGame['param'])) {
  31. return ['code' => -611, 'msg' => '对接参数异常', 'data' => []];
  32. }
  33. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  34. return ['code' => -660, 'msg' => '渠道缺少参数配置', 'data' => []];
  35. }
  36. $param = [
  37. 'appid' => $channelConfig['app_id'],
  38. 'time' => time(),
  39. 'token' => $data['channel_token'],
  40. ];
  41. $param['sign'] = md5("appid={$param['appid']}&time={$param['time']}&token={$param['token']}{$channelConfig['app_key']}");
  42. $res = getHttpPost('https://api.hzycx.top/api/user/checkToken', $param);
  43. $res = json_decode($res, true);
  44. if (!empty($res['state']) && !empty($res['state']['code']) && $res['state']['code'] == 1) {
  45. return ['user_id' => $res['data']['uid']];
  46. } else {
  47. return ['code' => -600, 'msg' => '渠道登录效验失败', 'data' => []];
  48. }
  49. }
  50. // ## 回调 - 效验
  51. public function paySign($data, $polyChannelGame = [])
  52. {
  53. $param = Request::instance()->only(['appid', 'data', 'sign']);
  54. if (empty($param['appid']) || empty($param['data'])|| empty($param['sign'])) {
  55. return ['code' => -710, 'msg' => '对接参数异常', 'data' => []];
  56. }
  57. if(!$data = json_decode($param['data'], true)){
  58. return ['code' => -711, 'msg' => '对接参数异常!', 'data' => []];
  59. }
  60. if (empty($polyChannelGame['param'])) {
  61. return ['code' => -720, 'msg' => '渠道缺少参数配置', 'data' => []];
  62. }
  63. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  64. return ['code' => -721, 'msg' => '渠道参数配置有误!', 'data' => []];
  65. }
  66. $datas = [
  67. 'callbackInfo' => $data['callbackInfo'],
  68. 'cpOrder' => $data['cpOrder'],
  69. 'goodsID' => $data['goodsID'],
  70. 'money' => $data['money'],
  71. 'orderId' => $data['orderId'],
  72. 'roleID' => $data['roleID'],
  73. 'serverId' => $data['serverId'],
  74. 'uid' => $data['uid'],
  75. ];
  76. ksort($datas);
  77. $sign = md5($param['appid'].urldecode(http_build_query($datas)).$channelConfig['pay_key']);
  78. if ($param['sign'] == $sign) {
  79. return true;
  80. }
  81. return ['code' => -700, 'msg' => '回调处理失败!', 'data' => []];
  82. }
  83. // ## 回调 - 下单参数获取
  84. public function getData($data)
  85. {
  86. $param = Request::instance()->only(['appid', 'data', 'sign']);
  87. if(!$data = json_decode($param['data'], true)){
  88. return ['code' => -710, 'msg' => '回调参数有误!', 'data' => []];
  89. }
  90. if (!isset($data['cpOrder']) || !isset($data['money']) || !isset($data['orderId'])) {
  91. return ['code' => -720, 'msg' => '回调参数有误!', 'data' => []];
  92. }
  93. return [
  94. 'orderid' => $data['cpOrder'], // 我方聚合订单
  95. 'amount' => $data['money'],// 充值金额(单位:元)
  96. 'sub_orderid' => $data['orderId'], // 渠道订单
  97. ];
  98. }
  99. // ## 回调 - 成功返回
  100. public function getSuccess($msg = '')
  101. {
  102. echo "SUCCESS";
  103. exit();
  104. }
  105. // ## 回调 - 失败返回
  106. public function getFail($msg = '')
  107. {
  108. echo "FAIL:".$msg;
  109. exit();
  110. }
  111. }