Jywan.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace app\api\complex;
  3. use think\Request;
  4. /**
  5. * 91wan(原司墨渠道)
  6. */
  7. class Jywan implements ComplexInterface
  8. {
  9. private $channel = 'jywan';
  10. // game_key
  11. /**
  12. * ## 登陆 - 校验
  13. *
  14. * @param $data
  15. * @param $polyChannelGame
  16. *
  17. * @return false
  18. */
  19. public function getSpecialParam($data, $polyChannelGame = [])
  20. {
  21. // 参数:user_id = user_id
  22. return $data['user_id'];
  23. }
  24. // ## 登陆 - 登陆
  25. public function checkLogin($data, $polyChannelGame = [])
  26. {
  27. // 参数:user_id = user_id, extparam = token
  28. if (empty($data['user_id']) || empty($data['extparam'])) {
  29. return false;
  30. }
  31. $param = [
  32. 'user_id' => $data['user_id'],
  33. 'token' => $data['extparam'],
  34. ];
  35. $res = get_http_response('https://api.17zhe.cn/user/loginVerify', $param);
  36. $res = json_decode($res, true);
  37. if ($res['code'] === 0) {
  38. return ['user_id' => $data['user_id']];
  39. }
  40. return false;
  41. }
  42. // ## 回调 - 效验
  43. public function paySign($data, $polyChannelGame = [])
  44. {
  45. $param = Request::instance()->only(['game_order', 'out_trade_no', 'pay_extra', 'pay_status', 'price', 'user_id', 'sign']);
  46. if(!$param){
  47. return "参数错误!";
  48. }
  49. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  50. return "渠道参数配置错误!";
  51. }
  52. $sign = $param['sign'];
  53. unset($param['sign']);
  54. $hadleSign = md5(http_build_query($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:'.$msg;
  83. exit();
  84. }
  85. // 登陆签名
  86. private function signData($param, $app_key)
  87. {
  88. ksort($param);
  89. foreach ($param as $k => $v) {
  90. $tmp[] = $k . '=' . urlencode($v);
  91. }
  92. $str = implode('&', $tmp) . $app_key;
  93. return md5($str);
  94. }
  95. // 支付回调签名
  96. private function notifySign($params, $key)
  97. {
  98. $data = array(
  99. "tm" => $params['tm'],
  100. "m_order_no" => $params['m_order_no'],
  101. 'cp_order_no' => $params['cp_order_no'],
  102. 'out_trade_no' => $params['out_trade_no'],
  103. "pay_status" => $params['pay_status'],
  104. 'pay_amount' => $params['pay_amount'],
  105. 'uid' => $params['uid'],
  106. 'server_id' => $params['server_id'],
  107. 'server_name' => $params['server_name'],
  108. 'role_id' => $params['role_id'],
  109. "role_name" => $params['role_name'],
  110. "product_id" => $params['product_id'],
  111. "product_name" => $params['product_name'],
  112. );
  113. ksort($data);
  114. $dataSign = http_build_query($data);
  115. return md5($dataSign . $key);
  116. }
  117. }