From fda10a06ae6f806d3554d1b7b403aa6ba6aa163c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B6=9B?= <15850646081@163.com> Date: Mon, 24 Jun 2024 16:23:32 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=81=E4=B8=9A=E7=99=BB=E8=AE=B0?= =?UTF-8?q?=E5=8F=8A=E6=9F=A5=E8=AF=A2=E6=9C=8D=E5=8A=A1=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=202=E3=80=81=E7=94=B3=E6=8A=A5=E5=AF=86=E7=A0=81=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=9C=8D=E5=8A=A1=E5=8D=87=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/constant/SzyhApiConstant.java | 14 +++- .../response/GetRequestIdResponse.java | 31 ++++++++ ...AbstractTaxAgentTaxReturnCheckService.java | 67 +++++++++++++++--- .../impl/TaxReturnCheckMainServiceImpl.java | 2 +- ...TaxReturnCheckRegistrationServiceImpl.java | 2 +- test/FwjtDemo.java | 70 +++++++++++++++++++ 6 files changed, 174 insertions(+), 12 deletions(-) create mode 100644 src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java create mode 100644 test/FwjtDemo.java diff --git a/src/com/engine/salary/constant/SzyhApiConstant.java b/src/com/engine/salary/constant/SzyhApiConstant.java index ae932a07d..a56bece39 100644 --- a/src/com/engine/salary/constant/SzyhApiConstant.java +++ b/src/com/engine/salary/constant/SzyhApiConstant.java @@ -23,12 +23,22 @@ public class SzyhApiConstant { /** * 企业注册接口 */ - public static final String GET_REGISTER_INFO_URL = "gateway/iit/declare/getCompanyRegisterInfo"; +// public static final String GET_REGISTER_INFO_URL = "gateway/iit/declare/getCompanyRegisterInfo"; + public static final String GET_REGISTER_INFO_URL = "gateway/iit/service/getCompanyRegisterInfo"; + /** + * 企业注册反馈接口 + */ + public static final String GET_REGISTER_INFO_FEEDBACK_URL = "/gateway/iit/service/getCompanyRegisterInfoFeedback"; /** * 校验密码接口 */ - public static final String CHECK_PASSWORD_URL = "gateway/iit/check/checkPassword"; +// public static final String CHECK_PASSWORD_URL = "gateway/iit/check/checkPassword"; + public static final String CHECK_PASSWORD_URL = "gateway/iit/service/check/checkPassword"; + /** + * 校验密码反馈接口 + */ + public static final String CHECK_PASSWORD_FEEDBACK_URL = "gateway/iit/service/check/getCheckPasswordFeedback"; /** * 人员专项附加扣除信息查询 diff --git a/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java b/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java new file mode 100644 index 000000000..f69bf8844 --- /dev/null +++ b/src/com/engine/salary/entity/taxagent/response/GetRequestIdResponse.java @@ -0,0 +1,31 @@ +package com.engine.salary.entity.taxagent.response; + +import lombok.Data; + +/** + * 神州云合接口返回状态实体 + *

Copyright: Copyright (c) 2023

+ *

Company: 泛微软件

+ * + * @author qiantao + * @version 1.0 + **/ +@Data +public class GetRequestIdResponse { + /** + * 接口状态 + */ + private SzyhResponseHead head; + /** + * 返回数据 + */ + private Body body; + + /** + * 神州云合接口返回状态实体类 + **/ + @Data + public static class Body { + String requestId; + } +} diff --git a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java index 301782ed1..8698d8e26 100644 --- a/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java +++ b/src/com/engine/salary/service/impl/AbstractTaxAgentTaxReturnCheckService.java @@ -10,6 +10,7 @@ import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.entity.taxagent.po.TaxAgentTaxReturnPO; import com.engine.salary.entity.taxagent.response.CheckPasswordResponse; import com.engine.salary.entity.taxagent.response.CompanyRegisterInfoResponse; +import com.engine.salary.entity.taxagent.response.GetRequestIdResponse; import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationApiConfigPO; import com.engine.salary.enums.SalaryOnOffEnum; import com.engine.salary.enums.taxagent.TaxAgentTaxReturnPasswordTypeEnum; @@ -21,8 +22,8 @@ import com.engine.salary.service.TaxAgentTaxReturnCheckService; import com.engine.salary.service.TaxAgentTaxReturnService; import com.engine.salary.service.TaxDeclarationApiConfigService; import com.engine.salary.util.*; -import com.engine.salary.util.db.MapperProxyFactory; import com.engine.salary.util.db.IdGenerator; +import com.engine.salary.util.db.MapperProxyFactory; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -107,7 +108,7 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl * @param saveParam * @return */ - protected CompanyRegisterInfoResponse getCompanyRegisterInfoResponse(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) { + protected CompanyRegisterInfoResponse getCompanyRegisterInfo(TaxDeclarationApiConfigPO apiConfig, TaxAgentTaxReturnPO taxAgentTaxReturnPO, TaxAgentTaxReturnSaveParam saveParam) { TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxAgentTaxReturnPO.getTaxAgentId()); if (taxAgentPO == null) { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100545, "个税扣缴义务人不存在")); @@ -124,10 +125,35 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl String reqJson = JsonUtil.toJsonString(requestParam); Map params = new HashMap<>(1); Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - log.info("getCompanyRegisterInfo params = {}", reqJson); String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("getCompanyRegisterInfo === res : {}", res); - return JsonUtil.parseBean(res, CompanyRegisterInfoResponse.class); + log.info("getCompanyRegisterInfo1 === params:{} === res : {}", reqJson, res); + GetRequestIdResponse getRequestIdResponse = JsonUtil.parseBean(res, GetRequestIdResponse.class); + + if (getRequestIdResponse == null || getRequestIdResponse.getHead() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试")); + } + taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.NOT_COMMIT.getValue()); + taxAgentTaxReturnPO.setUpdateTime(new Date()); + // 如果税友返回错误信息 + if (!SzyhApiConstant.SUCCESS_CODE.equals(getRequestIdResponse.getHead().getCode()) || getRequestIdResponse.getBody() == null) { + taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue()); + taxAgentTaxReturnPO.setFailReason(getRequestIdResponse.getHead().getMsg()); + return null; + } + try { + Thread.sleep(5 * 1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + String requestId = getRequestIdResponse.getBody().getRequestId(); + String getRegisterInfoFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.GET_REGISTER_INFO_FEEDBACK_URL; + Map feedbackHeader = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); + Map map = new HashMap<>(1); + map.put("requestId", requestId); + String companyRegisterInfoResponseRes = HttpUtil.getRequest(getRegisterInfoFeedbackUrl, feedbackHeader, map); + log.info("getCompanyRegisterInfo2 === requestId:{} === res : {}", requestId, companyRegisterInfoResponseRes); + return JsonUtil.parseBean(companyRegisterInfoResponseRes, CompanyRegisterInfoResponse.class); } private List buildCheckDTO(TaxAgentTaxReturnSaveParam saveParam, List registerInfos) { @@ -191,10 +217,35 @@ public abstract class AbstractTaxAgentTaxReturnCheckService extends Service impl String reqJson = JsonUtil.toJsonString(requestParam); Map params = new HashMap<>(1); Map header = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); - log.info("checkPassword === res : {}", reqJson); String res = HttpUtil.doPost(url, header, reqJson, HttpUtil.JSON_TYPE); - log.info("checkPassword === res : {}", res); - return JsonUtil.parseObject(res, CheckPasswordResponse.class); + log.info("checkPassword1 === reqJson :{} === res : {}", reqJson, res); + + GetRequestIdResponse response = JsonUtil.parseObject(res, GetRequestIdResponse.class); + if (response == null || response.getHead() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(95828, "服务异常,请稍后重试")); + } + taxAgentTaxReturnPO.setUpdateTime(new Date()); + if (!SzyhApiConstant.SUCCESS_CODE.equals(response.getHead().getCode()) || response.getBody() == null) { + // 如果返回错误 + taxAgentTaxReturnPO.setCheckStatus(TaxAgentTaxReturnStatusEnum.FAIL.getValue()); + taxAgentTaxReturnPO.setFailReason(response.getHead().getMsg()); + return null; + } + + try { + Thread.sleep(5 * 1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + String checkPasswordFeedbackUrl = apiConfig.getHost() + SzyhApiConstant.CHECK_PASSWORD_FEEDBACK_URL; + Map feedbackHeader = SingnatureData.initHeader(params, apiConfig.getAppKey(), apiConfig.getAppSecret()); + Map map = new HashMap<>(1); + String requestId = response.getBody().getRequestId(); + map.put("requestId", requestId); + res = HttpUtil.getRequest(checkPasswordFeedbackUrl, feedbackHeader, map); + log.info("checkPassword2 === requestId :{} === res : {}", requestId, res); + return JsonUtil.parseBean(res, CheckPasswordResponse.class); } /** diff --git a/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java b/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java index 12feb8d16..8a9e315d9 100644 --- a/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxReturnCheckMainServiceImpl.java @@ -46,7 +46,7 @@ public class TaxReturnCheckMainServiceImpl extends AbstractTaxAgentTaxReturnChec log.error("保存异常", e); } // 调用神州云合API - CompanyRegisterInfoResponse response = getCompanyRegisterInfoResponse(apiConfig, po, saveParam); + CompanyRegisterInfoResponse response = getCompanyRegisterInfo(apiConfig, po, saveParam); List checkFormDTOS = verifyCompanyRegisterInfoResponse(apiConfig, saveParam, po, response); getTaxAgentTaxReturnMapper().updateIgnoreNull(po); // 构建结果 diff --git a/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java b/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java index 4ac507c1b..3f6eff61c 100644 --- a/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java +++ b/src/com/engine/salary/service/impl/TaxReturnCheckRegistrationServiceImpl.java @@ -30,7 +30,7 @@ public class TaxReturnCheckRegistrationServiceImpl extends AbstractTaxAgentTaxRe TaxAgentTaxReturnPO po = getTaxAgentTaxReturnService(user).getByTaxAgentId(saveParam.getTaxAgentId()); // 调用神州云合API TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true); - CompanyRegisterInfoResponse response = getCompanyRegisterInfoResponse(apiConfig, po, saveParam); + CompanyRegisterInfoResponse response = getCompanyRegisterInfo(apiConfig, po, saveParam); List checkFormDTOS = verifyCompanyRegisterInfoResponse(apiConfig, saveParam, po, response); po.setTaxRegistrationNumber(saveParam.getTaxRegistrationNumber()); getTaxAgentTaxReturnMapper().updateIgnoreNull(po); diff --git a/test/FwjtDemo.java b/test/FwjtDemo.java new file mode 100644 index 000000000..48d9f3719 --- /dev/null +++ b/test/FwjtDemo.java @@ -0,0 +1,70 @@ +import com.engine.salary.util.HttpUtil; +import com.engine.salary.util.JsonUtil; +import com.engine.salary.util.SingnatureData; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class FwjtDemo { + + private static final String hostUrl = "https://uat-ddapi.bigfintax.com/"; + private static final String appKey = "fwjt"; + + private static final String appSecret = "D22439F71F0D7BB17C46583837962E6F"; + + public static void main(String[] args) throws Exception { + //1.校验任务发起 + //checkPassWord(); + // 成功受理返回: {"head":{"msg":"成功","code":"00000000","description":"成功","time":"2024-06-21 11:42:31","status":"Y"},"body":{"requestId":"25d99665958148698e60b1de97e2d53d"}} + //2.校验任务查询结果 + getCheckPassWord("25d99665958148698e60b1de97e2d53d"); + // 失败场景如下: {"head":{"msg":"您输入的密码错误,您还剩3次机会,连续输错后密码将会锁定120分钟,请谨慎使用","code":"010013","description":null,"time":"2024-06-21 11:35:15","status":"N"}} + // 成功场景如下: {"head":{"msg":"成功","code":"00000000","description":"成功","time":"2024-06-21 11:34:00","status":"Y"},"body":true} + } + + /*** + * 校验密码 + * @return + * @throws Exception + */ + public static String checkPassWord() throws Exception { + String url = hostUrl + "gateway/iit/service/check/checkPassword"; + Map requestParam = new HashMap(); + requestParam.put("bizNo", UUID.randomUUID().toString().replace("-", "")); + requestParam.put("qymc", "测试0"); + requestParam.put("mmlx", "0"); + requestParam.put("djxhid", "10117110118941289705"); + requestParam.put("nsrsbh", "91110118941289705K"); + requestParam.put("sbmm", "Aa123456"); + requestParam.put("mmlx", "0"); + requestParam.put("areaid", "110105"); + String reqJson = JsonUtil.toJsonString(requestParam); + Map params = new HashMap(); + Map header = SingnatureData.initHeader(params, appKey, appSecret); + String res = ""; + try { + //res = HttpUtil.getRequest(url, header, params); + res = HttpUtil.doPost(url, header, reqJson, "application/json"); + System.out.println(res); + } catch (Exception e) { + e.printStackTrace(); + } + return res; + } + + public static String getCheckPassWord(String requestId) throws Exception { + String url = hostUrl + "gateway/iit/service/check/getCheckPasswordFeedback"; + Map params = new HashMap(); + params.put("requestId", requestId); + Map header = SingnatureData.initHeader(params, appKey, appSecret); + String res = ""; + try { + res = HttpUtil.getRequest(url, header, params); + System.out.println(res); + } catch (Exception e) { + e.printStackTrace(); + } + return res; + } +}