Gyln.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace app\api\complex;
  3. use ComplexThree\JuLe\joloRsa;
  4. use think\Request;
  5. /**
  6. * 光影流年(同司墨)
  7. */
  8. class Gyln implements ComplexInterface
  9. {
  10. private $channel = 'gyln';
  11. // app_key;pay_key
  12. /**
  13. * ## 登陆 - 校验
  14. *
  15. * @param $data
  16. * @param $polyChannelGame
  17. *
  18. * @return false
  19. */
  20. public function getSpecialParam($data, $polyChannelGame = [])
  21. {
  22. // 参数:user_id = uid
  23. return $data['user_id'];
  24. }
  25. // ## 登陆 - 登陆
  26. public function checkLogin($data, $polyChannelGame = [])
  27. {
  28. // 参数:user_id = uid, extparam = auth
  29. if (empty($data['user_id']) || empty($data['extparam'])) {
  30. // return "参数错误!";
  31. return false;
  32. }
  33. if (empty($polyChannelGame['param'])) {
  34. // return "渠道参数未配置!";
  35. return false;
  36. }
  37. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  38. // return "渠道参数配置错误!";
  39. return false;
  40. }
  41. $param = [
  42. 'uid' => $data['user_id'],
  43. 'auth' => $data['extparam'],
  44. 'tm' => time(),
  45. ];
  46. ksort($param);
  47. foreach ($param as $k => $v) {
  48. $tmp[] = $k . '=' . urlencode($v);
  49. }
  50. $str = implode('&', $tmp) . $channelConfig['app_key'];
  51. $param['sign'] = md5($str);
  52. $res = get_http_response('https://api.8yoo.com/user/loginVerify', $param);
  53. $res = json_decode($res, true);
  54. if ($res['code'] === 0) {
  55. return ['user_id' => $res['data']['user_id']];
  56. }
  57. // return "登录验证失败!";
  58. return false;
  59. }
  60. // ## 回调 - 效验
  61. public function paySign($data, $polyChannelGame = [])
  62. {
  63. $param = Request::instance()->only(['tm', 'm_order_no', 'cp_order_no', 'out_trade_no', 'pay_status', 'pay_amount', 'uid', 'server_id', 'server_name', 'role_id', 'role_name', 'product_id', 'product_name', 'sign']);
  64. if(!$param){
  65. return "缺少必要参数!";
  66. }
  67. $getValues = array_values($param);
  68. if (empty(array_diff(['m_order_no', 'cp_order_no', 'out_trade_no', 'pay_status', 'pay_amount', 'uid'], $getValues))) {
  69. return "回调参数缺失!";
  70. }
  71. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  72. return "渠道参数配置错误!";
  73. }
  74. $sign = $param['sign'];
  75. unset($param['sign']);
  76. ksort($param);
  77. $dataSign = http_build_query($param);
  78. $handleSign = md5($dataSign . $channelConfig['pay_key']);
  79. if ($sign == $handleSign) {
  80. return true;
  81. }
  82. return "签名验证失败!";
  83. }
  84. // ## 回调 - 下单参数获取
  85. public function getData($data)
  86. {
  87. if (!isset($data['cp_order_no']) || !isset($data['pay_amount']) || !isset($data['m_order_no'])) {
  88. return false;
  89. }
  90. return [
  91. 'orderid' => $data['cp_order_no'], // 我方聚合订单
  92. 'amount' => $data['pay_amount'], // 充值金额(单位:元)
  93. 'sub_orderid' => $data['m_order_no'], // 渠道订单
  94. ];
  95. }
  96. // ## 下单
  97. public function getOrder($data)
  98. {
  99. return ['code' => 200, 'msg' => 'success', 'param' => []];
  100. }
  101. // ## 回调 - 成功返回
  102. public function getSuccess($msg = '')
  103. {
  104. echo 'success';
  105. exit();
  106. }
  107. // ## 回调 - 失败返回
  108. public function getFail($msg = '')
  109. {
  110. log_message('getFail: '.$msg, 'error', LOG_PATH."complexPaylog/{$this->channel}/");
  111. echo 'fail:'. $msg;
  112. exit();
  113. }
  114. }