Xinyou.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace app\api\complex;
  3. use ComplexThree\JuLe\joloRsa;
  4. /**
  5. * 信游
  6. */
  7. class Xinyou implements ComplexInterface
  8. {
  9. private $channel = 'xinyou';
  10. /**
  11. * ## 登陆 - 校验
  12. *
  13. * @param $data
  14. * @param $polyChannelGame
  15. *
  16. * @return false
  17. */
  18. public function getSpecialParam($data, $polyChannelGame = [])
  19. {
  20. // 参数:user_id = uid(客户端的uid)
  21. return $data['user_id'];
  22. }
  23. // ## 登陆 - 登陆
  24. public function checkLogin($data, $polyChannelGame = [])
  25. {
  26. return true;
  27. }
  28. // ## 下单 - 客户端需要的参数(客户端自己做了,这块暂时不用)
  29. public function getOrder($data)
  30. {
  31. return ['code' => 200, 'msg' => 'success', 'param' => []];
  32. }
  33. // ## 回调 - 效验
  34. public function paySign($data, $polyChannelGame = [])
  35. {
  36. $param = [
  37. 'pid' => $data['pid'], // 商户ID
  38. 'gid' => $data['gid'], // 游戏ID
  39. 'sid' => $data['sid'], // 游戏服ID
  40. 'uid' => $data['uid'], // 玩家id
  41. 'time' => $data['time'], // 时间戳(Unix time)
  42. 'orderid' => $data['orderid'], // orderid
  43. 'money' => $data['money'], // 充值金额(单位元)
  44. 'type' => $data['type'], // 请求类型(固定值:pay)
  45. 'other' => $data['other'], // 自定义参数(自定义参数)
  46. ];
  47. $getValues = array_values($param);
  48. if (empty(array_diff(['pid', 'gid', 'sid', 'uid', 'time', 'orderid', 'money'], $getValues))) {
  49. return false;
  50. }
  51. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  52. return false;
  53. }
  54. $sign = $data['sign'];
  55. $hadleSign = $this->paySignHandle($param, $channelConfig['pay_key']);
  56. if ($sign == $hadleSign) {
  57. return true;
  58. }
  59. return false;
  60. }
  61. // ## 回调 - 下单参数获取
  62. public function getData($data)
  63. {
  64. if (!isset($data['other']) || !isset($data['money']) || !isset($data['orderid'])) {
  65. return false;
  66. }
  67. return [
  68. 'orderid' => $data['other'], // 我方聚合订单
  69. 'amount' => $data['money'], // 充值金额(单位:元)
  70. 'sub_orderid' => $data['orderid'], // 渠道订单
  71. ];
  72. }
  73. // ## 回调 - 成功返回
  74. public function getSuccess($msg = '')
  75. {
  76. echo json_encode(["code" => 1, "msg" => "成功"], JSON_UNESCAPED_UNICODE);
  77. exit();
  78. }
  79. // ## 回调 - 失败返回
  80. public function getFail($msg = '')
  81. {
  82. echo json_encode(["code" => 5, "msg" => "签名错误"], JSON_UNESCAPED_UNICODE);
  83. exit();
  84. }
  85. // 回调签名判断
  86. private function paySignHandle($param, $pay_key)
  87. {
  88. // MD5(pid#gid#sid#uid#time#orderid #money#pkey)
  89. return md5($param['pid'] . '#' . $param['gid'] . '#' . $param['sid'] . '#' . $param['uid'] . '#' . $param['time'] . '#' . $param['orderid'] . '#' . $param['money'] . '#' . $pay_key);
  90. }
  91. }