|
@ -2,6 +2,7 @@ package com.yihu.wlyy.service.service.prescription;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.wlyy.service.common.SystemConfig;
|
|
|
import com.yihu.wlyy.service.common.util.MD5Util;
|
|
|
import com.yihu.wlyy.service.common.util.StringUtil;
|
|
|
import com.yihu.wlyy.service.common.util.WebserviceUtil;
|
|
|
import com.yihu.wlyy.service.service.LogService;
|
|
@ -19,6 +20,7 @@ import java.util.Map;
|
|
|
@Service
|
|
|
public class PrescriptionCAService {
|
|
|
|
|
|
private String IS_APPLIED="XMCAF_SOFT_judgeRealNameSoftCertIsApplied"; //判断实名软证书是否已申请
|
|
|
private String REQUEST_SIGN = "XMCAF_SOFT_requestRealNameSoftCertAndSign";//请求实名软证书并进行数字签名
|
|
|
private String EXPIRED_DATETIME = "XMCAF_SOFT_getRealNameSoftCertExpiredDatetime"; //获取实名软证书的过期时间
|
|
|
private String MODIFY_PASSWD = "XMCAF_SOFT_ModifyRealNameSoftCertCalledPasswd"; //修改实名软证书调用保护口令
|
|
@ -26,12 +28,106 @@ public class PrescriptionCAService {
|
|
|
|
|
|
private String caUrl = SystemConfig.getInstance().getCAUrl();
|
|
|
private String caNamespace = SystemConfig.getInstance().getCANamespace();
|
|
|
private String unifiedCallInterface = "XMCA6_UnifiedCallInterface";
|
|
|
@Autowired
|
|
|
private LogService logService;
|
|
|
|
|
|
@Autowired
|
|
|
private ObjectMapper objectMapper;
|
|
|
|
|
|
private String getHeaderXml(String api)
|
|
|
{
|
|
|
return "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n" +
|
|
|
" <serverName>"+api+"</serverName>\n" +
|
|
|
" <format>xml</format>\n" +
|
|
|
" <callOperator></callOperator>\n" +
|
|
|
" <certificate></certificate>\n" +
|
|
|
|
|
|
" <srcIP>10.95.22.10</srcIP >\n" +
|
|
|
" <srcUserMac>60-D8-19-57-66-E3</srcUserMac>\n" +
|
|
|
" <srcSystemCode>1</srcSystemCode>\n" +
|
|
|
" <srcSystemName>厦门i健康</srcSystemName>\n" +
|
|
|
" <srcBusinessNodeCode>node01</srcBusinessNodeCode>\n" +
|
|
|
" <srcBusinessNodeName>审核</srcBusinessNodeName>\n" +
|
|
|
" <srcOperatorAccount>Zhuangsd</srcOperatorAccount>\n" +
|
|
|
" <srcBusinessStreamNO>11111</srcBusinessStreamNO>\n" +
|
|
|
" <srcDataExtProperty></srcDataExtProperty>\n" +
|
|
|
"</root>";
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* CA认证服务二次封装
|
|
|
*/
|
|
|
private String postCAServer(String urlString,String namespace,String api, Map<String,String> params) throws Exception
|
|
|
{
|
|
|
String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n";
|
|
|
if(params!=null && params.size()>0)
|
|
|
{
|
|
|
for(String key : params.keySet())
|
|
|
{
|
|
|
msgBody += " <"+key+">"+params.get(key)+"</"+key+">\n";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
msgBody += "</root>";
|
|
|
|
|
|
String msgHeader = getHeaderXml(api);
|
|
|
|
|
|
Map<String,String> p = new HashMap<>();
|
|
|
p.put("msgHeader",msgHeader);
|
|
|
p.put("msgBody",msgBody);
|
|
|
|
|
|
return WebserviceUtil.post(urlString,namespace,unifiedCallInterface,p);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 判断是否有实名证书
|
|
|
**/
|
|
|
public String isApplied(String strUserIdcardNum) throws Exception
|
|
|
{
|
|
|
Boolean isSuccess = true;
|
|
|
String re = "";
|
|
|
String body = "";
|
|
|
String error = "";
|
|
|
String action = IS_APPLIED;
|
|
|
try {
|
|
|
Map<String,String> params = new HashMap<>();
|
|
|
params.put("strUserIdcardNum",strUserIdcardNum);
|
|
|
|
|
|
body = objectMapper.writeValueAsString(params);
|
|
|
re = postCAServer(caUrl, caNamespace, action, params);
|
|
|
|
|
|
if(StringUtil.isEmpty(re))
|
|
|
{
|
|
|
throw new Exception("返回为空!");
|
|
|
}
|
|
|
else{
|
|
|
if(re.startsWith("error"))
|
|
|
{
|
|
|
throw new Exception(re);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
isSuccess = false;
|
|
|
ex.printStackTrace();
|
|
|
error = ex.getMessage();
|
|
|
}
|
|
|
|
|
|
//保存http日志
|
|
|
logService.saveHttpLog(isSuccess,action,"判断是否有实名证书","POST",null,body,re,error,logService.caType);
|
|
|
|
|
|
if(!StringUtil.isEmpty(error))
|
|
|
{
|
|
|
throw new Exception(error);
|
|
|
}
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 请求实名软证书并进行数字签名
|
|
|
**/
|
|
@ -51,7 +147,7 @@ public class PrescriptionCAService {
|
|
|
|
|
|
|
|
|
body = objectMapper.writeValueAsString(params);
|
|
|
re = WebserviceUtil.post(caUrl,caNamespace,action, params);
|
|
|
re = postCAServer(caUrl,caNamespace,action, params);
|
|
|
|
|
|
if(StringUtil.isEmpty(re))
|
|
|
{
|
|
@ -99,7 +195,7 @@ public class PrescriptionCAService {
|
|
|
params.put("strUserIdcardNum",strUserIdcardNum);
|
|
|
|
|
|
body = objectMapper.writeValueAsString(params);
|
|
|
re = WebserviceUtil.post(caUrl,caNamespace,action, params);
|
|
|
re = postCAServer(caUrl, caNamespace, action, params);
|
|
|
|
|
|
if(StringUtil.isEmpty(re))
|
|
|
{
|
|
@ -146,7 +242,7 @@ public class PrescriptionCAService {
|
|
|
params.put("strNewCalledPasswd",strNewCalledPasswd);
|
|
|
|
|
|
body = objectMapper.writeValueAsString(params);
|
|
|
re = WebserviceUtil.post(caUrl,caNamespace,action, params);
|
|
|
re = postCAServer(caUrl, caNamespace, action, params);
|
|
|
|
|
|
if(StringUtil.isEmpty(re))
|
|
|
{
|
|
@ -177,7 +273,6 @@ public class PrescriptionCAService {
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 验证签名(带多服务器负载均衡)
|
|
|
**/
|
|
@ -195,7 +290,7 @@ public class PrescriptionCAService {
|
|
|
params.put("strOriginalData",strOriginalData);
|
|
|
|
|
|
body = objectMapper.writeValueAsString(params);
|
|
|
re = WebserviceUtil.post(caUrl,caNamespace,action, params);
|
|
|
re = postCAServer(caUrl,caNamespace,action, params);
|
|
|
|
|
|
if(StringUtil.isEmpty(re))
|
|
|
{
|
|
@ -226,34 +321,75 @@ public class PrescriptionCAService {
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/*public static void main(String args[]) {
|
|
|
public static void main(String args[]) {
|
|
|
try {
|
|
|
String caUrl = SystemConfig.getInstance().getCAUrl();
|
|
|
String caNamespace = SystemConfig.getInstance().getCANamespace();
|
|
|
/*//获取实名软证书的过期时间
|
|
|
String api = "XMCAF_SOFT_getRealNameSoftCertExpiredDatetime";
|
|
|
String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n"+
|
|
|
" <strUserIdcardNum>123456</strUserIdcardNum>\n" +
|
|
|
"</root>";*/
|
|
|
|
|
|
/*//判断实名软证书是否已申请
|
|
|
String api = "XMCAF_SOFT_judgeRealNameSoftCertIsApplied";
|
|
|
String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n"+
|
|
|
" <strUserIdcardNum>123456</strUserIdcardNum>\n" +
|
|
|
"</root>";*/
|
|
|
|
|
|
//修改实名软证书调用保护口令
|
|
|
String api = "XMCAF_SOFT_ModifyRealNameSoftCertCalledPasswd";
|
|
|
String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n"+
|
|
|
" <strUserIdcardNum>123456</strUserIdcardNum>\n" +
|
|
|
" <strOldCalledPasswd>12345678</strOldCalledPasswd>\n" +
|
|
|
" <strNewCalledPasswd>11111111</strNewCalledPasswd>\n" +
|
|
|
"</root>";
|
|
|
|
|
|
|
|
|
//请求实名软证书并进行数字签名
|
|
|
/*String orgData = "测试数据";
|
|
|
String api = "XMCAF_SOFT_requestRealNameSoftCertAndSign";
|
|
|
String msgBody = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n"+
|
|
|
" <strUserIdcardNum>123456</strUserIdcardNum>\n" +
|
|
|
" <strRealNameSoftCertCalledPasswd>11111111</strRealNameSoftCertCalledPasswd>\n" +
|
|
|
" <strOriginalData>"+ MD5Util.GetMD5Code(orgData)+"</strOriginalData>\n" +
|
|
|
"</root>";*/
|
|
|
|
|
|
String msgHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
|
|
|
"<root>\n" +
|
|
|
" <serverName>"+api+"</serverName>\n" +
|
|
|
" <format>xml</format>\n" +
|
|
|
" <callOperator></callOperator>\n" +
|
|
|
" <certificate></certificate>\n" +
|
|
|
|
|
|
" <srcIP>10.95.22.10</srcIP >\n" +
|
|
|
" <srcUserMac>60-D8-19-57-66-E3</srcUserMac>\n" +
|
|
|
" <srcSystemCode>1</srcSystemCode>\n" +
|
|
|
" <srcSystemName>厦门i健康</srcSystemName>\n" +
|
|
|
" <srcBusinessNodeCode>node01</srcBusinessNodeCode>\n" +
|
|
|
" <srcBusinessNodeName>审核</srcBusinessNodeName>\n" +
|
|
|
" <srcOperatorAccount>Zhuangsd</srcOperatorAccount>\n" +
|
|
|
" <srcBusinessStreamNO>11111</srcBusinessStreamNO>\n" +
|
|
|
" <srcDataExtProperty></srcDataExtProperty>\n" +
|
|
|
"</root>";
|
|
|
|
|
|
|
|
|
|
|
|
Map<String, String> params = new HashMap<>();
|
|
|
params.put("strUserIdcardNum", "123456");
|
|
|
params.put("strRealNameSoftCertCalledPasswd","11111111");
|
|
|
params.put("strOriginalData","测试");
|
|
|
params.put("srcBusinessStreamNO", "1");
|
|
|
System.out.print("请求实名软证书并进行数字签名:" + WebserviceUtil.post(caUrl, caNamespace, "XMCAF_SOFT_requestRealNameSoftCertAndSign", params) + "\r\n");
|
|
|
*//*
|
|
|
Map<String, String> params2 = new HashMap<>();
|
|
|
params2.put("strUserIdcardNum", "123456");
|
|
|
System.out.print("获取实名软证书的过期时间:" + WebserviceUtil.post(caUrl, caNamespace, "XMCAF_SOFT_getRealNameSoftCertExpiredDatetime", params2) + "\r\n");
|
|
|
*//*
|
|
|
|
|
|
*//*Map<String, String> params3 = new HashMap<>();
|
|
|
params3.put("strSignData", "123456");
|
|
|
params3.put("strCertData", "123456");
|
|
|
params3.put("strOriginalData", "123456");
|
|
|
System.out.print("验证签名:"+WebserviceUtil.post(caUrl, caNamespace, "XMCA3_JMSVR_verifySignOnMultiServer", params3)+"\r\n");
|
|
|
*//*
|
|
|
params.put("msgBody", msgBody);
|
|
|
params.put("msgHeader", msgHeader);
|
|
|
System.out.print(WebserviceUtil.post(caUrl, caNamespace, "XMCA6_UnifiedCallInterface", params) + "\r\n");
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
ex.printStackTrace();
|
|
|
}
|
|
|
}*/
|
|
|
}
|
|
|
}
|