|
@@ -0,0 +1,121 @@
|
|
|
|
+package com.ym.mec.thirdparty.user.realname.provider;
|
|
|
|
+
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.ym.mec.thirdparty.exception.ThirdpartyException;
|
|
|
|
+import com.ym.mec.thirdparty.user.realname.RealnameAuthenticationPlugin;
|
|
|
|
+import com.ym.mec.util.http.HttpUtil;
|
|
|
|
+
|
|
|
|
+@Service
|
|
|
|
+public class LinkfaceRealnameAuthenticationPlugin implements RealnameAuthenticationPlugin {
|
|
|
|
+
|
|
|
|
+ @Value("${realnameAuthentication.linkface.projectid:2cd4937c8dbd4f6a9c70c6d3122df5f4}")
|
|
|
|
+ public String appId;
|
|
|
|
+
|
|
|
|
+ @Value("${realnameAuthentication.linkface.projectSecret:3f809f3800654780beff1ce09b780297}")
|
|
|
|
+ public String appSecret;
|
|
|
|
+
|
|
|
|
+ @Value("${realnameAuthentication.linkface.apisUrl:https://cloudapi.linkface.cn/data/verify_id_name}")
|
|
|
|
+ public String apisUrl;
|
|
|
|
+
|
|
|
|
+ private Map<String, String> reason = new HashMap<String, String>() {
|
|
|
|
+ /**
|
|
|
|
+ *
|
|
|
|
+ */
|
|
|
|
+ private static final long serialVersionUID = -5123335186604042998L;
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ // 定义错误原因
|
|
|
|
+ put("ENCODING_ERROR", "参数非 UTF-8 编码");
|
|
|
|
+ put("INVALID_ARGUMENT", "姓名或者身份证号填写错误");
|
|
|
|
+ put("UNAUTHORIZED", "账号或密钥错误");
|
|
|
|
+ put("KEY_EXPIRED", "账号过期");
|
|
|
|
+ put("RATE_LIMIT_EXCEEDED", "调用频率过高");
|
|
|
|
+ put("OUT_OF_QUOTA", "调用次数超出限额");
|
|
|
|
+ put("NO_PERMISSION", "无调用权限");
|
|
|
|
+ put("NOT_FOUND", "请求路径错误");
|
|
|
|
+ put("DATA_SERVER_ERROR", "数据服务异常");
|
|
|
|
+ put("INTERNAL_ERROR", "内部服务异常");
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ public static String getName() {
|
|
|
|
+ return "linkface";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void destroy() throws Exception {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void afterPropertiesSet() throws Exception {
|
|
|
|
+ if (StringUtils.isBlank(appId) || StringUtils.isBlank(appSecret) || StringUtils.isBlank(apisUrl)) {
|
|
|
|
+ throw new ThirdpartyException("实名认证插件 - Linkface 系统参数缺失,请检查");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean verify(String realname, String idcardNo) {
|
|
|
|
+ String respJson = "";
|
|
|
|
+ HashMap<String, Object> params = new HashMap<String, Object>();
|
|
|
|
+ params.put("api_id", appId);
|
|
|
|
+ params.put("api_secret", appSecret);
|
|
|
|
+ params.put("name", realname);
|
|
|
|
+ params.put("id_number", idcardNo);
|
|
|
|
+ try {
|
|
|
|
+ respJson = HttpUtil.postForHttps(this.apisUrl, params);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ throw new ThirdpartyException("HttpUtil Connection Exception", e);
|
|
|
|
+ }
|
|
|
|
+ JSONObject json = JSONObject.parseObject(respJson);
|
|
|
|
+
|
|
|
|
+ String status = json.get("status").toString();
|
|
|
|
+ Integer result = json.get("result") == null ? null : Integer.parseInt(json.get("result").toString());
|
|
|
|
+
|
|
|
|
+ // 获取返回码
|
|
|
|
+ if (StringUtils.equals("OK", status) && (result != null && result == 1)) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ String msg = "";
|
|
|
|
+ if (result != null) {
|
|
|
|
+ if (result == 2) {
|
|
|
|
+ msg = "身份证号和姓名不⼀致";
|
|
|
|
+ } else if (result == 3) {
|
|
|
|
+ msg = "查无此身份证号";
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ msg = reason.get(status);
|
|
|
|
+ }
|
|
|
|
+ throw new ThirdpartyException("实名认证失败,原因:{}", msg);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setAppId(String appId) {
|
|
|
|
+ this.appId = appId;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setAppSecret(String appSecret) {
|
|
|
|
+ this.appSecret = appSecret;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setApisUrl(String apisUrl) {
|
|
|
|
+ this.apisUrl = apisUrl;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ LinkfaceRealnameAuthenticationPlugin plugin = new LinkfaceRealnameAuthenticationPlugin();
|
|
|
|
+ plugin.setAppId("2cd4937c8dbd4f6a9c70c6d3122df5f4");
|
|
|
|
+ plugin.setAppSecret("3f809f3800654780beff1ce09b780297");
|
|
|
|
+ plugin.setApisUrl("https://cloudapi.linkface.cn/data/verify_id_name");
|
|
|
|
+
|
|
|
|
+ System.out.println(plugin.verify("王武", "411526199706013217"));
|
|
|
|
+ }
|
|
|
|
+}
|