Jywanh5.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace app\api\complex;
  3. use think\Request;
  4. /**
  5. * 91玩 H5
  6. */
  7. class Jywanh5 implements ComplexInterface
  8. {
  9. private $channel = 'Jywanh5';
  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. // 参数:user_id = user_id, extparam = {'channelExt':'', 'agent_id':'', 'game_appid':'', 'timestamp':'', 'loginplatform2cp':'', 'user_id':'', 'birthday':'', 'sign':''}
  27. if (empty($data['user_id']) || empty($data['extparam'])) {
  28. return false;
  29. }
  30. $extparam = json_decode($data['extparam'], true);
  31. if (empty($extparam)) {
  32. return false;
  33. }
  34. if (empty($polyChannelGame['param'])) {
  35. return false;
  36. }
  37. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  38. return false;
  39. }
  40. $sign = $this->signData($extparam, $channelConfig['game_key']);
  41. if ($extparam['sign'] === $sign) {
  42. return ['user_id' => $extparam['user_id']];
  43. }
  44. return false;
  45. }
  46. // ## 回调 - 效验
  47. public function paySign($data, $polyChannelGame = [])
  48. {
  49. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  50. return false;
  51. }
  52. $param = Request::instance()->only(['game_order', 'out_trade_no', 'pay_extra', 'pay_status', 'price', 'user_id', 'sign']);
  53. $sign = $data['sign'];
  54. $hadleSign = $this->signData($param, $channelConfig['game_key']);
  55. if ($sign == $hadleSign) {
  56. return true;
  57. }
  58. return false;
  59. }
  60. // ## 回调 - 下单参数获取
  61. public function getData($data)
  62. {
  63. if (!isset($data['game_order']) || !isset($data['price']) || !isset($data['out_trade_no'])) {
  64. return false;
  65. }
  66. return [
  67. 'orderid' => $data['game_order'], // 我方聚合订单
  68. 'amount' => $data['price'], // 充值金额(单位:元)
  69. 'sub_orderid' => $data['out_trade_no'], // 渠道订单
  70. ];
  71. }
  72. // ## 回调 - 成功返回
  73. public function getSuccess($msg = '')
  74. {
  75. echo 'success';
  76. exit();
  77. }
  78. // ## 回调 - 失败返回
  79. public function getFail($msg = '')
  80. {
  81. log_message('getFail: '.$msg, 'error', LOG_PATH."complexPaylog/{$this->channel}/");
  82. echo 'fail';
  83. exit();
  84. }
  85. // 签名
  86. private function signData($param, $game_key)
  87. {
  88. unset($param['sign']);
  89. ksort($param);
  90. foreach ($param as $k => $v) {
  91. $tmp[] = $k . '=' . urlencode($v);
  92. }
  93. $str = implode('&', $tmp) . $game_key;
  94. return md5($str);
  95. }
  96. }