diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/RSAUtil.java b/mall-common/src/main/java/com/suisung/mall/common/utils/RSAUtil.java index ff063c95..01e9a237 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/RSAUtil.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/RSAUtil.java @@ -31,7 +31,7 @@ public class RSAUtil { */ public static String signSHA256withRSA(String data, String privateKey) { try { - // 解码私钥 + // 解码私钥, 并去掉头尾的标识 byte[] keyBytes = Base64.getDecoder().decode(privateKey); PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java index 03c51055..fa81915a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/esign/service/impl/EsignContractServiceImpl.java @@ -198,7 +198,7 @@ public class EsignContractServiceImpl extends BaseServiceImpl innerApplyLedgerMer(String merCupNo); + /** + * 商户入网电子合同申请回调通知 + * 参考:https://o.lakala.com/#/home/document/detail?id=289 + * + * @param request + * @return + */ + JSONObject applyLedgerMerEcNotify(HttpServletRequest request); + /** * 商户分账业务开通申请回调 * 参考:https://o.lakala.com/#/home/document/detail?id=379 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java index 5d8a82b0..f771e4cf 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/LklLedgerEcService.java @@ -34,9 +34,10 @@ public interface LklLedgerEcService extends IBaseService { * 根据接applyId查询记录 * * @param applyId + * @param status * @return */ - LklLedgerEc getByApplyId(Long applyId); + LklLedgerEc getByApplyId(Long applyId, Integer status); /** diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java index a6df3255..7e016fe6 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LakalaApiServiceImpl.java @@ -509,13 +509,20 @@ public class LakalaApiServiceImpl implements LakalaApiService { LocalDate today = LocalDate.now(); // 获取当前日期 String signDate = today.getYear() + "-" + today.getMonthValue() + "-" + today.getDayOfMonth(); + String platformName = "桂平发发网络有限公司"; + String ratioNum = "0.6"; + if (isProd()) { + ratioNum = "0.25"; + } JSONObject ecParams = new JSONObject(); ecParams.put("A1", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name()); - ecParams.put("A30", "0.6"); // 测试环境微信费率0.6 - ecParams.put("A96", "D1"); - ecParams.put("A97", "开通"); - ecParams.put("A100", "不开通"); + ecParams.put("A30", ratioNum); // 测试环境微信费率0.6 + ecParams.put("A96", "1"); + ecParams.put("A97", "是"); + ecParams.put("A100", "否"); ecParams.put("A101", "中国境内"); + ecParams.put("A102", platformName); + ecParams.put("A103", "小发同城"); ecParams.put("A104", today.getYear()); ecParams.put("A105", today.getMonthValue()); ecParams.put("A106", today.getDayOfMonth()); @@ -523,11 +530,13 @@ public class LakalaApiServiceImpl implements LakalaApiService { ecParams.put("A108", today.getMonthValue()); ecParams.put("A109", today.getDayOfMonth()); ecParams.put("B1", today.getYear()); + ecParams.put("B3", "是"); ecParams.put("B2", today.getMonthValue()); ecParams.put("B8", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name()); - ecParams.put("B9", shopMchEntry.getSales_info()); + ecParams.put("B9", StrUtil.subSufByLength(shopMchEntry.getSales_info(), 22)); ecParams.put("B10", isQy ? shopMchEntry.getBiz_license_company() : shopMchEntry.getAccount_holder_name()); ecParams.put("B14", isQy ? shopMchEntry.getBiz_license_number() : ""); + ecParams.put("B16", isQy ? "是" : "否"); ecParams.put("B19", shopMchEntry.getOpenning_bank_code()); ecParams.put("B20", shopMchEntry.getAccount_number()); ecParams.put("B31", shopMchEntry.getStore_name()); @@ -536,16 +545,16 @@ public class LakalaApiServiceImpl implements LakalaApiService { ecParams.put("B34", shopMchEntry.getLogin_mobile()); ecParams.put("D1", shopMchEntry.getBank_name()); ecParams.put("D2", signDate); - ecParams.put("D4", "桂平发发网络有限公司"); + ecParams.put("D4", platformName); ecParams.put("D7", signDate); ecParams.put("D9", signDate); ecParams.put("D11", signDate); ecParams.put("D12", signDate); - ecParams.put("E1", "桂平发发网络有限公司"); - ecParams.put("E2", "商户入驻小发同城平台合同协议"); - ecParams.put("E3", "0"); + ecParams.put("E1", platformName); + ecParams.put("E2", "小发同城平台商户合作协议"); + ecParams.put("E3", "2"); ecParams.put("E4", "70"); - ecParams.put("E5", "桂平发发网络有限公司"); + ecParams.put("E5", platformName); ecParams.put("E7", signDate); ecParams.put("E8", shopMchEntry.getAccount_holder_name()); @@ -792,6 +801,69 @@ public class LakalaApiServiceImpl implements LakalaApiService { } } + /** + * 商户入网电子合同申请回调通知 + * 参考:https://o.lakala.com/#/home/document/detail?id=289 + * + * @param request + * @return + */ + @Override + public JSONObject applyLedgerMerEcNotify(HttpServletRequest request) { + log.info("商户入网电子合同申请回调通知开始"); + + // 验签 + String authorization = request.getHeader("Authorization"); + String requestBody = LakalaUtil.getBody(request); + log.info("商户入网电子合同申请回调返回参数:{}", requestBody); + + boolean checkSuccess = LakalaUtil.verify(authorization, requestBody, lklNotifyCerPath); + if (!checkSuccess) { + log.info("商户入网电子合同申请回调:验签失败"); + return JSONUtil.createObj().set("retCode", "OP90002").set("retMsg", "验签失败!"); + } + + JSONObject paramsJSON = JSONUtil.parseObj(requestBody); + + JSONObject respData = new JSONObject(); + respData.put("retCode", "OP90003"); + respData.put("retMsg", "系统处理失败!"); + + if (paramsJSON != null) { + Long ecApplyId = paramsJSON.getLong("ecApplyId"); + String ecNo = paramsJSON.getStr("ecNo"); + if (ecApplyId == null || StrUtil.isBlank(ecNo)) { + log.info("商户入网电子合同申请回调:ecApplyId 为空"); + respData.put("retMsg", "ecApplyId 返回空值!"); + return respData; + } + + if (lklLedgerEcService.getByApplyId(ecApplyId, CommonConstant.Enable) != null) { + respData.put("retCode", lklSuccessCode); + respData.put("retMsg", "操作成功!"); + log.info("商户入网电子合同申请回调:已处理成功,不需再重新处理"); + } + + // 更改本地分账记录状态数据 + LklLedgerEc updRecord = new LklLedgerEc(); + updRecord.setEc_apply_id(ecApplyId); + updRecord.setEc_no(ecNo); + updRecord.setEc_name(paramsJSON.getStr("ecName")); + updRecord.setEc_status(paramsJSON.getStr("ecStatus")); + // 更新本地数据状态和合同编号、合同名字 + Boolean success = lklLedgerEcService.updateByApplyId(updRecord); + if (success) { + respData.put("retCode", lklSuccessCode); + respData.put("retMsg", "操作成功!"); + log.info("商户入网电子合同申请回调:处理成功"); + + // 更新商家入驻表的合同编号,合同名称 + } + } + + return respData; + } + /** * 商户分账业务开通申请回调 * 参考:https://o.lakala.com/#/home/document/detail?id=379 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java index 3572c05a..c2dc8acc 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/lakala/service/impl/LklLedgerEcServiceImpl.java @@ -107,13 +107,17 @@ public class LklLedgerEcServiceImpl extends BaseServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.eq("ec_apply_id", applyId); + if (ObjectUtil.isNotEmpty(status)) { + queryWrapper.eq("status", status); + } + return getOne(queryWrapper); }