Wanxiong.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * 顽熊 渠道
  4. */
  5. namespace app\api\complex;
  6. use app\common\logic\PayCallback;
  7. use think\Db;
  8. use think\Model;
  9. class Wanxiong
  10. {
  11. private $channel = 'wanxiong';
  12. private $check_url = "http://sdkapi.wx.yuekenet.com/user/v1/token/verify/";
  13. private $appkey = 'VkX3KLQmapIO5goD';
  14. private $paykey = 'jS6pmBf24kX5nQKWezwO';
  15. /**
  16. * 二次登录验证
  17. */
  18. public function checkLogin($data,$polyChannelGame = [])
  19. {
  20. return true;
  21. }
  22. /**
  23. * 支付签名验证
  24. */
  25. public function paySign($data,$polyChannelGame = [])
  26. {
  27. if (empty($data)) {
  28. return false;
  29. }
  30. if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
  31. return false;
  32. }
  33. $params = array();
  34. $params['tm'] = $data['tm'];
  35. $params['cchid'] = $data['cchid'];
  36. $params['appid'] = trim($data['appid']);
  37. $params['m_order_no'] = $data['m_order_no']; //下级渠道的订单号
  38. $params['cp_order_no'] = $data['cp_order_no']; //这个才是自己聚合层(本级)的订单编号
  39. $params['paid_amt'] = $data['paid_amt'];
  40. $params['paid_state'] = $data['paid_state']; //支付状态( 1 为成功,其他都为失败)
  41. $params['paid_time'] = $data['paid_time'];
  42. $params['openid'] = $data['openid'];
  43. if (isset($data['server_id'])) {
  44. $params['server_id'] = $data['server_id'];
  45. }
  46. $params['server_name'] = urldecode($data['server_name']);
  47. $params['role_id'] = $data['role_id'];
  48. $params['role_name'] = urldecode($data['role_name']);
  49. $params['product_id'] = $data['product_id'];
  50. $params['product_name'] = urldecode($data['product_name']);
  51. $params['cp_ext'] = isset($data['cp_ext'])?$data['cp_ext']:'';
  52. $params['is_test'] = $data['is_test'];
  53. $sign = $data['sign'];
  54. $thisSign = $this->sign($params, $paramArr['paykey']);
  55. if ($sign == $thisSign && $params['paid_state'] == 1) {
  56. return true;
  57. }
  58. return false;
  59. }
  60. private function sign($param, $key)
  61. {
  62. $param = array_filter($param, function ($v, $k) {
  63. if ($k !== 'sign_type' && $k !== 'sign' && $v !== '') {
  64. return true;
  65. }
  66. }, ARRAY_FILTER_USE_BOTH);
  67. ksort($param);
  68. reset($param);
  69. $signStr = '';
  70. foreach ($param as $k => $v) {
  71. $signStr .= $k . '=' . $v . '&';
  72. }
  73. if (get_magic_quotes_gpc()) {
  74. $signStr = stripslashes($signStr);
  75. }
  76. return md5($signStr . $key);
  77. }
  78. /**
  79. * 系统使用参数名转换
  80. */
  81. public function getData($data)
  82. {
  83. return [
  84. 'orderid'=>$data['cp_order_no'],//我方聚合订单
  85. 'amount'=>$data['paid_amt'], // 充值金额
  86. 'sub_orderid'=>$data['m_order_no'],//渠道订单
  87. ];
  88. }
  89. public function getFail($msg = '')
  90. {
  91. echo 'FAIL';
  92. exit();
  93. }
  94. public function getSuccess($msg = '')
  95. {
  96. echo 'SUCCESS';
  97. exit();
  98. }
  99. /**
  100. * 获取用户id
  101. * @param $data
  102. * @return bool
  103. */
  104. public function getSpecialParam($data,$polyChannelGame = []){
  105. if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
  106. return false;
  107. }
  108. $param = [
  109. 'tm' => time(),
  110. 'cchid' => $data['cchid'],
  111. 'appid' => $data['cappid'],
  112. 'access_token' => $data['channelToken'],
  113. ];
  114. $param['sign'] = $this->sign($param, $paramArr['appkey']);
  115. $result = getCurl($this->check_url, $param);
  116. log_message($this->check_url . '?' . http_build_query($param) . ' ' . $result, 'log', LOG_PATH . 'complexLoginlog/' . $this->channel . '/');
  117. $result = json_decode($result, true);
  118. if ($result['code'] == 200) {
  119. return $result['data']['openid'];
  120. } else {
  121. return false;
  122. }
  123. }
  124. }