|  | @ -0,0 +1,133 @@
 | 
	
		
			
				|  |  | package com.yihu.wlyy.service.third.verified;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.entity.dict.SystemDict;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.service.system.SystemDictService;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.service.third.ehr.EhrService;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.util.DateUtil;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.util.DesUtils;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.util.HttpClientUtil;
 | 
	
		
			
				|  |  | import com.yihu.wlyy.util.SystemConf;
 | 
	
		
			
				|  |  | import org.apache.axis.encoding.Base64;
 | 
	
		
			
				|  |  | import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | import org.apache.http.NameValuePair;
 | 
	
		
			
				|  |  | import org.apache.http.message.BasicNameValuePair;
 | 
	
		
			
				|  |  | import org.json.JSONArray;
 | 
	
		
			
				|  |  | import org.json.JSONObject;
 | 
	
		
			
				|  |  | import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.crypto.Cipher;
 | 
	
		
			
				|  |  | import javax.crypto.SecretKey;
 | 
	
		
			
				|  |  | import javax.crypto.spec.SecretKeySpec;
 | 
	
		
			
				|  |  | import java.io.UnsupportedEncodingException;
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.HashMap;
 | 
	
		
			
				|  |  | import java.util.List;
 | 
	
		
			
				|  |  | import java.util.Map;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | /**
 | 
	
		
			
				|  |  |  * Created by hzp on 2016/11/21.
 | 
	
		
			
				|  |  |  * 实名认证接口
 | 
	
		
			
				|  |  |  */
 | 
	
		
			
				|  |  | @Service
 | 
	
		
			
				|  |  | public class VerifiedService {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //基卫服务地址
 | 
	
		
			
				|  |  |     private String jwUrl = SystemConf.getInstance().getJwUrl();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //授权码
 | 
	
		
			
				|  |  |     private String appkey = "9683dbd88e0111e69beb0050569a506a";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     //对称加密
 | 
	
		
			
				|  |  |     private String desKey = "5063ebf54d76b16551e175fc71b0e5c7";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Autowired
 | 
	
		
			
				|  |  |     private ObjectMapper objectMapper = new ObjectMapper();
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取随机数
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private JSONObject getRandomNumber()  throws Exception
 | 
	
		
			
				|  |  |     {
 | 
	
		
			
				|  |  |         JSONObject data =  new JSONObject();
 | 
	
		
			
				|  |  |         String url = "http://auth.xmca.com.cn:9846/identification/api/v1.0/getRandomNumber.json";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("sessionID", "1"));
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("appKey", appkey));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String response = HttpClientUtil.post(url, params, "UTF-8");
 | 
	
		
			
				|  |  |         JSONObject responseJson = new JSONObject(response);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if("200".equals(responseJson.optString("code")))
 | 
	
		
			
				|  |  |         {
 | 
	
		
			
				|  |  |             data = responseJson.getJSONObject("data");
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         else{
 | 
	
		
			
				|  |  |             throw new Exception("获取随机数失败:"+responseJson.optString("message"));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return data;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 对称加密
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     private String getDesString(String str)  throws Exception
 | 
	
		
			
				|  |  |     {
 | 
	
		
			
				|  |  |         return DesUtils.encode(str,desKey);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /********************************************************************************************************************/
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 身份认证
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public void faceVerified(String idcard, String username, String picData) throws Exception {
 | 
	
		
			
				|  |  |         JSONObject random = getRandomNumber();
 | 
	
		
			
				|  |  |         String businessSerial = random.optString("businessSerial");
 | 
	
		
			
				|  |  |         String randomNumber = random.optString("randomNumber");
 | 
	
		
			
				|  |  |         String sessionID = random.optString("sessionID");
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String url = "http://auth.xmca.com.cn:9846/identification/api/v1.0/authenticate.json";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         List<NameValuePair> params = new ArrayList<>();
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("idcard", getDesString(idcard)));
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("username", getDesString(username)));
 | 
	
		
			
				|  |  |         //params.add(new BasicNameValuePair("validityStartDate", validityStartDate));
 | 
	
		
			
				|  |  |         //validityEndDate
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("authenMode", "8"));
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("picData", picData));
 | 
	
		
			
				|  |  |         //authenData
 | 
	
		
			
				|  |  |         //idData
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("businessSerial", businessSerial));
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("sessionID", sessionID));
 | 
	
		
			
				|  |  |         params.add(new BasicNameValuePair("appKey", appkey));
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String response = HttpClientUtil.post(url, params, "UTF-8");
 | 
	
		
			
				|  |  |         JSONObject responseJson = new JSONObject(response);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if("200".equals(responseJson.optString("code")))
 | 
	
		
			
				|  |  |         {
 | 
	
		
			
				|  |  |             JSONObject data = responseJson.getJSONObject("data");
 | 
	
		
			
				|  |  |             String result = responseJson.optString("authenResult");
 | 
	
		
			
				|  |  |             if(!result.startsWith("00"))
 | 
	
		
			
				|  |  |             {
 | 
	
		
			
				|  |  |                if(result.startsWith("1"))
 | 
	
		
			
				|  |  |                {
 | 
	
		
			
				|  |  |                    throw new Exception("DN及保留数据匹配失败!");
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |                 else if(result.startsWith("01")){
 | 
	
		
			
				|  |  |                    throw new Exception("人像匹配失败!");
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         else{
 | 
	
		
			
				|  |  |             throw new Exception("身份认证失败:"+responseJson.optString("message"));
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |