最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 基于聚合数据的身份证实名认证API接口调用示例-Java版

    一、申请接口

    通过https://www.juhe.cn/docs/api/id/103自助申请开通接口,获取API请求KEY

    二、请求参数

    名称 是否必填 说明
    idcard 身份证号码
    realname 姓名
    orderid 传1时返回单号,默认不返回单号(加密版必返回单号)
    key 在个人中心->我的数据,接口名称上方查看

    三、Java示例代码

    package com.jefferson.utils.interfaceDemo.juheDemo;
    
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.security.MessageDigest;
    import java.util.HashMap;
    import java.util.Map;
    import org.apache.commons.io.IOUtils;
    import org.apache.Http.HttpEntity;
    import org.apache.http.client.config.RequestConfig;
    import org.apache.http.client.methods.CloseableHttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    
    public class idcard_103 {
    
        //设置超时时间为5秒
    	public static RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build();
    	// 配置您申请的KEY,在个人中心->我的数据,接口名称上方查看
    	public static final String APPKEY = "";
           //明文查询地址
    	public static String query_url = "http://op.juhe.cn/idcard/query?key=" + APPKEY;
           //加密查询地址
    	public static String queryEncry_url = "http://op.juhe.cn/idcard/queryEncry?key=" + APPKEY;
       
          //主方法
    	public static void main(String[] args) throws Exception {
    
    		// ----------------------身份证实名查询-----------------------------------------------------------------------
    		// String realname = "";// 姓名
    		// String idcard = "";// 身份证
    		// int type = 1;// 普通版,不需要加密
    		// Map<String, Object> params = new HashMap<>();
    		// params.put("realname", realname);
    		// params.put("idcard", idcard);
    
    		// ----------------------身份证实名查询(加密版)-----------------------------------------------------------------------
    		String realname = "张三";// 姓名
    		String idcard = "32072119970602561X";// 身份证
    		String openid = "";// 个人中心查询
    		String key = MD5(openid).substring(0, 16);//取前16位作为加密密钥
    		int type = 2;// 加密版本
    		realname = SecurityAESTool.encrypt(realname, key);//加密姓名
    		idcard = SecurityAESTool.encrypt(idcard, key);//加密身份证
    		Map<String, Object> params = new HashMap<>();//组合参数
    		params.put("realname", realname);
    		params.put("idcard", idcard);
                    //请求接口
    		String result = queryResult(params, type);
                    //打印结果
    		System.out.println(result);
    
    	}
    
    	
    
    	public static String queryResult(Map<String, Object> params, int type) throws Exception {
    
    		CloseableHttpClient httpClient = HttpClients.createDefault();
    		CloseableHttpResponse response = null;
    		String result = null;
    		String url = query_url;
    		switch (type) {
    		      case 2:
    			url = queryEncry_url;
    			break;
    		}
    		try {
    			url = new StringBuffer(url).append("&").append(urlencode(params)).toString();
    			HttpGet httpget = new HttpGet(url);
    			httpget.setConfig(config);
    			response = httpClient.execute(httpget);
    			HttpEntity resEntity = response.getEntity();
    			if (resEntity != null) {
    				result = IOUtils.toString(resEntity.getContent(), "UTF-8");
    			}
    			EntityUtils.consume(resEntity);
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			response.close();
    			httpClient.close();
    		}
    		return result;
    	}
    
    
    
    	// 将map型转为请求参数型
    
    	public static String urlencode(Map<String, ?> data) {
    		StringBuilder sb = new StringBuilder();
    		for (Map.Entry<String, ?> i : data.entrySet()) {
    			try {
    				sb.append(i.geTKEy()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&");
    			} catch (UnsupportedEncodingException e) {
    				e.printStackTrace();
    			}
    		}
    		String result = sb.toString();
    		result = result.substring(0, result.lastIndexOf("&"));
    		return result;
    	}
    
    
    
    	
    	public static String MD5(String data) {
    		StringBuffer md5str = new StringBuffer();
    		byte[] input = data.getBytes();
    		try {
    			// 创建一个提供信息摘要算法的对象,初始化为md5算法对象
    			MessageDigest md = MessageDigest.getInstance("MD5");
    			// 计算后获得字节数组
    			byte[] buff = md.digest(input);
    			// 把数组每一字节换成16进制连成md5字符串
    			int digital;
    			for (int i = 0; i < buff.length; i++) {
    				digital = buff[i];
    				if (digital < 0) {
    					digital += 256;
    				}
    				if (digital < 16) {
    					md5str.append("0");
    				}
    				md5str.append(Integer.toHexString(digital));
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return md5str.toString();
    	}
    }
    

    AES工具类,加密解密

    package com.jefferson.utils.interfaceDemo.juheDemo;
    
    import org.apache.commons.codec.binary.Base64;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import javax.crypto.Cipher;
    import javax.crypto.spec.SecretKeySpec;
    
    public class SecurityAESTool {
    
    	
    	public static String encrypt(String str, String key) {
    		byte[] crypted = null;
    		try {
    			SecretKeySpec skey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
    			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    			cipher.init(Cipher.ENCRYPT_MODE, skey);
    			String enStr = str;
    			crypted = cipher.doFinal(enStr.getBytes("UTF-8"));
    		} catch (Exception e) {
    			System.out.println(e.toString());
    		}
    		String body = new String(Base64.encodeBase64(crypted));
    		return body;
    	}
    
    	
    	public static String decrypt(String input, String key) {
    		byte[] output = null;
    		String body = null;
    		if (input == null || key == null) {
    			return null;
    		}
    		try {
    			SecretKeySpec skey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
    			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
    			cipher.init(Cipher.DECRYPT_MODE, skey);
    			byte[] b = Base64.decodeBase64(input);
    			// 解密
    			output = cipher.doFinal(b);
    			body = new String(output, "UTF-8");
    		} catch (Exception e) {
    			System.out.println(e.toString());
    		}
    		return body;
    	}
    
    	public static void main(String[] args) throws UnsupportedEncodingException {
    		String key = "1111111111111111";// 密钥
    		String data = "123456"; // 明文
    
    		String enStr = SecurityAESTool.encrypt(data, key);
    		System.out.println(enStr);
    		System.out.println(URLEncoder.encode(enStr, "UTF-8"));
    	}
    }
    
    

    四、返回参数说明

    名称 类型 说明
    error_code int 返回码
    reason string 返回说明
    result JSONobject 返回结果集
    res int 属result,匹配详情,1匹配,2不匹配
    orderid string 属result,单号

    返回示例:

    {
        "reason": "成功",
        "result": {
            "realname": "***",
            "idcard": "******************",
            "orderid":"J103201911121607589548",[/color]
            "res": 1 
        },
        "error_code": 0
    }
    
    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 基于聚合数据的身份证实名认证API接口调用示例-Java版
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 292稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情