From e76dc3245a42b46c31a30afd2140bed703d3ad35 Mon Sep 17 00:00:00 2001 From: wangsq Date: Thu, 8 Oct 2026 09:06:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E6=96=B9=E6=94=AF=E4=BB=98=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/ynxbd/common/TestA.java | 10 +- .../com/ynxbd/common/action/RecipeAction.java | 13 +- .../com/ynxbd/common/action/TreatAction.java | 8 +- .../ynxbd/common/action/pay/JYPayAction.java | 19 +-- .../common/action/pay/MedicalTestAction.java | 2 +- .../ynxbd/common/action/pay/NotifyAction.java | 14 +- .../ynxbd/common/action/pay/WxPayAction.java | 14 +- .../ynxbd/common/action/test/TestAction.java | 10 +- .../com/ynxbd/common/action/xk/XKAction.java | 4 +- .../java/com/ynxbd/common/bean/HisRecipe.java | 25 +++- .../ynxbd/common/bean/enums/MerchantEnum.java | 5 +- .../ynxbd/common/bean/xk/HisTCMRxItem.java | 2 + .../com/ynxbd/common/bean/xk/HisWMRxItem.java | 3 + .../com/ynxbd/common/dao/his/HisTreatDao.java | 2 +- .../com/ynxbd/common/dao/his/HisXKDao.java | 9 +- .../common/helper/common/JsonHelper.java | 27 +++- .../ynxbd/common/service/MicroService.java | 7 +- .../com/ynxbd/common/service/PayService.java | 3 +- .../com/ynxbd/common/service/RxService.java | 9 +- .../java/com/ynxbd/jy/helper/JYPayConfig.java | 3 + .../java/com/ynxbd/jy/helper/JYPayHelper.java | 4 + .../wx/servlet/oldpay/PayNotifyServlet.java | 8 +- .../{WxRespHelper.java => WxNotifyResp.java} | 135 +++++++++--------- src/main/resources/jy-config.xml | 2 +- 24 files changed, 206 insertions(+), 132 deletions(-) rename src/main/java/com/ynxbd/wx/wxfactory/utils/{WxRespHelper.java => WxNotifyResp.java} (70%) diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java index 91c7215..3f4536d 100644 --- a/src/main/java/com/ynxbd/common/TestA.java +++ b/src/main/java/com/ynxbd/common/TestA.java @@ -2,6 +2,8 @@ package com.ynxbd.common; import cn.hutool.core.util.IdcardUtil; import com.alibaba.fastjson.JSONObject; +import com.ynxbd.common.bean.xk.HisWMRxItem; +import com.ynxbd.common.bean.xk.XKChargeOrRefund; import com.ynxbd.common.helper.common.AesMicroHelper; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.helper.http.OkHttpHelper; @@ -29,7 +31,6 @@ public class TestA { /// / }); // test(); // } - public static void test() { // String xml = "40090成功0.00ORD530100202608121122576630746TSN5301002026081211225734038313119968898754003081656516118908900{\"setlinfo\":{\"psnCashPay\":0,\"inscpScpAmt\":81,\"medinsSetlId\":\"H53310300023202608121122583668\",\"medType\":\"21\",\"age\":25,\"acctPay\":89,\"psnType\":\"11\",\"psnName\":\"王晨宇\",\"mdtrtCertNo\":\"530000ocvpvqk10ujb26a3720a00009bfc99ea\",\"insuAdmdvs\":\"533199\",\"hifobPay\":0,\"psnCertType\":\"01\",\"mdtrtCertType\":\"01\",\"actPayDedc\":81,\"psnPay\":89,\"psnInsuRltsId\":\"53000000300121343792\",\"overlmtSelfpay\":5,\"ownpayHospPart\":0,\"medfeeSumamt\":89,\"mdtrtId\":\"311996889875\",\"hifmiPay\":0,\"certno\":\"533103200008164016\",\"crtDedc\":81,\"hifpPay\":0,\"poolPropSelfpay\":0,\"clrType\":\"21\",\"mafPay\":0,\"cvlservPay\":0,\"setlTime\":\"2026-08-12 11:22:59\",\"hospPartAmt\":0,\"expContent\":\"{\\\"unif_pay_std\\\":0,\\\"unif_pay_blnc\\\":0,\\\"bkst_safeg_amt\\\":0,\\\"fin_subs\\\":null,\\\"care_subs\\\":null,\\\"insu_cmpy_name\\\":\\\"\\\",\\\"comp_sum_amt\\\":null,\\\"comp_dscr\\\":\\\"\\\",\\\"comp_fail_rea\\\":\\\"\\\",\\\"bas_sec_pool_lmt\\\":0,\\\"mihisec_pool_lmt\\\":0,\\\"cvlserv_acct_pay\\\":0,\\\"oth_subs\\\":null,\\\"bas_sev_inpool_amt\\\":0,\\\"mihisec_inpool_amt\\\":0,\\\"third_pay_list\\\":[],\\\"sp_psn_type\\\":\\\"95341\\\",\\\"cvlserv_lmt_rm\\\":0,\\\"wlt_acct_pay\\\":0,\\\"hosp_payf_amt\\\":0,\\\"cla_trt_flag\\\":\\\"1\\\"}\",\"othPay\":0,\"dedcStd\":600,\"othfundPay\":0,\"preselfpayAmt\":3,\"cashPayamt\":0,\"fulamtOwnpayAmt\":0,\"fundPaySumamt\":0,\"cvlservFlag\":\"0\",\"insutype\":\"310\",\"acctMulaidPay\":0,\"psnPartAmt\":89,\"enddate\":1785838099000,\"hifesPay\":0,\"naty\":\"01\",\"gend\":\"1\",\"brdy\":\"2000-08-16\",\"balc\":242.38,\"inscpAmt\":81,\"hifdmPay\":0,\"begndate\":1785813000000,\"psnNo\":\"DH5310062846\"},\"SETLINFO\":{\"psn_part_amt\":89,\"hifob_pay\":0,\"age\":25,\"psn_pay\":89,\"preselfpay_amt\":3,\"oth_pay\":0,\"hifp_pay\":0,\"overlmt_selfpay\":5,\"hifes_pay\":0,\"psn_cash_pay\":0,\"maf_pay\":0,\"dedc_std\":600,\"act_pay_dedc\":81,\"inscp_amt\":81,\"mdtrt_id\":\"311996889875\",\"hifmi_pay\":0,\"crt_dedc\":81,\"psn_no\":\"DH5310062846\",\"medins_setl_id\":\"H53310300023202608121122583668\",\"certno\":\"533103200008164016\",\"psn_cert_type\":\"01\",\"exp_content\":\"{\\\"unif_pay_std\\\":0,\\\"unif_pay_blnc\\\":0,\\\"bkst_safeg_amt\\\":0,\\\"fin_subs\\\":null,\\\"care_subs\\\":null,\\\"insu_cmpy_name\\\":\\\"\\\",\\\"comp_sum_amt\\\":null,\\\"comp_dscr\\\":\\\"\\\",\\\"comp_fail_rea\\\":\\\"\\\",\\\"bas_sec_pool_lmt\\\":0,\\\"mihisec_pool_lmt\\\":0,\\\"cvlserv_acct_pay\\\":0,\\\"oth_subs\\\":null,\\\"bas_sev_inpool_amt\\\":0,\\\"mihisec_inpool_amt\\\":0,\\\"third_pay_list\\\":[],\\\"sp_psn_type\\\":\\\"95341\\\",\\\"cvlserv_lmt_rm\\\":0,\\\"wlt_acct_pay\\\":0,\\\"hosp_payf_amt\\\":0,\\\"cla_trt_flag\\\":\\\"1\\\"}\",\"setl_time\":\"2026-08-12 11:22:59\",\"acct_mulaid_pay\":0,\"psn_type\":\"11\",\"psn_name\":\"王晨宇\",\"clr_type\":\"21\",\"fulamt_ownpay_amt\":0,\"med_type\":\"21\",\"cashPayamt\":0,\"mdtrt_cert_no\":\"530000ocvpvqk10ujb26a3720a00009bfc99ea\",\"cvlserv_flag\":\"0\",\"cvlserv_pay\":0,\"insutype\":\"310\",\"enddate\":1785838099000,\"ownpay_hosp_part\":0,\"hosp_part_amt\":0,\"mdtrt_cert_type\":\"01\",\"pool_prop_selfpay\":0,\"naty\":\"01\",\"gend\":\"1\",\"brdy\":\"2000-08-16\",\"balc\":242.38,\"hifdm_pay\":0,\"medfee_sumamt\":89,\"othfund_pay\":0,\"psn_insu_rlts_id\":\"53000000300121343792\",\"insu_admdvs\":\"533199\",\"acct_pay\":89,\"inscp_scp_amt\":81,\"begndate\":1785813000000,\"fund_pay_sumamt\":0},\"originalResult\":{\"respondTime\":\"20260812112259839\",\"infRefmsgid\":\"530000202608121122598204425853\",\"output\":{\"setlinfo\":{\"psn_part_amt\":89,\"hifob_pay\":0,\"age\":25,\"psn_pay\":89,\"preselfpay_amt\":3,\"oth_pay\":0,\"hifp_pay\":0,\"overlmt_selfpay\":5,\"hifes_pay\":0,\"psn_cash_pay\":0,\"maf_pay\":0,\"dedc_std\":600,\"act_pay_dedc\":81,\"inscp_amt\":81,\"mdtrt_id\":\"311996889875\",\"hifmi_pay\":0,\"crt_dedc\":81,\"psn_no\":\"DH5310062846\",\"medins_setl_id\":\"H53310300023202608121122583668\",\"certno\":\"533103200008164016\",\"psn_cert_type\":\"01\",\"exp_content\":\"{\\\"unif_pay_std\\\":0,\\\"unif_pay_blnc\\\":0,\\\"bkst_safeg_amt\\\":0,\\\"fin_subs\\\":null,\\\"care_subs\\\":null,\\\"insu_cmpy_name\\\":\\\"\\\",\\\"comp_sum_amt\\\":null,\\\"comp_dscr\\\":\\\"\\\",\\\"comp_fail_rea\\\":\\\"\\\",\\\"bas_sec_pool_lmt\\\":0,\\\"mihisec_pool_lmt\\\":0,\\\"cvlserv_acct_pay\\\":0,\\\"oth_subs\\\":null,\\\"bas_sev_inpool_amt\\\":0,\\\"mihisec_inpool_amt\\\":0,\\\"third_pay_list\\\":[],\\\"sp_psn_type\\\":\\\"95341\\\",\\\"cvlserv_lmt_rm\\\":0,\\\"wlt_acct_pay\\\":0,\\\"hosp_payf_amt\\\":0,\\\"cla_trt_flag\\\":\\\"1\\\"}\",\"setl_time\":\"2026-08-12 11:22:59\",\"acct_mulaid_pay\":0,\"psn_type\":\"11\",\"psn_name\":\"王晨宇\",\"clr_type\":\"21\",\"fulamt_ownpay_amt\":0,\"med_type\":\"21\",\"cashPayamt\":0,\"mdtrt_cert_no\":\"530000ocvpvqk10ujb26a3720a00009bfc99ea\",\"cvlserv_flag\":\"0\",\"cvlserv_pay\":0,\"insutype\":\"310\",\"enddate\":1785838099000,\"ownpay_hosp_part\":0,\"hosp_part_amt\":0,\"mdtrt_cert_type\":\"01\",\"pool_prop_selfpay\":0,\"naty\":\"01\",\"gend\":\"1\",\"brdy\":\"2000-08-16\",\"balc\":242.38,\"hifdm_pay\":0,\"medfee_sumamt\":89,\"othfund_pay\":0,\"psn_insu_rlts_id\":\"53000000300121343792\",\"insu_admdvs\":\"533199\",\"acct_pay\":89,\"inscp_scp_amt\":81,\"begndate\":1785813000000,\"fund_pay_sumamt\":0},\"setldetail\":[{\"fund_pay_type_name\":\"城镇职工基本医疗保险统筹基金(住院)\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"310100\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"职工大病保险基金\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"99999702\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"城镇职工基本医疗保险个人账户基金\",\"crt_payb_lmt_amt\":89,\"fund_pay_type\":\"310200\",\"inscp_scp_amt\":89,\"fund_payamt\":89}]},\"refmsgTime\":\"20260812112258087\",\"infcode\":0},\"setldetail\":[{\"fund_pay_type_name\":\"城镇职工基本医疗保险统筹基金(住院)\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"310100\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"职工大病保险基金\",\"crt_payb_lmt_amt\":0,\"fund_pay_type\":\"99999702\",\"inscp_scp_amt\":0,\"fund_payamt\":0},{\"fund_pay_type_name\":\"城镇职工基本医疗保险个人账户基金\",\"crt_payb_lmt_amt\":89,\"fund_pay_type\":\"310200\",\"inscp_scp_amt\":89,\"fund_payamt\":89}]}"; // JsonResult result = JsonResult.xmlToBean(xml, JsonResultEnum.SYS_HIS); @@ -133,7 +134,12 @@ public class TestA { public static void main(String[] args) { - System.out.println(AesWxHelper.decode("DC88B70DDA4C2EA965CBF5FCD43297CD6478071E12258B40EE29EFFB3A1043CA")); + XKChargeOrRefund info = new XKChargeOrRefund(); + info.setVisitNo("111"); + OkHttpHelper.postAsync("http://127.0.0.1:9090/micro/xk/rxChargeOrRefund", map -> { + map.put("data", AesMicroHelper.encode(JsonHelper.toJsonString(info))); + }); +// System.out.println(AesWxHelper.decode("DC88B70DDA4C2EA965CBF5FCD43297CD6478071E12258B40EE29EFFB3A1043CA")); } } \ No newline at end of file diff --git a/src/main/java/com/ynxbd/common/action/RecipeAction.java b/src/main/java/com/ynxbd/common/action/RecipeAction.java index a4f7f97..236c7e2 100644 --- a/src/main/java/com/ynxbd/common/action/RecipeAction.java +++ b/src/main/java/com/ynxbd/common/action/RecipeAction.java @@ -101,8 +101,10 @@ public class RecipeAction extends BaseAction { rxItem.setPid(patientId); rxItem.setTreatNum(rxItem.getMzNum()); rxItem.setEnTreatNum(AesWxHelper.encode(rxItem.getTreatNum())); - if (rxItem.getDate() != null && DateHelper.inDateRange(begDate, endDate, rxItem.getDate(), DateHelper.DateEnum.yyyy_MM_dd) - && !"1".equals(rxItem.getSTDFlag()) && (!"1".equals(rxItem.getInternetHospFlag()) || "1".equals(rxItem.getYJSAuditFlag()))) { + if (rxItem.getDate() != null + && DateHelper.inDateRange(begDate, endDate, rxItem.getDate(), DateHelper.DateEnum.yyyy_MM_dd) + && !rxItem.hasRxCirculation() // 不是双通道处方 + && (!rxItem.hasOLRx() || rxItem.hasOLRxAndExamine())) { // 不是互联网处方 || 是互联网处方且已审核 dataList.add(rxItem); } } @@ -124,7 +126,8 @@ public class RecipeAction extends BaseAction { List resultList = new ArrayList<>(); for (HisRecipe hisRecipe : hisRecipes) { if (hisRecipe.getDate() != null && DateHelper.inDateRange(begDate, endDate, hisRecipe.getDate(), DateHelper.DateEnum.yyyy_MM_dd) - && !"1".equals(hisRecipe.getSTDFlag()) && (!"1".equals(hisRecipe.getInternetHospFlag()) || "1".equals(hisRecipe.getYJSAuditFlag()))) { + && !"1".equals(hisRecipe.getSTDFlag()) + && (!"1".equals(hisRecipe.getInternetHospFlag()) || "1".equals(hisRecipe.getYJSAuditFlag()))) { resultList.add(hisRecipe); } } @@ -152,7 +155,9 @@ public class RecipeAction extends BaseAction { rxItem.setPid(patientId); rxItem.setTreatNum(rxItem.getMzNum()); rxItem.setEnTreatNum(AesWxHelper.encode(rxItem.getTreatNum())); - if (rxItem.getDate() != null && DateHelper.inDateRange(begDate, endDate, rxItem.getDate(), DateHelper.DateEnum.yyyy_MM_dd)) { + if (rxItem.getDate() != null + && DateHelper.inDateRange(begDate, endDate, rxItem.getDate(), DateHelper.DateEnum.yyyy_MM_dd) + && rxItem.hasOLRx()) { // 是互联网处方 dataList.add(rxItem); } } diff --git a/src/main/java/com/ynxbd/common/action/TreatAction.java b/src/main/java/com/ynxbd/common/action/TreatAction.java index 688edcc..73d4ec2 100644 --- a/src/main/java/com/ynxbd/common/action/TreatAction.java +++ b/src/main/java/com/ynxbd/common/action/TreatAction.java @@ -112,14 +112,14 @@ public class TreatAction extends BaseAction { - @Action("queryTreatByTreatNum") - public Result queryTreatByTreatNum(@AesDecode(AesClass = AesMicroHelper.class) String treatNum) { + @Action("queryHisTreatByTreatNum") + public Result queryHisTreatByTreatNum(@AesDecode String treatNum) { try { - log.info("[就诊记录]查询信息 treatNum={}", treatNum); + log.info("[就诊记录]查询 treatNum={}", treatNum); if (ObjectUtils.isEmpty(treatNum)) { return Result.error(ResultEnum.PARAM_IS_INVALID); } - List daatList = new HisTreatDao().queryTreatByTreatNum(treatNum); + List daatList = new HisTreatDao().queryHisTreatByTreatNum(treatNum); return Result.success(daatList); } catch (ServiceException e) { return Result.error(e); diff --git a/src/main/java/com/ynxbd/common/action/pay/JYPayAction.java b/src/main/java/com/ynxbd/common/action/pay/JYPayAction.java index f7c0298..bcd3c59 100644 --- a/src/main/java/com/ynxbd/common/action/pay/JYPayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/JYPayAction.java @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; import com.ynxbd.common.action.base.BaseAction; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.ApiPayNotify; -import com.ynxbd.common.bean.pay.Order; import com.ynxbd.common.bean.pay.ReqOrder; import com.ynxbd.common.helper.common.HttpHelper; import com.ynxbd.common.helper.common.JsonHelper; @@ -12,17 +11,10 @@ import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ResultEnum; import com.ynxbd.common.result.ServiceException; import com.ynxbd.common.service.PayService; -import com.ynxbd.common.service.RegService; -import com.ynxbd.common.service.RxService; -import com.ynxbd.jy.bean.JYOrder; -import com.ynxbd.jy.bean.JYPayNotify; import com.ynxbd.jy.bean.JYPayRSAUtil; -import com.ynxbd.jy.bean.enums.JYBusinessTypeEnum; -import com.ynxbd.jy.bean.enums.JYOrderTypeEnum; import com.ynxbd.jy.helper.JYPayConfig; import com.ynxbd.jy.helper.JYPayHelper; -import com.ynxbd.wx.wxfactory.WxPayHelper; -import com.ynxbd.wx.wxfactory.utils.WxRespHelper; +import com.ynxbd.wx.wxfactory.utils.WxNotifyResp; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import org.apache.struts2.convention.annotation.Action; @@ -114,10 +106,11 @@ public class JYPayAction extends BaseAction { */ @Action("notify") public Result notify(String notifyType) { + WxNotifyResp notify = new WxNotifyResp(MerchantEnum.JY); try { PEnum pEnum = PEnum.findEnum(notifyType); if (pEnum == null) { - return Result.respXml(WxRespHelper.respOk()); + return Result.respXml(notify.respOk()); } Map params = reqParamsToMap(); @@ -129,15 +122,15 @@ public class JYPayAction extends BaseAction { ApiPayNotify info = JYPayHelper.jyPayNotify(params, notifyType); log.info("【京颐】[{}]收到[{}]通知-{}", pEnum.NAME, (info.isRefundOrder() ? "退款" : "支付"), JsonHelper.toJsonString(info)); - Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功 + Result.respXml(notify.respOk()); // 收到请求-解析成功 if (info.isRefundOrder()) { PayService.refundNotify(info); } else { - PayService.wxNotify(info); + PayService.wxNotify(notify.merchantEnum, info); } } catch (ServiceException e) { - Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败 + Result.respXml(notify.resp(e)); // 收到请求-解析失败 } return null; } diff --git a/src/main/java/com/ynxbd/common/action/pay/MedicalTestAction.java b/src/main/java/com/ynxbd/common/action/pay/MedicalTestAction.java index 1a307e6..a207162 100644 --- a/src/main/java/com/ynxbd/common/action/pay/MedicalTestAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/MedicalTestAction.java @@ -237,7 +237,7 @@ public class MedicalTestAction extends BaseAction { recipe.setTreatNum(treatNum); if (treatNum != null) { - List dataList = new HisTreatDao().queryTreatByTreatNum(treatNum); + List dataList = new HisTreatDao().queryHisTreatByTreatNum(treatNum); if (!dataList.isEmpty()) { HisTreat hisTreat = dataList.get(0); if (hisTreat != null) { diff --git a/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java b/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java index 59253b8..3432867 100644 --- a/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/NotifyAction.java @@ -8,7 +8,7 @@ import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ServiceException; import com.ynxbd.common.service.*; import com.ynxbd.wx.wxfactory.WxPayHelper; -import com.ynxbd.wx.wxfactory.utils.WxRespHelper; +import com.ynxbd.wx.wxfactory.utils.WxNotifyResp; import lombok.extern.slf4j.Slf4j; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; @@ -29,13 +29,14 @@ public class NotifyAction extends BaseAction { */ @Action("wx_pay_notify_servlet") public Result wx_pay_notify_servlet() { + WxNotifyResp notify = new WxNotifyResp(MerchantEnum.WX); try { ApiPayNotify info = WxPayHelper.wxPayNotify(request); - Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功 + Result.respXml(notify.respOk()); // 收到请求-解析成功 - PayService.wxNotify(info); + PayService.wxNotify(notify.merchantEnum, info); } catch (ServiceException e) { - Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败 + Result.respXml(notify.resp(e)); // 收到请求-解析失败 } return null; } @@ -48,9 +49,10 @@ public class NotifyAction extends BaseAction { */ @Action("wx_native_pay_notify_servlet") public Result wx_native_pay_notify_servlet() { + WxNotifyResp notify = new WxNotifyResp(MerchantEnum.WX); try { ApiPayNotify info = WxPayHelper.wxPayNotify(request); - Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功 + Result.respXml(notify.respOk()); // 收到请求-解析成功 String openid = info.getOpenId(); String bankTransNo = info.getTransactionId(); @@ -73,7 +75,7 @@ public class NotifyAction extends BaseAction { } } catch (ServiceException e) { - Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败 + Result.respXml(notify.resp(e)); // 收到请求-解析失败 } return null; } diff --git a/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java b/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java index 3f884f0..faed6a1 100644 --- a/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java +++ b/src/main/java/com/ynxbd/common/action/pay/WxPayAction.java @@ -9,7 +9,7 @@ import com.ynxbd.common.result.ServiceException; import com.ynxbd.common.service.OutCollectService; import com.ynxbd.common.service.PayService; import com.ynxbd.wx.wxfactory.WxPayHelper; -import com.ynxbd.wx.wxfactory.utils.WxRespHelper; +import com.ynxbd.wx.wxfactory.utils.WxNotifyResp; import lombok.extern.slf4j.Slf4j; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; @@ -27,13 +27,14 @@ public class WxPayAction extends BaseAction { */ @Action("apiNotify") public Result apiNotify() { + WxNotifyResp notify = new WxNotifyResp(MerchantEnum.WX); try { ApiPayNotify info = WxPayHelper.wxPayNotify(request); - Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功 + Result.respXml(notify.respOk()); // 收到请求-解析成功 - PayService.wxNotify(info); + PayService.wxNotify(notify.merchantEnum, info); } catch (ServiceException e) { - Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败 + Result.respXml(notify.resp(e)); // 收到请求-解析失败 } return null; } @@ -46,9 +47,10 @@ public class WxPayAction extends BaseAction { */ @Action("nativeNotify") public Result nativeNotify() { + WxNotifyResp notify = new WxNotifyResp(MerchantEnum.WX); try { ApiPayNotify info = WxPayHelper.wxPayNotify(request); - Result.respXml(WxRespHelper.respOk()); // 收到请求-解析成功 + Result.respXml(notify.respOk()); // 收到请求-解析成功 String openid = info.getOpenId(); String bankTransNo = info.getTransactionId(); @@ -71,7 +73,7 @@ public class WxPayAction extends BaseAction { } } catch (ServiceException e) { - Result.respXml(WxRespHelper.resp(e)); // 收到请求-解析失败 + Result.respXml(notify.resp(e)); // 收到请求-解析失败 } return null; } diff --git a/src/main/java/com/ynxbd/common/action/test/TestAction.java b/src/main/java/com/ynxbd/common/action/test/TestAction.java index 63b1b2a..273bff0 100644 --- a/src/main/java/com/ynxbd/common/action/test/TestAction.java +++ b/src/main/java/com/ynxbd/common/action/test/TestAction.java @@ -38,9 +38,17 @@ public class TestAction extends BaseAction { } } +// public synchronized void jy_refund_handle() { +// if (i == 0) { +// i++; +// JYPayHelper.refundPayOrder(JYBusinessTypeEnum.B102, new ReqOrder(), outRefundNo, refundFee, outTradeNo, bankMerchantNo, tradeNo); +// } +// } + @Action("refund_test") public Result refund_test() throws ServiceException { - refund_handle(); +// refund_handle(); +// jy_refund_handle(); return Result.success(); } diff --git a/src/main/java/com/ynxbd/common/action/xk/XKAction.java b/src/main/java/com/ynxbd/common/action/xk/XKAction.java index 3065d4d..4e70912 100644 --- a/src/main/java/com/ynxbd/common/action/xk/XKAction.java +++ b/src/main/java/com/ynxbd/common/action/xk/XKAction.java @@ -154,7 +154,7 @@ public class XKAction extends BaseAction { */ @Action("queryOLRegConsultFee") public Result queryOLRegConsultFee(String code) { - log.info("[问诊]查询问诊挂号-咨询费用 code={}", code); + log.info("[问诊]查询问诊挂号-咨询费用"); try { return Result.success(new HisTreatDao().queryOLRegConsultFee(code)); } catch (Exception e) { @@ -169,7 +169,7 @@ public class XKAction extends BaseAction { */ @Action("queryOLRegRevisitFee") public Result queryOLRegRevisitFee(String code) { - log.info("[问诊]查询问诊挂号-复诊费用 code={}", code); + log.info("[问诊]查询问诊挂号-复诊费用"); try { return Result.success(new HisTreatDao().queryOLRegRevisitFee(code)); } catch (Exception e) { diff --git a/src/main/java/com/ynxbd/common/bean/HisRecipe.java b/src/main/java/com/ynxbd/common/bean/HisRecipe.java index 8e5685a..856182e 100644 --- a/src/main/java/com/ynxbd/common/bean/HisRecipe.java +++ b/src/main/java/com/ynxbd/common/bean/HisRecipe.java @@ -65,23 +65,22 @@ public class HisRecipe { private String hospitalAreaCode; // 院区名称 private String hospitalAreaName; - // 互联网医院处方标识[1:互联网处方] private String internetHospFlag; // 是否为双通道处方 [1:双通道处方] private String sTDFlag; - + // private String sTDUploadDate; // 处方是否已经审核 private String yJSAuditFlag; private String ybAttrib; // 医保属性[4:为慢性病,5:为特殊病] - private Integer ybJsFlag; // 是否允许医保支付 [1不允许医保缴费,否则允许医保缴费] + private Integer ybJsFlag; // 是否禁用医保支付 [1不允许医保缴费,否则允许医保缴费] - private String ybBZCode; // 病种编码 + private String ybBZCode; // 医保病种编码 - private String ybBZName; // 病种名称 + private String ybBZName; // 医保病种名称 // 发票号(已缴费中查询出来=>发票状态) private String invoiceNo; @@ -104,4 +103,20 @@ public class HisRecipe { } this.enBillNo = AesWxHelper.encode(this.billNo); } + + + // 为双通道处方 + public boolean hasRxCirculation() { + return "1".equals(this.sTDFlag); + } + + // 为互联网问诊处方 + public boolean hasOLRx() { + return "1".equals(this.internetHospFlag); + } + + // 为互联网处方且已审核 + public boolean hasOLRxAndExamine() { + return "1".equals(this.internetHospFlag) && "1".equals(this.yJSAuditFlag); + } } diff --git a/src/main/java/com/ynxbd/common/bean/enums/MerchantEnum.java b/src/main/java/com/ynxbd/common/bean/enums/MerchantEnum.java index 4052b6c..c7e7791 100644 --- a/src/main/java/com/ynxbd/common/bean/enums/MerchantEnum.java +++ b/src/main/java/com/ynxbd/common/bean/enums/MerchantEnum.java @@ -40,7 +40,7 @@ public enum MerchantEnum { "0", "1", "2"), // Global Medical Communities - WX_GMC("wx_gmc_mini", "【微信医共体】", WeChatConfig.GMC_MINI_APP_ID, "WMC", + WX_GMC("wx_gmc_mini", "【微信医共体】", WeChatConfig.GMC_MINI_APP_ID, "WG", WX.IS_DEV, WX.HIS_PAY_WAY, WX.BAR_CODE_RULES, @@ -194,6 +194,9 @@ public enum MerchantEnum { } else if (MerchantEnum.BCM.OUT_TRADE_NO_PREFIX.toUpperCase().equals(outTradeNo.substring(0, MerchantEnum.BCM.OUT_TRADE_NO_PREFIX.length()))) { return MerchantEnum.BCM; + } else if (MerchantEnum.JY.OUT_TRADE_NO_PREFIX.toUpperCase().equals(outTradeNo.substring(0, MerchantEnum.JY.OUT_TRADE_NO_PREFIX.length()))) { + return MerchantEnum.JY; + } else { return null; } diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java b/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java index 4bf69b0..9e08c3b 100644 --- a/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java +++ b/src/main/java/com/ynxbd/common/bean/xk/HisTCMRxItem.java @@ -31,4 +31,6 @@ public class HisTCMRxItem implements Serializable { @JSONField(ordinal = 5, name = "NOTE") private String note; + @JSONField(ordinal = 6, name = "XMPRICE") + private String xmPrice; } diff --git a/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java b/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java index 5547858..a2ad102 100644 --- a/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java +++ b/src/main/java/com/ynxbd/common/bean/xk/HisWMRxItem.java @@ -53,4 +53,7 @@ public class HisWMRxItem implements Serializable { @JSONField(ordinal = 12, name = "NOTE") private String note; + @JSONField(ordinal = 13, name = "XMPRICE") + private String xmPrice; + } diff --git a/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java b/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java index 4832dd3..25899d4 100644 --- a/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java +++ b/src/main/java/com/ynxbd/common/dao/his/HisTreatDao.java @@ -98,7 +98,7 @@ public class HisTreatDao { } - public List queryTreatByTreatNum(String treatNum) throws ServiceException { + public List queryHisTreatByTreatNum(String treatNum) throws ServiceException { List dataList = new ArrayList<>(); JsonResult jsonResult = HisFactory.His().getJsonResult(HisEnum.XK_QUERY_TREAT, params -> { diff --git a/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java b/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java index 34d1bae..49fc044 100644 --- a/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java +++ b/src/main/java/com/ynxbd/common/dao/his/HisXKDao.java @@ -7,9 +7,9 @@ import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.his.HisEnum; import com.ynxbd.common.his.HisFactory; import com.ynxbd.common.result.JsonResult; -import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ResultEnum; import com.ynxbd.common.result.ServiceException; +import com.ynxbd.jy.helper.JYPayConfig; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -120,6 +120,7 @@ public class HisXKDao { rxList = hisTCMRxItems; } + JsonResult jsonResult = HisFactory.His().getJsonResult(HisEnum.HIS_XK_RX_CREATE, params -> { params.put("MZNum", treatNum); // 门诊号 params.put("CFFlag", rxDrugType); // 处方药品类别[1:西药处方;2:中药处方] @@ -137,7 +138,11 @@ public class HisXKDao { params.put("CFCount", tcmCFCount); // 处方付数 params.put("CFUseCount", tcmCFUseCount); // 处方单付使用次数 params.put("UseCountForDay", tcmUseCountForDay); // 每日使用次数 - params.put("Jarray", JsonHelper.toJsonStringEmpty(rxList)); + if (JYPayConfig.IS_ENABLE) { + params.put("Jarray", JsonHelper.toJsonStringEmpty(rxList)); + } else { + params.put("Jarray", JsonHelper.toJsonStringEmpty(rxList, "XMPRICE")); + } }); log.info("[开方]返回: {}", JsonHelper.toJsonString(jsonResult.getDataMap())); return jsonResult; diff --git a/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java b/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java index eba5c3c..97c9a1f 100644 --- a/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java +++ b/src/main/java/com/ynxbd/common/helper/common/JsonHelper.java @@ -6,12 +6,15 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.serializer.PascalNameFilter; +import com.alibaba.fastjson.serializer.PropertyFilter; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.ValueFilter; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -30,22 +33,36 @@ public class JsonHelper { return JSON.toJSONString(data); } + /** - * 对象转JSON[空值转空字符串] + * 象转JSON[空值转空字符串] * - * @param data data + * @param data 数据 + * @param filterKeys 需要移除不输出的key * @return json */ - public static String toJsonStringEmpty(Object data) { - ValueFilter nullToEmptyFilter = (object, name, value) -> { + public static String toJsonStringEmpty(Object data, String... filterKeys) { + List filterKeyList = filterKeys == null ? Collections.emptyList() : Arrays.asList(filterKeys); + + PropertyFilter propertyFilter = (source, name, value) -> { // 控制字段是否输出:value是null → 返回false,不输出这个key + return !filterKeyList.contains(name); + }; + + ValueFilter valueFilter = (object, name, value) -> { // null转为"" if (value == null) { return ""; } return value; }; - return JSON.toJSONString(data, nullToEmptyFilter, SerializerFeature.WriteNonStringKeyAsString, SerializerFeature.WriteMapNullValue); + + return JSON.toJSONString(data, + new com.alibaba.fastjson.serializer.SerializeFilter[]{propertyFilter, valueFilter}, + SerializerFeature.WriteNonStringKeyAsString, + SerializerFeature.WriteMapNullValue + ); } + /** * 支持返回大写json * diff --git a/src/main/java/com/ynxbd/common/service/MicroService.java b/src/main/java/com/ynxbd/common/service/MicroService.java index 0babbb9..2d0bcc3 100644 --- a/src/main/java/com/ynxbd/common/service/MicroService.java +++ b/src/main/java/com/ynxbd/common/service/MicroService.java @@ -16,9 +16,6 @@ import java.util.ArrayList; import java.util.List; /** - * @author 李进才 - * @ClassName MicroService - * @Description description * @date 2023/4/10 15:22 */ @Slf4j @@ -62,11 +59,11 @@ public class MicroService { String deptName = rx.getDeptName(); String bankTransNo = rx.getBankTransNo(); if (StrUtil.hasBlank(openId, patientId, treatNum, deptCode, deptName, bankTransNo)) { - log.warn("[监管平台]查询HIS患者信息失败 openId={}, patientId={}, treatNum={}, deptCode={}, deptName={}, bankTransNo={}", - openId, patientId, treatNum, deptCode, deptName, bankTransNo); + log.warn("[监管平台]查询HIS患者信息失败 openId={}, patientId={}, treatNum={}, deptCode={}, deptName={}, bankTransNo={}", openId, patientId, treatNum, deptCode, deptName, bankTransNo); return; } + log.info("[监管平台]查询患者信息 openId={}, patientId={}", openId, patientId); Patient patient = new PatientService().queryByOpenIdAndEPId(openId, patientId); if (patient == null) { patient = new PatientService().queryHisPatientByPatientId(patientId); diff --git a/src/main/java/com/ynxbd/common/service/PayService.java b/src/main/java/com/ynxbd/common/service/PayService.java index d5ea562..d734fea 100644 --- a/src/main/java/com/ynxbd/common/service/PayService.java +++ b/src/main/java/com/ynxbd/common/service/PayService.java @@ -47,7 +47,7 @@ public class PayService { * * @param info 回调信息 */ - public static void wxNotify(ApiPayNotify info) throws ServiceException { + public static void wxNotify(MerchantEnum mchEnum, ApiPayNotify info) throws ServiceException { String openid = info.getOpenId(); String bankTransNo = info.getTransactionId(); String outTradeNo = info.getOutTradeNo(); @@ -58,7 +58,6 @@ public class PayService { String notifyType = info.getAttach(); - MerchantEnum mchEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo); if (mchEnum == null) { mchEnum = MerchantEnum.WX; } diff --git a/src/main/java/com/ynxbd/common/service/RxService.java b/src/main/java/com/ynxbd/common/service/RxService.java index a91a606..0bf2da7 100644 --- a/src/main/java/com/ynxbd/common/service/RxService.java +++ b/src/main/java/com/ynxbd/common/service/RxService.java @@ -288,6 +288,7 @@ public class RxService { public boolean hisRxListPay(MerchantEnum merchantEnum, String totalFee, String openid, String outTradeNo, String bankTransNo, String bankMerchantNo, String payDate, String payTime, String payInfo) { RxDao rxDao = new RxDao(); + // 此处判断是否已经发起缴费,只要已存在数据库记录,说明已经发起了缴费请求,不能根据已经缴费成功,才取消本次缴费请求,因为请求可能已经延时,本次请求可能是重复提交的请求 if (PayService.hasUserOrderNo(outTradeNo, openid)) { log.info("{} [处方]已发起缴费 outTradeNo={}", merchantEnum.NAME, outTradeNo); @@ -361,6 +362,11 @@ public class RxService { return true; } + if (MerchantEnum.JY.equals(merchantEnum)) { + new MicroService().uploadRxFee(rxList, failedList.isEmpty(), new BigDecimal(totalFee), false); + return true; + } + // 处理his缴费失败的处方 String failedRecipeId, errorCode, errorMsg, refundDesc; // 调用超时处方 @@ -392,9 +398,6 @@ public class RxService { TZReserveConfig.reserveRun(patientId); // 天助医技预约 } - if (MerchantEnum.JY.equals(merchantEnum)) { - new MicroService().uploadRxFee(rxList, failedList.isEmpty(), new BigDecimal(totalFee), false); - } new HealthUploadService().rxReportHISData(merchantEnum, openid, patientId); return true; diff --git a/src/main/java/com/ynxbd/jy/helper/JYPayConfig.java b/src/main/java/com/ynxbd/jy/helper/JYPayConfig.java index 067cb62..3c54d53 100644 --- a/src/main/java/com/ynxbd/jy/helper/JYPayConfig.java +++ b/src/main/java/com/ynxbd/jy/helper/JYPayConfig.java @@ -10,6 +10,7 @@ public class JYPayConfig { // 请求地址 public final static String URL; + public final static boolean IS_ENABLE; // 应用编号 public final static String APPLICATION_ID; @@ -24,6 +25,8 @@ public class JYPayConfig { static { XmlConfigHelper config = new XmlConfigHelper().read("jy-config.xml", "pay"); + IS_ENABLE = config.getBoolean("is_enable", false); + config.setIsEnable(IS_ENABLE); URL = config.getString("url"); APPLICATION_ID = config.getString("application_id"); diff --git a/src/main/java/com/ynxbd/jy/helper/JYPayHelper.java b/src/main/java/com/ynxbd/jy/helper/JYPayHelper.java index 78f5ce8..1514f6c 100644 --- a/src/main/java/com/ynxbd/jy/helper/JYPayHelper.java +++ b/src/main/java/com/ynxbd/jy/helper/JYPayHelper.java @@ -11,12 +11,15 @@ import com.ynxbd.common.helper.common.DateHelper; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.helper.http.OkHttpHelper; import com.ynxbd.common.helper.rsa.RSAHelper; +import com.ynxbd.common.result.ResultEnum; +import com.ynxbd.common.result.ServiceException; import com.ynxbd.jy.bean.JYOrder; import com.ynxbd.jy.bean.JYPayNotify; import com.ynxbd.jy.bean.JYResult; import com.ynxbd.jy.bean.enums.JYBusinessTypeEnum; import com.ynxbd.wx.config.WeChatConfig; import com.ynxbd.wx.wxfactory.utils.WxSignHelper; +import com.ynxbd.wx.wxfactory.utils.XmlHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; @@ -447,4 +450,5 @@ public class JYPayHelper { dateMap.put(TIME_KEY, new SimpleDateFormat("HH:mm:ss").format(date)); return dateMap; } + } diff --git a/src/main/java/com/ynxbd/wx/servlet/oldpay/PayNotifyServlet.java b/src/main/java/com/ynxbd/wx/servlet/oldpay/PayNotifyServlet.java index 8570450..b823347 100644 --- a/src/main/java/com/ynxbd/wx/servlet/oldpay/PayNotifyServlet.java +++ b/src/main/java/com/ynxbd/wx/servlet/oldpay/PayNotifyServlet.java @@ -7,7 +7,7 @@ import com.ynxbd.common.result.Result; import com.ynxbd.common.result.ServiceException; import com.ynxbd.common.service.RxService; import com.ynxbd.wx.wxfactory.WxPayHelper; -import com.ynxbd.wx.wxfactory.utils.WxRespHelper; +import com.ynxbd.wx.wxfactory.utils.WxNotifyResp; import lombok.extern.slf4j.Slf4j; import org.slf4j.MDC; @@ -36,10 +36,10 @@ public class PayNotifyServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MDC.remove("ip"); MDC.put("ip", HttpHelper.getIpAddress(request)); - + WxNotifyResp notify = new WxNotifyResp(MerchantEnum.WX); try { ApiPayNotify info = WxPayHelper.wxPayNotify(request); - Result.respXml(response, WxRespHelper.respOk()); // 收到请求-解析成功 + Result.respXml(response, notify.respOk()); // 收到请求-解析成功 String openid = info.getOpenId(); String bankTransNo = info.getTransactionId(); @@ -54,7 +54,7 @@ public class PayNotifyServlet extends HttpServlet { new RxService().hisRxListPay(MerchantEnum.WX, totalFee.toString(), openid, outTradeNo, bankTransNo, null, payDate, payTime, payInfo); } catch (ServiceException e) { - Result.respXml(response, WxRespHelper.resp(e)); // 收到请求-解析成功 + Result.respXml(response, notify.resp(e)); // 收到请求-解析成功 } } diff --git a/src/main/java/com/ynxbd/wx/wxfactory/utils/WxRespHelper.java b/src/main/java/com/ynxbd/wx/wxfactory/utils/WxNotifyResp.java similarity index 70% rename from src/main/java/com/ynxbd/wx/wxfactory/utils/WxRespHelper.java rename to src/main/java/com/ynxbd/wx/wxfactory/utils/WxNotifyResp.java index c8f7010..64618f7 100644 --- a/src/main/java/com/ynxbd/wx/wxfactory/utils/WxRespHelper.java +++ b/src/main/java/com/ynxbd/wx/wxfactory/utils/WxNotifyResp.java @@ -1,64 +1,71 @@ -package com.ynxbd.wx.wxfactory.utils; - -import com.ynxbd.common.result.ResultEnum; -import com.ynxbd.common.result.ServiceException; -import lombok.extern.slf4j.Slf4j; - -import java.util.HashMap; -import java.util.Map; - -@Slf4j -public class WxRespHelper { - - /** - * 成功相应 - */ - public static String resp(ServiceException e) { - if (ResultEnum.PAY_NOTIFY_REPEAT.equals(e.getResultEnum())) { - return respOk(); - } - return respFail(e.getMessage()); - } - - /** - * 成功响应 - */ - public static String respOk() { - log.info("【微信回调】通知成功"); - try { - Map map = new HashMap<>(); - map.put("return_code", "SUCCESS"); - map.put("return_msg", "OK"); - return XmlHelper.mapToXml(map); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - - /** - * 失败响应 - */ - private static String respFail(String message) { - log.info("回调通知: {}", message); - if (message == null) { - message = "FAIL"; - } - try { - Map map = new HashMap<>(); - map.put("return_code", "FAIL"); - map.put("return_msg", message); - return XmlHelper.mapToXml(map); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - -// public static void main(String[] args) throws DocumentException { -// -// TestPay testPay = XmlHelper.xmlToBean(xml, TestPay.class); -// System.out.println(testPay); -// } -} +package com.ynxbd.wx.wxfactory.utils; + +import com.ynxbd.common.bean.enums.MerchantEnum; +import com.ynxbd.common.result.ResultEnum; +import com.ynxbd.common.result.ServiceException; +import lombok.extern.slf4j.Slf4j; + +import java.util.HashMap; +import java.util.Map; + +@Slf4j +public class WxNotifyResp { + public WxNotifyResp(MerchantEnum merchantEnum) { + this.merchantEnum = merchantEnum; + } + + public final MerchantEnum merchantEnum; + + + /** + * 成功相应 + */ + public String resp(ServiceException e) { + if (ResultEnum.PAY_NOTIFY_REPEAT.equals(e.getResultEnum())) { + return respOk(); + } + return respFail(e.getMessage()); + } + + /** + * 成功响应 + */ + public String respOk() { + log.info("【{}】通知成功", this.merchantEnum.NAME); + try { + Map map = new HashMap<>(); + map.put("return_code", "SUCCESS"); + map.put("return_msg", "OK"); + return XmlHelper.mapToXml(map); + } catch (Exception e) { + log.error("", e); + } + return null; + } + + + /** + * 失败响应 + */ + private String respFail(String message) { + log.info("【{}】回调通知: {}", this.merchantEnum.NAME, message); + if (message == null) { + message = "FAIL"; + } + try { + Map map = new HashMap<>(); + map.put("return_code", "FAIL"); + map.put("return_msg", message); + return XmlHelper.mapToXml(map); + } catch (Exception e) { + log.error("", e); + } + return null; + } + +// public static void main(String[] args) throws DocumentException { +// +// TestPay testPay = XmlHelper.xmlToBean(xml, TestPay.class); +// System.out.println(testPay); +// } +} diff --git a/src/main/resources/jy-config.xml b/src/main/resources/jy-config.xml index 26ca6d1..05f4523 100644 --- a/src/main/resources/jy-config.xml +++ b/src/main/resources/jy-config.xml @@ -1,6 +1,7 @@ + true http://192.168.1.26:8083 30007 20007 @@ -8,5 +9,4 @@ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD1eiOktZm8bUwjHA2bFlrULg9v/VAmBfUWb8/1+xyZH5eSa7itvAG2Kdzv7L59nRIspXyO6ZW+gGmofnX8CqI5ofLrpissgoqZadNfz5v/k2Q78YTBM8BEMwkrPwOsbFX62poPSKr4kZRHgMADJkgS6AhsaDNBLdH6uRE8R0H6lQIDAQAB MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAPV6I6S1mbxtTCMcDZsWWtQuD2/9UCYF9RZvz/X7HJkfl5JruK28AbYp3O/svn2dEiylfI7plb6Aaah+dfwKojmh8uumKyyCiplp01/Pm/+TZDvxhMEzwEQzCSs/A6xsVframg9IqviRlEeAwAMmSBLoCGxoM0Et0fq5ETxHQfqVAgMBAAECgYAf8F9Y2+P/1zyzyL+gcR0qRD/v80aNW/MSk0O8noqPBcRD4c4qlK6oU/QSJ3x1fY1Sz8lQEuZP3gdhS+rv+zY2BjbfSq4HcZexmbBmh0NQ4Swd7i0hfkSM+koHZjVoPY/FJ/TW/Ks3iV+kpAZuVLCh60B66H8y9K5xu331nLxeYQJBAPzFeQPVJThxIBbk5g8/fYD/gbglEGqdurTJlo9tmCuqzty19fApBE+41ir9Sl2vguDnY1d9Zbuf1AlS21jsVx0CQQD4nNC1FyDKK6GxQvOm6Do+b663ft0WK7dum0c4pM57VPTRqxag4p6lYCu5KYmVvUL20KGE5LVZ9LaOIMIurD/ZAkEA4z4My1tFuPZKqQpjoXWsuNn7nrcDiTX/8iQBDTSzxx4qFtYnIh9d1uYO9Fr+DjeJa/PZpYAAg6rujutEcy8WKQJARir0WPgjIAx6gW5VGHmY3sBkvpOG0Ngb2JLo4hrZ0ENlKbwxEc2EW0aucH9BvsqBGOo/fCOU78O6tpiWVdf12QJAP8ENPIBQCLwHq0U5bzV+X94BmuOfTAqwvy/r6XQcOct0k/M/Lln0FUcPwAb6rl/1R55Xj1/DxI2UbTc4KNNpng== -