sk_pay/src/main/java/com/jmfy/controller/SDKController.java

232 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.jmfy.controller;
import com.alibaba.fastjson.JSONObject;
import com.jmfy.dao.UserVerfyDao;
import com.jmfy.sdk.SdkVerfy;
import com.jmfy.util.Constant;
import com.jmfy.util.RedisUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@RestController
public class SDKController {
private static final Logger LOGGER = LoggerFactory.getLogger(SDKController.class);
@Resource
private UserVerfyDao userVerfyDao;
/**
* sdk统一登录接口
* 验证用户信息接口
* @param userId
* @param channel
* @param sdksign
* @param sdktoken
* @param response
*/
@RequestMapping(value = "/sdk/verify", method = {RequestMethod.GET, RequestMethod.POST})
public void verify(String userId, String channel, String sdksign, String sdktoken, HttpServletResponse response) {
try {
Map<String, Object> params = new HashMap<String, Object>();
params.put("uid", userId);
params.put("channel", channel);
params.put("sign", sdksign);
params.put("token", sdktoken);
JSONObject returnResult = new JSONObject();
LOGGER.info("verify参数userId={},channel={},sdksign={},sdktoken={}",userId,channel,sdksign,sdktoken);
if (channel == null) {
returnResult.put("errcode", -2);
response.setContentType("application/json");
response.getOutputStream().write(returnResult.toJSONString().getBytes());
return;
}
int channelType = 0; //区分渠道
String uid = "-1";
switch (channel) {
case "test":
uid = SdkVerfy.testVerfy();
break;
case "quick":
uid = SdkVerfy.quickVerfy(userId, sdktoken);
break;
case "xiaomi":
uid = SdkVerfy.xiaomiVerfy(userId, sdktoken);
break;
case "weiwei":
uid = SdkVerfy.weiweiVerfy(userId, sdktoken);
break;
case "Android_9377":
uid = SdkVerfy.weiwei4366Verfy(userId, sdktoken);
break;
case "Android_ChiTu": //赤兔
uid = SdkVerfy.chiTuVerfy(userId,sdksign, sdktoken);
break;
case "Android_ilod": //韩国正式
case "Android_ilod_OneStore": //韩国正式 OneStore渠道
case "Android_ilod_OneStoreCB": //韩国正式 CB不开支付
case "iOS_ilod": //韩国正式 iOS渠道
channelType = 1;
uid = SdkVerfy.ilodVerfy(userId,sdksign, sdktoken);
break;
case "baidu": //百度正式之前
uid = SdkVerfy.baiduVerfy(userId, sdktoken, sdksign);
break;
case "Android_BaiDu": //百度正式 现在
case "iOS_BaiDu":
uid = SdkVerfy.baiduVerfy(userId, sdktoken, sdksign);
break;
case "iOS_BaiDu_Test": //百度测试 现在
uid = SdkVerfy.baiduTestVerfy(userId, sdktoken, sdksign);
break;
case "6kwOther":
uid = SdkVerfy.sixkwVerfy(userId, sdktoken, Constant.SIXKW_APPID, Constant.SIXKW_VERIFY_URL, Constant.SIXKW_SECRET);
break;
case "6kw":
uid = SdkVerfy.sixkwVerfy(userId, sdktoken, Constant.SIXKW_MAIN_APPID, Constant.SIXKW_VERIFY_URL, Constant.SIXKW_MAIN_LOGIN_SECRET);
break;
case "Android_QuickGame": //国内--时空战场 Android
case "Android_QuickGame_douyin":
uid = SdkVerfy.quickGameVerfy(userId, sdksign, sdktoken);
break;
case "iOS_QuickGame": //国内--时空战场 IOS
uid = SdkVerfy.quickGameVerfy_IOS(userId,sdksign, sdktoken);
break;
case "Android_99": //国内--九九互动渠道Android_99
case "Android_99_Child": //国内--九九互动渠道Android_99_Child
case "Android_99_Child2": //国内--九九互动渠道Android_99_Child2
case "Android_99_Child3": //国内--九九互动渠道Android_99_Child3
case "Android_99_Child4": //国内--九九互动渠道Android_99_Child4
uid = SdkVerfy.jjChannelVerfy(userId,sdksign,sdktoken); //sdksign 客户端 这个值传的是 appid值因为appid值是变动的所以需要客户端传
break;
case "Android_ChangWei": //长尾渠道 安卓
case "iOS_ChangWei": //长尾渠道 IOS
uid = SdkVerfy.changWeiGameVerify(userId,sdksign,sdktoken);
break;
case "Android_XiaoQi"://xiao7渠道
uid = SdkVerfy.xiaoQiVerify(sdktoken, returnResult);
break;
case "Android_AiKen"://艾肯渠道安卓
uid = SdkVerfy.aikenVerify(sdktoken);
break;
case "iOS_AiKen"://艾肯渠道ios
uid = SdkVerfy.aikenVerify(sdktoken);
break;
case "Android_AiKen_Child1"://艾肯渠道
uid = SdkVerfy.aikenVerify(sdktoken);
break;
case "Android_Tap"://千千官方
uid = SdkVerfy.qianqianVerify(userId, sdktoken);
break;
case "Android_Tap_Quick"://千千quick
uid = SdkVerfy.quickVerify(userId, sdktoken);
break;
case "Android_Ky_Quick"://0.1折
uid = SdkVerfy.quickVerify2(userId, sdktoken);
break;
case "iOS_Ky_Quick"://0.1折
uid = SdkVerfy.quickVerify2(userId, sdktoken);
break;
case "Android_BT_QiPa"://bt渠道
uid = SdkVerfy.superVerify(userId, sdktoken);
break;
case "iOS_BT_QiPa"://bt渠道
uid = SdkVerfy.superVerify(userId, sdktoken);
break;
case "Android_BT_QiPa2"://bt渠道
uid = SdkVerfy.superVerify(userId, sdktoken);
break;
case "iOS_BT_QiPa2"://bt渠道
uid = SdkVerfy.superVerify(userId, sdktoken);
break;
case "QKZB01"://quick直播1
uid = SdkVerfy.quickGameVerfy(userId, sdksign, sdktoken);
break;
case "QKZB02"://quick直播2
uid = SdkVerfy.quickGameVerfy2(userId, sdksign, sdktoken);
break;
case "F5"://F5渠道
uid = SdkVerfy.f5Verify(userId, sdktoken);
break;
case "F5_GW"://F5渠道
uid = SdkVerfy.f5GwVerify(userId, sdktoken);
break;
case "DNA_AD"://dna安卓渠道
uid = SdkVerfy.dnaVerify(userId, sdktoken,1);
break;
case "DNA_IOS"://dnaios渠道
uid = SdkVerfy.dnaVerify(userId, sdktoken,2);
break;
default:
uid = "-1";
}
if(channelType ==1){ //韩服
LOGGER.info("verify02参数 channel={}, uid={}", channel,uid);
if(uid.equals("0") || uid.equals("-1") || uid.equals("-2") || uid.equals("-3") || uid == null){
String errMessage = "登录验证失败";
switch (uid){
case "0":
errMessage = "请求参数有误"; //body中有数据遗漏时。请求HTTP时请确认projectId、memberId、token是否已全部输入
break;
case "-1":
errMessage = "登录token验证失败"; //Token验证失败。Token被伪造时
break;
case "-2":
errMessage = "MemberId验证失败"; //MemberId验证失败.Token的用户ID信息与body的用户ID不一致时
break;
case "-3":
errMessage = "Token到期"; //Token到期. SDK login api成功的时间与请求相应Authentication check的时间相差60分钟以上时
break;
default:
errMessage = "登录验证失败";
}
returnResult.put("errcode", -1);
returnResult.put("errMessage", errMessage);
response.setContentType("application/json");
response.getOutputStream().write(returnResult.toJSONString().getBytes());
return;
}
}else { //非韩服
if (uid.equals("-1") ||uid == null ) {
returnResult.put("errcode", -1);
response.setContentType("application/json");
response.getOutputStream().write(returnResult.toJSONString().getBytes());
return;
}
}
LOGGER.info("verify03参数 channel={}uid={}",channel, uid);
String name = uid;
String openId = userVerfyDao.verfyUser(name);
//登录流程
returnResult.put("openId", openId);
returnResult.put("guid", uid);
String token = UUID.randomUUID().toString();
returnResult.put("token", token);
RedisUtil.getInstence().putObject("JL_LOGIN_TOKEN", openId, token, -1);
LOGGER.info("verify04参数 channel={}, openId={} token={}uid={}", channel, returnResult.get("openId"), returnResult.get("token"),uid);
response.setContentType("application/json");
response.getOutputStream().write(returnResult.toJSONString().getBytes());
return;
} catch (Exception e) {
LOGGER.error("sdk verify error ",e);
}
}
public static void main(String[] args) {
byte[] bytes = UUID.randomUUID().toString().getBytes();
System.out.println(bytes.length);
}
}