package com.nova.sankuai.domain.api.channelUnion;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.nova.sankuai.domain.entity.CapitalInfo;
|
import com.nova.sankuai.domain.enums.capitalInfo.CapitalTypeEnum;
|
import com.nova.sankuai.infra.constants.Constants;
|
import com.nova.sankuai.infra.utils.RsaSecretUtils;
|
import com.nova.sankuai.security.HttpClientUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.DigestUtils;
|
|
import java.util.Objects;
|
|
//import com.nova.sankuai.infra.utils.zhxyp.ZhxypUtil;
|
|
/**
|
* @Author Lilinhong
|
* @Date 2022/6/12 20:46
|
*/
|
@Component
|
public class ChannelUnionAutoUtil {
|
|
/**
|
* 随易花
|
*/
|
@Value("${syh.domain}")
|
private String syhPath;
|
|
// @Autowired
|
// private ZhxypUtil zhxypUtil;
|
|
private static final Logger logger = LoggerFactory.getLogger("capitalLogger");
|
|
public ChannelUnionCollisionResponse getCollision(String capitalName, String publicKeyBase64, String url, String appId,
|
String phone, String idCard, String name, String cityName, String channelCode) {
|
// 判断是否 随易花,是,则判断是否城市为空,为空则不撞库
|
if (Constants.SYHCAPITALNAME.equals(capitalName) && StringUtils.isBlank(cityName)) {
|
logger.info("手机号为:" + phone + "," + capitalName + " 因为城市为空撞库失败!");
|
return null;
|
}
|
|
JSONObject param = new JSONObject();
|
JSONObject body = new JSONObject();
|
|
String phoneMd5 = DigestUtils.md5DigestAsHex(phone.getBytes());
|
if (Constants.SYHCAPITALNAME.equals(capitalName) || "好汇推".equals(capitalName) || "助贷".equals(capitalName)
|
|| "任意花".equals(capitalName) || "慧借".equals(capitalName) || "e时贷".equals(capitalName)
|
|| "商城-本APP".equals(capitalName)
|
) {// 随易花或好汇推
|
// body.put("city", cityName.replace("市", ""));
|
// body.put("mobileMd5", phoneMd5);
|
// body.put("mobile", phone);
|
// body.put("channelCode", channelCode);
|
// logger.info("手机号为:" + phone + "," + capitalName + " 撞库网址:" + syhPath + "/jinjian/ctl/hd360/hd/checkMobileMd5 撞库原始参数:{}" , body);
|
// 默认为撞库成功
|
logger.info("手机号为:" + phone + "," + capitalName + "初始撞库成功}");
|
ChannelUnionCollisionResponse channelUnionCollisionResponse = new ChannelUnionCollisionResponse();
|
channelUnionCollisionResponse.setCode(200);
|
return channelUnionCollisionResponse;
|
} else {
|
param.put("phoneMd5", phoneMd5);
|
|
if (StringUtils.isNotEmpty(idCard)) {
|
String idCardMd5 = DigestUtils.md5DigestAsHex(idCard.getBytes());
|
param.put("idCardMd5", idCardMd5);
|
}
|
if (StringUtils.isNotEmpty(name)) {
|
String nameMd5 = DigestUtils.md5DigestAsHex(name.getBytes());
|
param.put("nameMd5", nameMd5);
|
}
|
|
String base64 = null;
|
try {
|
byte[] bytes = RsaSecretUtils.publicEncrypt(param.toJSONString().getBytes(), publicKeyBase64);
|
base64 = RsaSecretUtils.byte2Base64(bytes);
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始加密参数:{}", base64);
|
} catch (Exception e) {
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始加密参数失败");
|
e.printStackTrace();
|
return null;
|
}
|
body.put("appId", appId);
|
body.put("data", base64);
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始参数:{}", param);
|
}
|
|
String result = null;
|
try {
|
if ("优点分期".equals(capitalName)) {
|
//优点分期是php语言,使用postJsonData()方法会导致对方收不到请求,此方法能够发送请求
|
result = HttpClientUtil.doPost(url + "/api/v1/unionLogin/unionCheckUser", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数:{}", result);
|
} else if (Constants.SYHCAPITALNAME.equals(capitalName)) {// 随易花撞库
|
result = HttpClientUtil.getInstance().syhPostJsonData(syhPath + "/jinjian/ctl/hd360/hd/checkMobileMd5", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数:{}", result);
|
} else if ("大象花呗".equals(capitalName)) {
|
result = HttpClientUtil.getInstance().postJsonData(url + "/openapi/duplicate/kadana/checkuser", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数:{}", result);
|
// } else if ("商城-本APP".equals(capitalName)) {
|
// result = zhxypUtil.check(idCard, phone, name);
|
// logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数:{}", result);
|
|
} else {
|
result = HttpClientUtil.getInstance().postJsonData(url + "/api/v1/unionLogin/unionCheckUser", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数:{}", result);
|
}
|
} catch (Exception e) {
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数失败");
|
e.printStackTrace();
|
return null;
|
}
|
if (org.apache.commons.lang.StringUtils.isEmpty(result)) {
|
logger.error("手机号为:" + phone + "," + capitalName + "撞库失败");
|
return null;
|
}
|
ChannelUnionCollisionResponse channelUnionCollisionResponse = null;
|
try {
|
channelUnionCollisionResponse = JSON.parseObject(result, ChannelUnionCollisionResponse.class);
|
return channelUnionCollisionResponse;
|
} catch (Exception e) {
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数转换失败");
|
e.printStackTrace();
|
return null;
|
}
|
}
|
|
|
/**
|
* 标注:联登处理
|
*/
|
public ChannelUnionAutoResponse getAuto(CapitalInfo capitalinfo, String publicKeyBase64, String url, String appId, String phone, String idCard, String name) {
|
if(capitalinfo==null ){
|
logger.error("资方信息为空");
|
return null;
|
}
|
JSONObject param = new JSONObject();
|
JSONObject body = new JSONObject();
|
param.put("phone", phone);
|
// 如果只撞库不联登这种不需要推送其它信息
|
if(!Objects.equals(capitalinfo.getType(), CapitalTypeEnum.UNION_HALF.getCode())){// 非 面向产品方撞库不联登模式,对接我们文档,只推送電話號碼
|
if (StringUtils.isNotEmpty(idCard)) {
|
param.put("idCard", idCard);
|
}
|
if (StringUtils.isNotEmpty(name)) {
|
param.put("name", name);
|
}
|
}
|
String capitalName = capitalinfo.getName();
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始参数:{}", param);
|
String base64 = null;
|
try {
|
byte[] bytes = RsaSecretUtils.publicEncrypt(param.toJSONString().getBytes(), publicKeyBase64);
|
base64 = RsaSecretUtils.byte2Base64(bytes);
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始加密参数:{}", base64);
|
} catch (Exception e) {
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始加密参数失败");
|
e.printStackTrace();
|
return null;
|
}
|
body.put("appId", appId);
|
body.put("data", base64);
|
String result = null;
|
try {
|
if ("优点分期".equals(capitalName)) {
|
//优点分期是php语言,使用postJsonData()方法会导致对方收不到请求,此方法能够发送请求
|
result = HttpClientUtil.doPost(url + "/api/v1/unionLogin/unionRegister", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "撞库原始返回参数:{}", result);
|
} else if (Objects.equals("大象花呗",capitalName)) {
|
result = HttpClientUtil.getInstance().postJsonData(url + "/openapi/unionlogin/kadana/getredirecturl", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始返回参数:{}", result);
|
} else {
|
result = HttpClientUtil.getInstance().postJsonData(url + "/api/v1/unionLogin/unionRegister", body.toJSONString());
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始返回参数:{}", result);
|
}
|
} catch (Exception e) {
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始返回参数失败");
|
e.printStackTrace();
|
return null;
|
}
|
if (org.apache.commons.lang.StringUtils.isEmpty(result)) {
|
logger.error("手机号为:" + phone + "," + capitalName + "联登失败");
|
return null;
|
}
|
ChannelUnionAutoResponse channelUnionAutoResponse = null;
|
try {
|
channelUnionAutoResponse = JSON.parseObject(result, ChannelUnionAutoResponse.class);
|
return channelUnionAutoResponse;
|
} catch (Exception e) {
|
logger.info("手机号为:" + phone + "," + capitalName + "联登原始返回参数转换失败");
|
e.printStackTrace();
|
return null;
|
}
|
}
|
}
|