Yueyou.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace app\api\complex;
  3. use ComplexThree\JuLe\joloRsa;
  4. /**
  5. * 悦游
  6. */
  7. class Yueyou implements ComplexInterface
  8. {
  9. private $channel = 'yueyou';
  10. /**
  11. * ## 登陆 - 校验
  12. *
  13. * @param $data
  14. * @param $polyChannelGame
  15. *
  16. * @return false
  17. */
  18. public function getSpecialParam($data, $polyChannelGame = [])
  19. {
  20. // channel_token = 客户端的 access_token
  21. if (empty($data['channel_token'])) {
  22. return false;
  23. }
  24. if (empty($polyChannelGame['param'])) {
  25. return false;
  26. }
  27. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  28. return false;
  29. }
  30. $param = [
  31. 'appId' => $channelConfig['app_id'],
  32. 'timestamp' => time(),
  33. 'token' => $data['channel_token'],
  34. ];
  35. $param['sign'] = $this->sign($param, $channelConfig['server_key']);
  36. $res = get_http_response('http://rhsdk.yueeyou.com/api/cp/checkToken', $param);
  37. $res = json_decode($res, true);
  38. if ($res['code'] == 1) {
  39. return $res['userId'];
  40. } else {
  41. return false;
  42. }
  43. }
  44. // ## 登陆 - 登陆
  45. public function checkLogin($data, $polyChannelGame = [])
  46. {
  47. return true;
  48. }
  49. // ## 下单 - 客户端需要的参数(客户端自己做了,这块暂时不用)
  50. public function getOrder($data)
  51. {
  52. return ['code' => 200, 'msg' => 'success', 'param' => []];
  53. }
  54. // ## 回调 - 效验
  55. public function paySign($data, $polyChannelGame = [])
  56. {
  57. /**
  58. * 回调实例:http://cp.host.xxxx?amount=1.00&appId=1&channelId=1&cpOrderId=666666666666&ext=&orderId=123456789ooL&result=1&timestamp=1494221088&userId=12345&sign=f2b9cefc310a46e35c072f1d6da011ce
  59. */
  60. if (empty($polyChannelGame['param']) || !isset($data['amount']) || !isset($data['orderId']) || !isset($data['cpOrderId'])) {
  61. return false;
  62. }
  63. if (!$channelConfig = json_decode($polyChannelGame['param'], true)) {
  64. return false;
  65. }
  66. $param = [
  67. 'result' => $data['result'], // 支付结果,固定值。“1”代表成功,“0”代表失败
  68. 'amount' => $data['amount'], // 支付金额,单位:元,两位小数。
  69. 'channelId' => $data['channelId'],
  70. 'appId' => $data['appId'],
  71. 'orderId' => $data['orderId'],
  72. 'cpOrderId' => $data['cpOrderId'],
  73. 'userId' => $data['userId'],
  74. 'timestamp' => $data['timestamp'],
  75. 'ext' => $data['ext'],
  76. ];
  77. $sign = $data['sign'];
  78. $hadleSign = $this->sign($param, $channelConfig['server_key']);
  79. if ($sign == $hadleSign) {
  80. return true;
  81. }
  82. return false;
  83. }
  84. // ## 回调 - 下单参数获取
  85. public function getData($data)
  86. {
  87. if(!isset($data['cpOrderId']) || !isset($data['amount']) || !isset($data['orderId'])){
  88. return false;
  89. }
  90. return [
  91. 'orderid' => $data['cpOrderId'], // 我方聚合订单
  92. 'amount' => $data['amount'], // 充值金额(单位:元)
  93. 'sub_orderid' => $data['orderId'], // 渠道订单
  94. ];
  95. }
  96. // ## 回调 - 成功返回
  97. public function getSuccess($msg = '')
  98. {
  99. echo 'OK';
  100. exit();
  101. }
  102. // ## 回调 - 失败返回
  103. public function getFail($msg = '')
  104. {
  105. echo 'fail';
  106. exit();
  107. }
  108. // 签名
  109. private function sign($param, $serverKey)
  110. {
  111. ksort($param);
  112. $sign = '';
  113. foreach ($param as $key => $value) {
  114. if($sign){
  115. $sign .= '&'.$key . '=' . $value;
  116. }else{
  117. $sign = $key . '=' . $value;
  118. }
  119. }
  120. return md5($sign . $serverKey);
  121. }
  122. }