| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- <?php
- namespace app\api\complex;
- use think\Request;
- /**
- * 佩奇(原 找手游)
- */
- class Peiqi implements ComplexInterface
- {
- private $channel = 'peiqi';
- // ## 双端 ##
- // 渠道效验
- public function getSpecialParam($data, $polyChannelGame = []){
- // user_id=user_id
- if(!empty($data['user_id'])){
- return $data['user_id'];
- }
- return false;
- }
- // 登陆效验
- public function checkLogin($data, $polyChannelGame = [])
- {
- if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
- return false;
- }
- // user_id=user_id
- $param = [
- 'format' => 'json',
- 'game_id' => $paramArr['app_id'],
- 'user_id' => $data['user_id'],
- ];
- $param['sign'] = md5("format=json&game_id={$param['game_id']}&user_id={$param['user_id']}&key={$paramArr['app_key']}");
- $result = get_http_response("https://api.sy12306.com/oauth/check_mgmem_login", $param);
- $res = json_decode($result, true);
- if ($res['code'] == 200) {
- return ['user_id' => $param['user_id']];
- } else {
- return false;
- }
- }
- // ## H5 ##
- // 渠道效验
- public function getSpecialParamH5($data, $polyChannelGame = []){
- // 参数: user_id=user_id
- if(!empty($data['user_id'])){
- return $data['user_id'];
- }
- return false;
- }
- // 登陆效验
- public function checkLoginH5($data, $polyChannelGame = [])
- {
- // 参数:user_id = user_id, extparam = {"username":"", "server_id":"", "time":"", "sign":""}
- if (empty($data['user_id']) || empty($data['extparam'])) {
- return ['code' => -610, 'msg' => '对接参数有误', 'data' => []];
- }
- $extparam = json_decode($data['extparam'], true);
- if (empty($extparam)) {
- return ['code' => -611, 'msg' => '对接参数异常', 'data' => []];
- }
- // if( ($extparam['time'] + 300) < time() ) { //避免链接被人盗用
- // // return ['code' => -613, 'msg' => '渠道登录已失效', 'data' => []];
- // }
- if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
- return ['code' => -660, 'msg' => '渠道缺少参数配置', 'data' => []];
- }
- // ## 官方范例
- // game_id=479&server_id=0&time=1570872971&user_id=1521&username=test1&sign=c2e3ec97b6307b7f4c6a593a098b5065
- // $data['user_id'] = '1521';
- // $extparam['username'] = 'test1';
- // $extparam['server_id'] = 0;
- // $extparam['time'] = 1570872971;
- // $extparam['sign'] = 'c2e3ec97b6307b7f4c6a593a098b5065';
- // $paramArr['app_id'] = '479';
- // $paramArr['app_key'] = '3525af8dcc69899c324079bb5daadbed';
- $param = [
- 'user_id' => intval($data['user_id']),
- 'username' => urldecode($extparam['username']),
- 'game_id' => intval($paramArr['app_id']),
- 'server_id' => intval($extparam['server_id']),
- 'time' => intval($extparam['time']),
- ];
- ksort($param);
- $sign = md5(implode('', $param).$paramArr['app_key']);
- if (strcmp($extparam['sign'], $sign) === 0) {
- return ['user_id' => $param['user_id']];
- } else {
- return ['code' => -600, 'msg' => '渠道登录效验失败', 'data' => []];
- }
- }
- // 下单参数
- public function getData($data)
- {
- return [
- 'orderid' => $data['cp_order'],//我方聚合订单
- 'amount' => $data['money'], // 充值金额
- 'sub_orderid' => $data['pay_id'],//渠道订单
- ];
- }
- // 双端-回调效验
- public function paySign($data, $polyChannelGame = [])
- {
- if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
- return "渠道缺少参数配置!";
- }
- $param = Request::instance()->only(['user_id', 'username', 'role_id', 'to_uid', 'to_user', 'pay_id', 'money', 'game_id', 'server_id', 'cp_order', 'time', 'extra', 'sign']);
- if(count($param) <= 0){
- return "回调参数异常!";
- }
- $sign = $this->paySignHandle($param, $paramArr['app_key']);
- if ($data['sign'] == $sign) {
- return true;
- }
- return "回调处理异常!";
- }
- // H5-回调效验
- public function paySignH5($data, $polyChannelGame = [])
- {
- if (!$paramArr = json_decode($polyChannelGame['param'], true)) {
- return "渠道缺少参数配置!";
- }
- $param = Request::instance()->only(['user_id', 'username', 'role_id', 'to_uid', 'to_user', 'pay_id', 'money', 'game_id', 'server_id', 'cp_order', 'time', 'extra', 'sign']);
- if(count($param) <= 0){
- return "回调参数异常!";
- }
- $sign = $this->paySignHandle($param, $paramArr['app_key']);
- if ($data['sign'] == $sign) {
- return true;
- }
- return "回调处理异常!";
- }
- private function paySignHandle($param, $key)
- {
- $param = array_filter($param, function ($v, $k) {
- if ($k !== 'sign' && $v !== '') {
- return true;
- }
- }, ARRAY_FILTER_USE_BOTH);
- ksort($param);
- reset($param);
- $signStr = implode('', $param);
- return md5($signStr . $key);
- }
- public function getSuccess($msg = '')
- {
- echo 'SUCCESS';
- exit();
- }
- public function getFail($msg = '')
- {
- echo 'FAIL:'.$msg;
- exit();
- }
- }
|