Yinhu.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\api\complex;
  3. use think\Request;
  4. /**
  5. * 银狐
  6. */
  7. class Yinhu implements ComplexInterface
  8. {
  9. private $channel = 'yinhu';
  10. // ## 渠道校验
  11. public function getSpecialParam($data, $polyChannelGame = [])
  12. {
  13. // 参数:extparam = token
  14. if (!isset($data['extparam'])) {
  15. return ['code' => -610, 'msg' => '对接参数有误', 'data' => []];
  16. }
  17. try {
  18. $res = getHttpPost('https://api.yinhushouyou.com/api/Game/user_login', ['token' => $data['extparam']]);
  19. $res = json_decode($res, true);
  20. if ($res['code'] == 1) {
  21. // 互通游戏必要
  22. return $res['data']['uid'];
  23. }
  24. } catch (\Exception $e) {
  25. return ['code' => -630, 'msg' => '渠道登录效验处理失败:'.$e->getMessage(), 'data' => []];
  26. }
  27. return ['code' => -600, 'msg' => '渠道登录效验失败', 'data' => []];
  28. }
  29. // ## 登陆效验
  30. public function checkLogin($data, $polyChannelGame = [])
  31. {
  32. return ['user_id' => $data['user_id']];
  33. }
  34. /**
  35. * ## 回调 - 效验
  36. * attach = 需要客户端传递祈盟订单号
  37. *
  38. * @param $data
  39. * @param $polyChannelGame
  40. *
  41. * @return array|true
  42. */
  43. public function paySign($data, $polyChannelGame = [])
  44. {
  45. $getParamKeys = ['cporderid', 'orderid', 'appid', 'uid', 'time', 'extinfo', 'amount', 'serverid', 'charid', 'sign'];
  46. $param = Request::instance()->only($getParamKeys);
  47. if (hasAllKeys($param, $getParamKeys)) {
  48. return false;
  49. }
  50. if (empty($param['cporderid']) || empty($param['orderid'])|| empty($param['sign'])) {
  51. return ['code' => -710, 'msg' => '对接参数异常', 'data' => []];
  52. }
  53. if (empty($polyChannelGame['param'])) {
  54. return ['code' => -720, 'msg' => '渠道缺少参数配置', 'data' => []];
  55. }
  56. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  57. return ['code' => -721, 'msg' => '渠道参数配置有误!', 'data' => []];
  58. }
  59. $sign = $param['sign'];
  60. unset($param['sign']);
  61. ksort($param);
  62. $signstr = http_build_query($param); //组成字符串拼接到游戏方回调地址上
  63. $handleSign = md5($signstr.$channelConfig['pay_key']); //加密结果为 7aa30240753d89e85d145dd459687c2a
  64. if ($sign == $handleSign) {
  65. return true;
  66. }
  67. return ['code' => -700, 'msg' => '回调处理异常!', 'data' => []];
  68. }
  69. // ## 回调 - 下单参数获取
  70. public function getData($data)
  71. {
  72. if (!isset($data['cporderid']) || !isset($data['amount']) || !isset($data['orderid'])) {
  73. return false;
  74. }
  75. return [
  76. 'orderid' => $data['cporderid'], // 我方聚合订单
  77. 'amount' => $data['amount'], // 充值金额(单位:元)
  78. 'sub_orderid' => $data['orderid'], // 渠道订单
  79. ];
  80. }
  81. // ## 回调 - 成功返回
  82. public function getSuccess($msg = '')
  83. {
  84. echo "success";
  85. exit();
  86. }
  87. // ## 回调 - 失败返回
  88. public function getFail($msg = '')
  89. {
  90. log_message('getFail: '.$msg, 'error', LOG_PATH."complexPaylog/{$this->channel}/");
  91. echo "fail:". $msg;
  92. exit();
  93. }
  94. }