generated from root/miduo_server
164 lines
6.1 KiB
Java
164 lines
6.1 KiB
Java
package com.ljsd.service;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.ljsd.pojo.VerifyParams;
|
||
import com.ljsd.util.AppConstans;
|
||
import com.ljsd.util.HttpUtils;
|
||
import com.ljsd.util.TimeUtil;
|
||
import org.apache.commons.codec.digest.DigestUtils;
|
||
import org.slf4j.Logger;
|
||
import org.slf4j.LoggerFactory;
|
||
|
||
import javax.servlet.http.HttpServletRequest;
|
||
import javax.servlet.http.HttpServletResponse;
|
||
import java.io.IOException;
|
||
import java.security.MessageDigest;
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
import java.util.SortedMap;
|
||
import java.util.TreeMap;
|
||
|
||
public class AiWanVerifyService extends AbstractVerifyService {
|
||
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractVerifyService.class);
|
||
public static int isTestLan = 0;
|
||
|
||
public static final String app_key = "FKzLkGPIyMwYjXhRYfMWBsqikOfSPLkX";
|
||
public static final String app_id = "lbqitk9b39vk9ee5";
|
||
|
||
public AiWanVerifyService(String sign) {
|
||
super(sign);
|
||
}
|
||
|
||
@Override
|
||
public boolean verify(HttpServletResponse response, HttpServletRequest request, String admin, String platform, String pid, String openId, String token) {
|
||
try {
|
||
//如果是自己人不需要验证了
|
||
if (AppConstans.appsecret.equals(admin)) {
|
||
return true;
|
||
}
|
||
//test
|
||
if (isTestLan == 1) {
|
||
boolean result = loginVerfifyByTestLan(openId, token);
|
||
if (!result) {
|
||
response.sendError(400, "verify fail");
|
||
LOGGER.error("test verify fail");
|
||
return false;
|
||
}
|
||
}
|
||
//正式 切不是pc
|
||
else if (!"3".equals(platform)) {
|
||
String sub_channel = request.getParameter("sub_channel");
|
||
boolean result = false;
|
||
if (sub_channel == null || sub_channel.equals("")) {
|
||
//测试服构建参数
|
||
if (sub_channel.equals("1000")) {
|
||
VerifyParams params = new VerifyParams();
|
||
VerifyParams testParam = getTestParam(params, request, openId, token);
|
||
result = verifyTest(testParam);
|
||
}
|
||
// //商务服
|
||
// else if(sub_channel.equals("20201222")){
|
||
// //result = loginVerfifyShangwu("MHT", openId, token, MHTSDKConstans.rhappIdshangwu);
|
||
// }
|
||
//正式服appId
|
||
else {
|
||
VerifyParams params = new VerifyParams();
|
||
VerifyParams formatParam = getFormatParam(params, request, openId, token);
|
||
result = verifyFormat(formatParam);
|
||
}
|
||
}
|
||
if (!result) {
|
||
response.sendError(400, "verify fail");
|
||
LOGGER.error("verify fail");
|
||
return false;
|
||
}
|
||
}
|
||
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return true;
|
||
}
|
||
|
||
@Override
|
||
public boolean verifyTest(VerifyParams params) {
|
||
return doVerify(params);
|
||
}
|
||
|
||
@Override
|
||
public boolean verifyFormat(VerifyParams params) {
|
||
return doVerify(params);
|
||
}
|
||
|
||
@Override
|
||
boolean doVerify(VerifyParams params) {
|
||
LOGGER.info("AiWanVerifyService登录验证-->{}", params.getOpenId());
|
||
String url = "https://apicn-sdk.jxywl.cn/user/auth";
|
||
Map<String, String> parms = new HashMap<>();
|
||
parms.put("app_id", app_id);
|
||
parms.put("account", params.getOpenId());
|
||
parms.put("token", params.getToken());
|
||
parms.put("time", params.getTime());
|
||
parms.put("sign", params.getParamSign());
|
||
boolean result = false;
|
||
try {
|
||
String r = HttpUtils.doPost(url, parms);
|
||
JSONObject jsonObject = JSON.parseObject(r);
|
||
int errno = jsonObject.getIntValue("code");
|
||
LOGGER.info("AiWanVerifyService请求结果:{}", r);
|
||
if (errno == 200) {
|
||
result = true;
|
||
}
|
||
} catch (IOException e) {
|
||
LOGGER.info("AiWanVerifyService验证失败,IOException");
|
||
}
|
||
return result;
|
||
}
|
||
|
||
@Override
|
||
protected VerifyParams getTestParam(VerifyParams params, HttpServletRequest request, String openId, String token) {
|
||
return getFormatParam(params, request, openId, token);
|
||
}
|
||
|
||
@Override
|
||
protected VerifyParams getFormatParam(VerifyParams params, HttpServletRequest request, String openId, String token) {
|
||
String time = String.valueOf(TimeUtil.nowInt());
|
||
SortedMap<String, String> map = new TreeMap<>();
|
||
map.put("app_id", app_id);
|
||
map.put("account", openId);
|
||
map.put("token", token);
|
||
map.put("time", time);
|
||
|
||
params.setAppId(app_id);
|
||
params.setOpenId(openId);
|
||
params.setToken(token);
|
||
params.setTime(time);
|
||
params.setParamSign(getSign(map));
|
||
return params;
|
||
}
|
||
|
||
private static String getSign(Map<String, String> map) {
|
||
if (map == null || map.isEmpty()) {
|
||
return null;
|
||
}
|
||
StringBuilder builder = new StringBuilder();
|
||
for (Map.Entry<String, String> entry : map.entrySet()) {
|
||
builder.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
|
||
}
|
||
String substring = builder.substring(0, builder.length() - 1);
|
||
LOGGER.info("AiWan参数拼装sign(未加密):" + substring + app_key);
|
||
return DigestUtils.md5Hex(substring + app_key);
|
||
}
|
||
|
||
// public static void main(String[] args) throws Exception {
|
||
// SortedMap<String, String> map = new TreeMap<>();
|
||
// map.put("app_id", "ovdqy3we3nekjrz8");
|
||
// map.put("account", "2020092315165768");
|
||
// map.put("token", "NwVe8n4zMizM1Mzg3MzZfMTY");
|
||
// map.put("time", "1600845363");
|
||
// System.out.println("================================================");
|
||
// System.out.println("自己计算的sign:" + getSign(map));
|
||
// System.out.println("渠道提供的sign:" + "0aea0c2c60bb6988f83d8a8023906af5");
|
||
// }
|
||
} |