|
@@ -4,6 +4,8 @@ import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
|
|
|
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.Service;
|
|
|
|
|
@@ -15,100 +17,104 @@ import com.yonge.toolset.utils.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;
|
|
|
- }
|
|
|
+ private final static Logger log = LoggerFactory.getLogger(LinkfaceRealnameAuthenticationPlugin.class);
|
|
|
+
|
|
|
+ @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) {
|
|
|
+ log.error("实名认证接口请求失败,参数:{},异常信息:{}", JSONObject.toJSONString(params), e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ThirdpartyException("实名认证请求失败");
|
|
|
+ }
|
|
|
+ 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();
|