diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java
index 62457ad..5d266ce 100644
--- a/src/main/java/com/ynxbd/common/TestA.java
+++ b/src/main/java/com/ynxbd/common/TestA.java
@@ -1,21 +1,94 @@
package com.ynxbd.common;
-import cn.hutool.crypto.asymmetric.AsymmetricAlgorithm;
-import cn.hutool.crypto.asymmetric.RSA;
-import com.ynxbd.common.bean.pay.Order;
-import com.ynxbd.common.bean.pay.Recipe;
+import com.alibaba.fastjson.JSONObject;
import com.ynxbd.common.helper.common.JsonHelper;
-import com.ynxbd.wx.wxfactory.AesWxHelper;
+import com.ynxbd.common.helper.http.OkHttpHelper;
+import com.ynxbd.common.result.JsonResult;
+import com.ynxbd.common.result.JsonResultEnum;
+import com.ynxbd.wx.config.MessagePushConfig;
+import com.ynxbd.wx.utils.DesEncryptHelper;
+import com.ynxbd.wx.wxfactory.medical.models.MedicalInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
+@Slf4j
public class TestA {
- public static void main(String[] args) throws Exception{
+ public static void main(String[] args) throws Exception {
+// System.out.println(AesWxHelper.encode("om5HqvlWTys3Bqls6YV-o4iA3Zqg"));
+// System.out.println(AesWxHelper.encode("192970"));
+// System.out.println(AesWxHelper.encode("533103200008164016"));
+ System.out.println(DesEncryptHelper.enCode("oeso-t62kkoRwLVVkSkwmmjPfUXk"));
+
+ System.out.println(MessagePushConfig.REG_NAVIGATE_API);
+// OkHttpHelper.getAsync(REG_NAVIGATE_API, params -> {
+// params.put("patientName", "小王");
+// params.put("content", "就诊时间:2026-08-13 12:12:12");
+// params.put("deptName", "科室");
+// params.put("deptCode", "0001");
+// params.put("openId", "32EBE22EF6C9437575AB7A043E456D25704583EFA5E6BE1B5CB899A6F3B7075A");
+// });
+ 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);
+//
+// String payOrdId = result.getDataMapString("PayOrdId");
+// String payToken = result.getDataMapString("PayToken");
+// String mdTrtId = result.getDataMapString("MdtrtId"); // 医保就诊ID
+// String chrgBchno = result.getDataMapString("ChrgBchno"); // 医疗机构订单号、收费批次号
+// String mdUserId = result.getDataMapString("UserID_YBZF"); // 医保用户ID
+// // 住院=========
+// String payOrRefundMoney = result.getDataMapString("PayOrRefundMoney"); // 缴退金额[大于0时需要微信收取费用,小于0时需要微信退费]
+// String prePayOrderId = result.getDataMapString("PrePayOrderId"); // 预交金缴费单号[需要退费时,his返回预交金时候的单号给微信退费。可能存在退多比微信预交金费用,字段具体内容后续协商后敲定]
+// String ordStas = result.getDataMapString("OrdStas"); //
+// BigDecimal deposit = result.getDataMapBigDecimal("Deposit"); // 住院押金(医保6202返回)
+// String payAuthNo = "1";
+//
+// log.info("[医保-住院结算]HIS费用上传明细接口返回-授权信息 payAuthNo={}, payOrdId={}, payToken={}, mdtrtId={}, chrgBchno={}, userIdYBZF={}", payAuthNo, payOrdId, payToken, mdTrtId, chrgBchno, mdUserId);
+// if (payOrdId == null || payToken == null || mdTrtId == null || chrgBchno == null) {
+// }
+//
+// MedicalInfo medicalInfo = new MedicalInfo();
+// medicalInfo.setPayAuthNo("1");
+// medicalInfo.setPayToken(payToken);
+// medicalInfo.setPayOrdId(payOrdId);
+// medicalInfo.setMdTrtId(mdTrtId);
+// medicalInfo.setChrgBchno(chrgBchno);
+// medicalInfo.setMdUserId(mdUserId);
+//
+// BigDecimal totalFee = result.getDataMapBigDecimal("FeeSumamt"); // 订单总金额医保返回
+// BigDecimal cashFee = result.getDataMapBigDecimal("OwnPayAmt"); // 现金支付(医保6202返回)
+// BigDecimal hifpFee = result.getDataMapBigDecimal("FundPay"); // 统筹金额[基金金额]
+// BigDecimal acctPay = result.getDataMapBigDecimal("PsnAcctPay"); // 个人账户支出(医保6202返回)
+// log.info("[医保-住院结算]HIS费用上传明细接口返回-费用明细 payOrdId={}, totalFee={}, cashFee={}, hifpFee={}, acctPay={}",
+// payOrdId, totalFee, cashFee, hifpFee, acctPay);
+//
+// String extData = result.getDataMapString("ExtData");
+//
+// if (totalFee == null) {
+// }
+// if (ObjectUtils.isEmpty(extData)) {
+// }
+// JSONObject extDataJson = JsonHelper.parseObject(extData);
+// JSONObject setLInfo = extDataJson.getJSONObject("SETLINFO");
+//
+// medicalInfo.setMedFeeSumAmt(new BigDecimal(setLInfo.getString("medfee_sumamt"))); // 医保金额
+//
+// medicalInfo.setTotalFee(totalFee); // 医保订单总金额
+// medicalInfo.setCashFee(cashFee); // 现金部分
+// medicalInfo.setHifpFee(hifpFee); // 统筹支付金额
+// medicalInfo.setAcctFee(acctPay); // 个人账户支付
+//
+// medicalInfo.setInsuranceFee(acctPay.add(hifpFee)); // 医保支付(个账 + 统筹)
+// System.out.println(medicalInfo.getMedFeeSumAmt());
+ }
// public static void main(String[] args) throws Exception {
// String content = "533103198212184014";
diff --git a/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java b/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java
index 1df222c..67d6aae 100644
--- a/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java
+++ b/src/main/java/com/ynxbd/common/action/pay/MedicalAction.java
@@ -42,6 +42,24 @@ import java.util.Map;
@Namespace("/medical")
public class MedicalAction extends BaseAction {
+ /**
+ * 用户信息获取 | 医保上传 | 医保支付下单
+ */
+ @Action("logFeeDetails")
+ public Result logFeeDetails(String callNo, String payCode, String qrCode, @AesDecode String openid, @AesDecode String patientId, @AesDecode String hisPatientId, @AesDecode String cardNo, String realName, String treatNum, BigDecimal totalFee) {
+ log.warn("[医保]上传明细数据调试 callNo={}, payCode={}, openid={}, qrCode={}, treatNum={}, patientId={}, hisPatientId={}, cardNo={}, realName={}, totalFee={}",
+ callNo, payCode, openid, qrCode, treatNum, patientId, hisPatientId, ParamHelper.hideIdCardNo(cardNo), realName, totalFee);
+ if (callNo == null || payCode == null || openid == null || qrCode == null || patientId == null || cardNo == null || totalFee == null) {
+ return Result.error(ResultEnum.PARAM_IS_DEFECT);
+ }
+
+ MerchantEnum merchantEnum = MerchantEnum.findEnumByCode(payCode);
+ if (merchantEnum == null) { // 支付方式异常
+ return Result.error(ResultEnum.PAY_TYPE_ERROR);
+ }
+ return Result.success();
+ }
+
/**
* 用户信息获取 | 医保上传 | 医保支付下单
*/
@@ -100,7 +118,7 @@ public class MedicalAction extends BaseAction {
}
return Result.success(medicalInfo);
- } catch (ServiceException e) {
+ } catch (Exception e) {
return Result.error(e);
}
}
@@ -271,7 +289,7 @@ public class MedicalAction extends BaseAction {
/**
- * HIS医保退费(线上)
+ * 医保退费(线上)
*/
@Action("refundMed")
public Result refundMed(String payCode, String callNo, String openid, String qrCode, String outTradeNo, @AesDecode String tradeNo) {
@@ -467,4 +485,11 @@ public class MedicalAction extends BaseAction {
}
}
+
+// @Action("outHospTest")
+// public Result outHospTest() {
+// System.out.println("住院测试...");
+// new MedicalService().outHospPaidNoticeHis(MerchantEnum.WX_MEDICAL, "WX0c8f4caa38bc4a558ab4ea4a69b5", "M26081237393763727", "2026-08-12", "12:00:52", "om5HqvlWTys3Bqls6YV-o4iA3Zqg", null);
+// return Result.success();
+// }
}
diff --git a/src/main/java/com/ynxbd/common/action/pay/PayAction.java b/src/main/java/com/ynxbd/common/action/pay/PayAction.java
index da05000..54ff054 100644
--- a/src/main/java/com/ynxbd/common/action/pay/PayAction.java
+++ b/src/main/java/com/ynxbd/common/action/pay/PayAction.java
@@ -278,7 +278,7 @@ public class PayAction extends BaseAction {
/**
- * [医保]微信现金退费
+ * [医保]微信现金退费(线下)
*
* @param callNo 调用码 { recipe:处方;register:挂号;in_hosp:住院预交金 }
* @param payOrdId 医保订单号
@@ -308,6 +308,9 @@ public class PayAction extends BaseAction {
case IN_HOSP: // 住院预交金
break;
+ case OUT_HOSP: // 住院结算
+ return new InHospService().mdCashRefund(payOrdId, refundDesc);
+
default:
return Result.error("callNo不符合规则");
}
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 f968b34..8b94b36 100644
--- a/src/main/java/com/ynxbd/common/action/test/TestAction.java
+++ b/src/main/java/com/ynxbd/common/action/test/TestAction.java
@@ -140,6 +140,12 @@ public class TestAction extends BaseAction {
return Result.success();
}
+ @Action("his_config_test")
+ public Result his_config_test() {
+ System.out.println("开关:" + HisConfig.IS_RX_PREPAY);
+ return Result.success();
+ }
+
// @Action("lock")
// public String lock() {
diff --git a/src/main/java/com/ynxbd/common/bean/pay/Order.java b/src/main/java/com/ynxbd/common/bean/pay/Order.java
index 2221683..5f62076 100644
--- a/src/main/java/com/ynxbd/common/bean/pay/Order.java
+++ b/src/main/java/com/ynxbd/common/bean/pay/Order.java
@@ -34,6 +34,10 @@ public class Order implements Serializable {
private String enId;
// 修改时间
private Date updateTime;
+ // 支付日期
+ private String payDate;
+ // 支付时间
+ private String payTime;
// openid
private String openid;
// 用于支付的openId
diff --git a/src/main/java/com/ynxbd/common/dao/InHospPayDao.java b/src/main/java/com/ynxbd/common/dao/InHospPayDao.java
index 23558c3..897ccbe 100644
--- a/src/main/java/com/ynxbd/common/dao/InHospPayDao.java
+++ b/src/main/java/com/ynxbd/common/dao/InHospPayDao.java
@@ -2,6 +2,7 @@ package com.ynxbd.common.dao;
import com.ynxbd.common.bean.pay.Order;
import com.ynxbd.common.bean.pay.PayInHosp;
+import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.config.db.DataBase;
import lombok.extern.slf4j.Slf4j;
@@ -253,4 +254,48 @@ public class InHospPayDao {
}
return dataList.get(0);
}
+
+ /**
+ * 根据发订单号和处方号修改退费信息
+ *
+ * @param tradeNo His流水号
+ * @param refundResult 退款结果
+ * @param refundReason 退款原因
+ * @return 是否成功
+ */
+ public boolean updateRefundByTradeNo(String tradeNo, String refundResult, String refundReason) {
+ String sql = "update pay_in_hosp set refundResult=?, refundReason=?, refundTime=now() where tradeNo=? and (refundResult is null or refundResult != 'OK')";
+ return DataBase.update(sql, ps -> {
+ ps.setString(1, refundResult);
+ ps.setString(2, refundReason);
+ ps.setString(3, tradeNo);
+ }) > 0;
+ }
+
+ /**
+ * 根据发订单号和处方号修改退费信息
+ *
+ * @param tradeNo His流水号
+ * @param refundResult 退款结果
+ * @return 是否成功
+ */
+ public boolean updateRefundByTradeNo(String tradeNo, String refundResult) {
+ return updateRefundByTradeNo(tradeNo, refundResult, null);
+ }
+
+ public PayInHosp selectPaidByTradeNo(String tradeNo) {
+ String sql = "select * from pay_in_hosp where tradeNo=? and payStatus=0";
+ List dataList = DataBase.select(sql, PayInHosp.class, ps -> {
+ ps.setString(1, tradeNo);
+ });
+
+ if (dataList.size() == 1) {
+ return dataList.get(0);
+ }
+ if (dataList.size() > 1) {
+ log.warn("[住院缴费]数据库存在多条相同的支付记录");
+ return null;
+ }
+ return null;
+ }
}
diff --git a/src/main/java/com/ynxbd/common/dao/RegisterDao.java b/src/main/java/com/ynxbd/common/dao/RegisterDao.java
index 12ebee0..c5c7cd4 100644
--- a/src/main/java/com/ynxbd/common/dao/RegisterDao.java
+++ b/src/main/java/com/ynxbd/common/dao/RegisterDao.java
@@ -689,7 +689,7 @@ public class RegisterDao {
return resultList.get(0);
}
if (resultList.size() > 1) {
- log.info("[挂号]数据库存在多条相同的支付记录");
+ log.warn("[挂号]数据库存在多条相同的支付记录");
return null;
}
return null;
diff --git a/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java b/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java
index 0fd99b9..7aea250 100644
--- a/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java
+++ b/src/main/java/com/ynxbd/common/dao/his/HisMedDao.java
@@ -155,8 +155,8 @@ public class HisMedDao {
* @param transNo HIS交易流水号
* @param bankTransNo HIS流水号
*/
- public static JsonResult inHospMedPay(MerchantEnum merchantEnum, String mdUserId, String payDate, String payTime, String transNo, String bankTransNo, BigDecimal cashFee, String openId) {
- return HisFactory.HisMed(merchantEnum).getJsonResult(HisEnum.YDZF_SaveToHIS_ZY, params -> {
+ public static JsonResult outHospMedPay(MerchantEnum merchantEnum, String mdUserId, String payDate, String payTime, String transNo, String bankTransNo, BigDecimal cashFee, String openId) {
+ return HisFactory.HisMed(merchantEnum, true).getJsonResult(HisEnum.YDZF_SaveToHIS_ZY, params -> {
params.put("PayDeviceID", "mobile");
params.put("UserID_YBZF", mdUserId);
params.put("PayMoney", cashFee);
diff --git a/src/main/java/com/ynxbd/common/helper/common/CodeHelper.java b/src/main/java/com/ynxbd/common/helper/common/CodeHelper.java
index 2cd8ccf..3bd407d 100644
--- a/src/main/java/com/ynxbd/common/helper/common/CodeHelper.java
+++ b/src/main/java/com/ynxbd/common/helper/common/CodeHelper.java
@@ -140,6 +140,7 @@ public class CodeHelper {
return idd[0] + idd[1] + idd[2] + idd[3] + idd[4];
}
+
/**
* 生成时间戳
*/
diff --git a/src/main/java/com/ynxbd/common/result/JsonResult.java b/src/main/java/com/ynxbd/common/result/JsonResult.java
index 716eb4a..6944b0e 100644
--- a/src/main/java/com/ynxbd/common/result/JsonResult.java
+++ b/src/main/java/com/ynxbd/common/result/JsonResult.java
@@ -329,8 +329,16 @@ public class JsonResult {
* @return json数组
*/
public JSONArray getJsonArray(String rooNode, String... nodes) {
+ if (this.dataMap == null) {
+ return new JSONArray();
+ }
+
Object rootObj = this.dataMap.get(rooNode);
- String result = rootObj == null ? JsonHelper.toJsonString(new JSONArray()) : rootObj.toString();
+ if (rootObj == null) {
+ return new JSONArray();
+ }
+
+ String result = rootObj.toString();
try {
JSONArray jsonArray;
JSONObject jsonObject;
@@ -347,7 +355,7 @@ public class JsonResult {
}
}
} catch (Exception e) {
- log.error("JSON数据转换失败");
+ log.error("[JsonResult]数据转JSON数组失败");
ErrorHelper.println(e);
}
return JSONArray.parseArray(result);
@@ -522,7 +530,7 @@ public class JsonResult {
result = jsonObject.getJSONObject(node).toJSONString();
}
} catch (Exception e) {
- log.error("JSON数据转换失败");
+ log.error("[JsonResult]JSON数据转换失败");
ErrorHelper.println(e);
}
return JsonHelper.parseObject(result);
diff --git a/src/main/java/com/ynxbd/common/service/CasebookService.java b/src/main/java/com/ynxbd/common/service/CasebookService.java
index a91b6e6..3150248 100644
--- a/src/main/java/com/ynxbd/common/service/CasebookService.java
+++ b/src/main/java/com/ynxbd/common/service/CasebookService.java
@@ -168,7 +168,7 @@ public class CasebookService {
}
- // 支付回调通知
+ // 支付通知
public void paidNotify(MerchantEnum merchantEnum, String openid, BigDecimal totalFee, String outTradeNo, String bankTransNo, String payInfo) {
PayCasebook order = queryOrderByOutTradeNo(outTradeNo);
if (order == null) {
diff --git a/src/main/java/com/ynxbd/common/service/InHospService.java b/src/main/java/com/ynxbd/common/service/InHospService.java
index 71b5c7f..d692f79 100644
--- a/src/main/java/com/ynxbd/common/service/InHospService.java
+++ b/src/main/java/com/ynxbd/common/service/InHospService.java
@@ -8,16 +8,21 @@ import com.ynxbd.common.bean.pay.PayInHosp;
import com.ynxbd.common.dao.InHospPayDao;
import com.ynxbd.common.dao.RefundDao;
import com.ynxbd.common.dao.his.HisInHospDao;
+import com.ynxbd.common.helper.common.DateHelper;
+import com.ynxbd.common.helper.common.JsonHelper;
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.wx.wxfactory.WxMedHelper;
+import com.ynxbd.wx.wxfactory.WxPayHelper;
+import com.ynxbd.wx.wxfactory.medical.models.WxMedOrder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
/**
* 住院
@@ -207,4 +212,75 @@ public class InHospService {
public PayInHosp queryByOutTradeNo(String outTradeNo) {
return new InHospPayDao().selectByOutTradeNo(outTradeNo);
}
+
+ /**
+ * [住院结算]His系统线下退费
+ *
+ * @param reason 退费原因
+ * @return 是否成功
+ */
+ public Result mdCashRefund(String payOrdId, String reason) {
+ InHospPayDao inHospPayDao = new InHospPayDao();
+ PayInHosp dbOrder = inHospPayDao.selectPaidByTradeNo(payOrdId);
+ if (dbOrder == null) {
+ return Result.error(ResultEnum.DATA_NOT_FOUND);
+ }
+ Date updateTime = dbOrder.getUpdateTime();
+ if (updateTime == null) {
+ return null;
+ }
+
+ if (!dbOrder.hasPayStatusPaid()) {
+ log.info("[医保][住院结算]订单未支付 payOrdId={}, payStatus={}", payOrdId, dbOrder.getPayStatus());
+ return Result.error(ResultEnum.PAY_ORDER_PARAMS_IS_DEFECT);
+ }
+
+ if (dbOrder.hasRefundByRefundResult()) {
+ return Result.error(ResultEnum.REFUND_IS_REPEAT); // 退费重复申请
+ }
+
+ Boolean hasDateRange = DateHelper.inDateRangeByDay(-30, DateHelper.dateToStr(dbOrder.getUpdateTime(), DateHelper.DateEnum.yyyy_MM_dd_HH_mm_ss));
+ if (hasDateRange == null || !hasDateRange) {
+ return Result.error("订单支付日期已经超过30天,请从商户平台退费");
+ }
+
+ String outTradeNo = dbOrder.getOutTradeNo();
+ BigDecimal cashFee = dbOrder.getPayMoney();
+ if (cashFee == null) {
+ return Result.error(ResultEnum.REFUND_CASH_IS_NULL);
+ }
+
+ if (cashFee.compareTo(BigDecimal.ZERO) == 0) {
+ if (!inHospPayDao.updateRefundByTradeNo(payOrdId, WxPayHelper.OK)) {
+ log.error("[医保][住院结算]现金0修改数据库状态失败 payOrderId={}", payOrdId);
+ return Result.error(ResultEnum.DATA_UPDATE_ERROR);
+ }
+ Map map = new HashMap<>();
+ map.put("transNo", dbOrder.getTradeNo());
+ map.put("payWay", dbOrder.getPayWay());
+ map.put("bankTransNo", dbOrder.getBankTransNo());
+ map.put("payMoney", cashFee);
+ return Result.success(map);
+ }
+
+ WxMedOrder order = WxMedHelper.refundCash(outTradeNo, ("R" + payOrdId), payOrdId, cashFee, reason);
+ log.info("[医保][住院结算]现金退费 order={}", JsonHelper.toJsonString(order));
+ String refundReason = "线下HIS医保现金部分退费";
+ if (!ObjectUtils.isEmpty(reason)) {
+ refundReason = ":" + reason;
+ }
+ String refundResult = order.isOk() ? WxPayHelper.OK : order.getMessage();
+ if (!inHospPayDao.updateRefundByTradeNo(payOrdId, refundResult, refundReason)) {
+ log.error("[医保][住院结算]现金退费修改数据库状态失败 payOrderId={}, refundResult={}", payOrdId, refundResult);
+ }
+ if (order.isOk()) {
+ Map map = new HashMap<>();
+ map.put("transNo", dbOrder.getTradeNo());
+ map.put("payWay", dbOrder.getPayWay());
+ map.put("bankTransNo", dbOrder.getBankTransNo());
+ map.put("payMoney", cashFee);
+ return Result.success(map);
+ }
+ return Result.error(refundResult);
+ }
}
diff --git a/src/main/java/com/ynxbd/common/service/MedicalService.java b/src/main/java/com/ynxbd/common/service/MedicalService.java
index 3ef90b8..a133dfb 100644
--- a/src/main/java/com/ynxbd/common/service/MedicalService.java
+++ b/src/main/java/com/ynxbd/common/service/MedicalService.java
@@ -45,15 +45,15 @@ public class MedicalService {
public void commonNotify(MerchantEnum merchantEnum, String notifyType, String outTradeNo, BigDecimal totalFee, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
switch (PEnum.toEnum(notifyType)) {
case RECIPE:
- rxPaidNotify(merchantEnum, outTradeNo, bankTransNo, payDate, payTime, openid, payInfo);
+ rxPaidNoticeHis(merchantEnum, outTradeNo, bankTransNo, payDate, payTime, openid, payInfo);
break;
case REG: // 挂号
- regPaidNotify(merchantEnum, outTradeNo, bankTransNo, payDate, payTime, openid, payInfo);
+ regPaidNoticeHis(merchantEnum, outTradeNo, bankTransNo, payDate, payTime, openid, payInfo);
break;
case OUT_HOSP: // 住院结算
- outHospPaidNotify(merchantEnum, outTradeNo, bankTransNo, payDate, payTime, openid, payInfo);
+ outHospPaidNoticeHis(merchantEnum, outTradeNo, bankTransNo, payDate, payTime, openid, payInfo);
break;
default:
@@ -196,9 +196,9 @@ public class MedicalService {
throw new ServiceException("[上传明细失败]响应参数ExtData缺失");
}
JSONObject extDataJson = JsonHelper.parseObject(extData);
- JSONObject preSetl = extDataJson.getJSONObject("preSetl");
+ JSONObject setLInfo = extDataJson.getJSONObject("SETLINFO");
- medicalInfo.setMedFeeSumAmt(new BigDecimal(preSetl.getString("medfee_sumamt"))); // 医保金额
+ medicalInfo.setMedFeeSumAmt(new BigDecimal(setLInfo.getString("medfee_sumamt"))); // 医保金额
medicalInfo.setTotalFee(totalFee); // 医保订单总金额
medicalInfo.setCashFee(cashFee); // 现金部分
@@ -578,7 +578,7 @@ public class MedicalService {
* @param openid openid
* @param payInfo 支付信息
*/
- public boolean regPaidNotify(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
+ public boolean regPaidNoticeHis(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
if (outTradeNo == null || bankTransNo == null || payDate == null || payTime == null) {
log.info("[医保][挂号]HIS结算参数缺失 outTradeNo={}, bankTransNo={}, payDate={}, payTime={}", outTradeNo, bankTransNo, payDate, payTime);
return false;
@@ -595,7 +595,7 @@ public class MedicalService {
}
if (!regDao.updateMerPaidByOutTradeNo(outTradeNo, payDate, payTime, bankTransNo)) {
- log.info("[医保][挂号]修改订单支付状态 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo);
+ log.info("[医保][挂号]修改订单支付状态-失败 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo);
return false;
}
@@ -647,7 +647,7 @@ public class MedicalService {
}
// 医保自动退费
- ApiResult apiResult = new MedicalService().autoRefund(merchantEnum, outTradeNo, tradeNo, cashFee, "系统繁忙缴费失败,自动退费");
+ ApiResult apiResult = new MedicalService().autoRefund(merchantEnum, outTradeNo, tradeNo, cashFee, respMessage);
boolean isOk = apiResult.isOk();
String refundResult = apiResult.getMessage();
@@ -680,7 +680,7 @@ public class MedicalService {
* @param openid openid
* @param payInfo 支付信息
*/
- public boolean outHospPaidNotify(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
+ public boolean outHospPaidNoticeHis(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
if (outTradeNo == null || bankTransNo == null || payDate == null || payTime == null) {
log.info("[医保][住院结算]HIS结算参数缺失 outTradeNo={}, bankTransNo={}, payDate={}, payTime={}", outTradeNo, bankTransNo, payDate, payTime);
return false;
@@ -697,12 +697,12 @@ public class MedicalService {
InHospPayDao inHospPayDao = new InHospPayDao();
if (!new InHospPayDao().updateMerPaidByOutTradeNo(outTradeNo, payDate, payTime, bankTransNo)) {
- log.info("[医保][住院结算]修改订单支付状态 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo);
+ log.info("[医保][住院结算]修改订单支付状态-失败 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo);
return false;
}
-// order.setPayDate(payDate);
-// order.setPayTime(payTime);
+ order.setPayDate(payDate);
+ order.setPayTime(payTime);
order.setBankTransNo(bankTransNo);
String mdUserId = order.getMdUserId();
@@ -715,7 +715,7 @@ public class MedicalService {
return false;
}
//
- JsonResult jsonResult = HisMedDao.inHospMedPay(merchantEnum, mdUserId, payDate, payTime, tradeNo, bankTransNo, cashFee, openid);
+ JsonResult jsonResult = HisMedDao.outHospMedPay(merchantEnum, mdUserId, payDate, payTime, tradeNo, bankTransNo, cashFee, openid);
if (!jsonResult.success()) {
String respCode = jsonResult.getCode();
String respMessage = jsonResult.getMessage();
@@ -736,17 +736,27 @@ public class MedicalService {
}
if (cashFee.compareTo(BigDecimal.ZERO) == 0) { // 现金部分为0
-// log.info("[医保][住院结算]现金为0不执行退费-修改退费状态 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
-// if (!inHospPayDao.updateRefundByTradeNo(tradeNo, "OK")) {
-// log.info("[医保][住院结算] 修改数据库退费状态失败 tradeNo={}", tradeNo);
-// }
+ log.info("[医保][住院结算]现金为0不执行退费-修改退费状态 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
+ if (!inHospPayDao.updateRefundByTradeNo(tradeNo, "OK")) {
+ log.info("[医保][住院结算]修改数据库退费状态-失败 tradeNo={}", tradeNo);
+ }
return false;
}
-// if (!WxMedConfig.IS_AUTO_REFUND) {
-// log.info("[医保][住院结算]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
-// return false;
-// }
+ if (!WxMedConfig.IS_AUTO_REFUND) {
+ log.info("[医保][住院结算]现金自动退费功能未开启 outTradeNo={}, bankTransNo={}, tradeNo={}", outTradeNo, bankTransNo, tradeNo);
+ return false;
+ }
+
+ // 医保自动退费
+ ApiResult apiResult = new MedicalService().autoRefund(merchantEnum, outTradeNo, tradeNo, cashFee, respMessage);
+ boolean isOk = apiResult.isOk();
+ String refundResult = apiResult.getMessage();
+
+ log.info("{}[住院结算]现金自动退费 outTradeNo={}, bankTransNo={}, tradeNo={} [{}]:{}", merchantEnum.NAME, outTradeNo, bankTransNo, tradeNo, (isOk ? "成功" : "失败"), refundResult);
+ if (!inHospPayDao.updateRefundByTradeNo(tradeNo, refundResult)) {
+ log.info("{}[住院结算]现金自动退费-修改数据库状态失败 tradeNo={}, refundResult={}", merchantEnum.NAME, tradeNo, refundResult);
+ }
return false;
}
@@ -784,7 +794,7 @@ public class MedicalService {
* @param openid openid
* @param payInfo 支付信息
*/
- public boolean rxPaidNotify(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
+ public boolean rxPaidNoticeHis(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String payDate, String payTime, String openid, String payInfo) {
if (outTradeNo == null || bankTransNo == null || payDate == null || payTime == null) {
log.info("[医保][处方]HIS结算参数缺失 outTradeNo={}, bankTransNo={}, payDate={}, payTime={}", outTradeNo, bankTransNo, payDate, payTime);
return false;
@@ -861,7 +871,7 @@ public class MedicalService {
return false;
}
- ApiResult apiResult = new MedicalService().autoRefund(merchantEnum, outTradeNo, tradeNo, cashFee, "系统繁忙缴费失败,自动退费");
+ ApiResult apiResult = new MedicalService().autoRefund(merchantEnum, outTradeNo, tradeNo, cashFee, respMessage);
boolean isOk = apiResult.isOk();
String refundResult = apiResult.getMessage();
diff --git a/src/main/java/com/ynxbd/common/service/RegService.java b/src/main/java/com/ynxbd/common/service/RegService.java
index dfa095e..c500f4a 100644
--- a/src/main/java/com/ynxbd/common/service/RegService.java
+++ b/src/main/java/com/ynxbd/common/service/RegService.java
@@ -16,6 +16,7 @@ import com.ynxbd.common.dao.RegisterDao;
import com.ynxbd.common.dao.his.HisAccountDao;
import com.ynxbd.common.dao.his.HisRegisterDao;
import com.ynxbd.common.helper.common.DateHelper;
+import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.his.HisFactory;
import com.ynxbd.common.result.JsonResult;
import com.ynxbd.common.result.Result;
@@ -244,70 +245,70 @@ public class RegService {
/**
- * His系统处方手动退费
+ * [挂号]His系统线下退费
*
* @param reason 退费原因
* @return 是否成功
*/
public Result mdCashRefund(String payOrdId, String reason) {
RegisterDao regDao = new RegisterDao();
- Register regInfo = regDao.selectStatusErrOrder(payOrdId);
- if (regInfo == null) {
+ Register dbOrder = regDao.selectStatusErrOrder(payOrdId);
+ if (dbOrder == null) {
return Result.error(ResultEnum.DATA_NOT_FOUND);
}
- Date updateTime = regInfo.getUpdateTime();
+ Date updateTime = dbOrder.getUpdateTime();
if (updateTime == null) {
return null;
}
- if (!regInfo.hasPayStatusPaid()) {
- log.info("[医保]订单未支付 payOrdId={}, payStatus={}", payOrdId, regInfo.getPayStatus());
+ if (!dbOrder.hasPayStatusPaid()) {
+ log.info("[医保][挂号]订单未支付 payOrdId={}, payStatus={}", payOrdId, dbOrder.getPayStatus());
return Result.error(ResultEnum.PAY_ORDER_PARAMS_IS_DEFECT);
}
- if (regInfo.hasRefundByRefundResult()) {
+ if (dbOrder.hasRefundByRefundResult()) {
return Result.error(ResultEnum.REFUND_IS_REPEAT); // 退费重复申请
}
- Boolean hasDateRange = DateHelper.inDateRangeByDay(-30, DateHelper.dateToStr(regInfo.getUpdateTime(), DateHelper.DateEnum.yyyy_MM_dd_HH_mm_ss));
+ Boolean hasDateRange = DateHelper.inDateRangeByDay(-30, DateHelper.dateToStr(dbOrder.getUpdateTime(), DateHelper.DateEnum.yyyy_MM_dd_HH_mm_ss));
if (hasDateRange == null || !hasDateRange) {
return Result.error("订单支付日期已经超过30天,请从商户平台退费");
}
- String outTradeNo = regInfo.getOutTradeNo();
- BigDecimal cashFee = regInfo.getPayMoney();
+ String outTradeNo = dbOrder.getOutTradeNo();
+ BigDecimal cashFee = dbOrder.getPayMoney();
if (cashFee == null) {
return Result.error(ResultEnum.REFUND_CASH_IS_NULL);
}
if (cashFee.compareTo(BigDecimal.ZERO) == 0) {
if (!regDao.updateRefundByTradeNo(payOrdId, WxPayHelper.OK)) {
- log.error("[医保]挂号现金0修改数据库状态失败 payOrderId={}", payOrdId);
+ log.error("[医保][挂号]现金0修改数据库状态失败 payOrderId={}", payOrdId);
return Result.error(ResultEnum.DATA_UPDATE_ERROR);
}
Map map = new HashMap<>();
- map.put("transNo", regInfo.getTradeNo());
- map.put("payWay", regInfo.getPayWay());
- map.put("bankTransNo", regInfo.getBankTransNo());
+ map.put("transNo", dbOrder.getTradeNo());
+ map.put("payWay", dbOrder.getPayWay());
+ map.put("bankTransNo", dbOrder.getBankTransNo());
map.put("payMoney", cashFee);
return Result.success(map);
}
WxMedOrder order = WxMedHelper.refundCash(outTradeNo, ("R" + payOrdId), payOrdId, cashFee, reason);
- log.info("[医保]挂号现金退费order={}", order);
+ log.info("[医保][挂号]现金退费 order={}", JsonHelper.toJsonString(order));
String refundReason = "线下HIS医保现金部分退费";
if (!ObjectUtils.isEmpty(reason)) {
refundReason = ":" + reason;
}
String refundResult = order.isOk() ? WxPayHelper.OK : order.getMessage();
if (!regDao.updateRefundByTradeNo(payOrdId, refundResult, refundReason)) {
- log.error("[医保]挂号现金退费修改数据库状态失败 payOrderId={}, refundResult={}", payOrdId, refundResult);
+ log.error("[医保][挂号]现金退费修改数据库状态失败 payOrderId={}, refundResult={}", payOrdId, refundResult);
}
if (order.isOk()) {
Map map = new HashMap<>();
- map.put("transNo", regInfo.getTradeNo());
- map.put("payWay", regInfo.getPayWay());
- map.put("bankTransNo", regInfo.getBankTransNo());
+ map.put("transNo", dbOrder.getTradeNo());
+ map.put("payWay", dbOrder.getPayWay());
+ map.put("bankTransNo", dbOrder.getBankTransNo());
map.put("payMoney", cashFee);
return Result.success(map);
}
diff --git a/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java b/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java
index 72cae33..6b892e0 100644
--- a/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java
+++ b/src/main/java/com/ynxbd/wx/config/MessagePushConfig.java
@@ -5,6 +5,7 @@ import com.ynxbd.common.bean.enums.MerchantEnum;
import com.ynxbd.common.bean.pay.Recipe;
import com.ynxbd.common.bean.pay.Register;
import com.ynxbd.common.dao.PatientDao;
+import com.ynxbd.common.helper.common.JsonHelper;
import com.ynxbd.common.helper.common.XmlConfigHelper;
import com.ynxbd.common.helper.http.OkHttpHelper;
import com.ynxbd.wx.pwe.PWEHelper;
@@ -173,7 +174,6 @@ public class MessagePushConfig {
String time = (ObjectUtils.isEmpty(begTime) || ObjectUtils.isEmpty(endTime)) ? "" : (" " + begTime + "-" + endTime);
-
OkHttpHelper.getAsync(REG_PAID_API, params -> {
params.put("openId", DesEncryptHelper.enCode(openid));
params.put("patientName", patient.getName() + " ID:" + patientId);
@@ -368,7 +368,7 @@ public class MessagePushConfig {
/**
* 缴费成功推送
*/
- public static void recipePush(List recipeList, String treatNum, String patientId, String openid, String tip) {
+ public static void rxPush(List recipeList, String treatNum, String patientId, String openid, String tip) {
try {
if (!RX_PAID_IS_ENABLE || ObjectUtils.isEmpty(RX_PAID_API)) {
return;
diff --git a/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java b/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
index ae007d3..84790a0 100644
--- a/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
+++ b/src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
@@ -130,7 +130,7 @@ public class Client {
// 使用医保支付时必填
params.put("is_dept", "4"); // 医保标识
params.put("org_no", orgNo); // 医疗机构编码(医保局分配给机构)
- params.put("nonce_str", UUID.randomUUID().toString().replaceAll("-", ""));
+ params.put("nonce_str", UUID.randomUUID().toString().replace("-", ""));
params.put("gmt_out_create", DateHelper.dateToStr(new Date(), DateHelper.DateEnum.yyyyMMddHHmmss)); // 医院下单时间
Map requestContent = new HashMap<>();
@@ -165,7 +165,7 @@ public class Client {
// 二选一
params.put("hosp_out_trade_no", outTradeNo); // 第三方服务商订单号 outTradeNo
// params.put("med_trans_id", medTransId); // 微信生成的医疗订单号
- params.put("nonce_str", UUID.randomUUID().toString().replaceAll("-", ""));
+ params.put("nonce_str", UUID.randomUUID().toString().replace("-", ""));
params.put("sign", WxSignHelper.generateSign(params, WxSignHelper.SIGN_TYPE_MD5, mdPayKey));
log.info("[医保][查询订单] req={}", JsonHelper.toJsonString(params));
@@ -218,7 +218,7 @@ public class Client {
// params.put("med_trans_id", medTransId); // 微信生成的医疗订单号
params.put("hosp_out_refund_no", outRefundNo); // 退费订单号
- params.put("nonce_str", UUID.randomUUID().toString().replaceAll("-", ""));
+ params.put("nonce_str", UUID.randomUUID().toString().replace("-", ""));
JSONObject requestContent = new JSONObject();
requestContent.put("ref_reason", finalReason);
@@ -275,7 +275,7 @@ public class Client {
if (!ObjectUtils.isEmpty(medTransId)) {
params.put("med_trans_id", medTransId); // 微信生成的医疗订单号
}
- params.put("nonce_str", UUID.randomUUID().toString().replaceAll("-", ""));
+ params.put("nonce_str", UUID.randomUUID().toString().replace("-", ""));
params.put("sign", WxSignHelper.generateSign(params, WxSignHelper.SIGN_TYPE_MD5, mdPayKey));
@@ -307,7 +307,7 @@ public class Client {
params.put("bill_date", billDate);
params.put("bill_type", billType);
- params.put("nonce_str", UUID.randomUUID().toString().replaceAll("-", ""));
+ params.put("nonce_str", UUID.randomUUID().toString().replace("-", ""));
params.put("sign", WxSignHelper.generateSign(params, WxSignHelper.SIGN_TYPE_MD5, mdPayKey));
log.info("[医保][账单下载] req={}", JsonHelper.toJsonString(params));
});
@@ -349,7 +349,7 @@ public class Client {
//
headers.set("god-portal-timestamp", timestamp);
headers.set("god-portal-signature", signature);
- headers.set("god-portal-request-id", UUID.randomUUID().toString().replaceAll("-", ""));
+ headers.set("god-portal-request-id", UUID.randomUUID().toString().replace("-", ""));
});
if (respJson == null) {
info.setMessage("请求用户信息失败");
diff --git a/src/main/resources/webservice-copy.xml b/src/main/resources/webservice-copy.xml
index c24bbac..3d54676 100644
--- a/src/main/resources/webservice-copy.xml
+++ b/src/main/resources/webservice-copy.xml
@@ -1 +1 @@
-
false
false
false
127.0.0.1:8888
127.0.0.1:8888
200.200.200.60:7777
200.200.200.60:7777
\ No newline at end of file
+
false
false
false
127.0.0.1:8888
127.0.0.1:8888
200.200.200.60:7777
200.200.200.60:7777
\ No newline at end of file
diff --git a/src/main/resources/wx-msg-push.xml b/src/main/resources/wx-msg-push.xml
index 76ad265..5b70193 100644
--- a/src/main/resources/wx-msg-push.xml
+++ b/src/main/resources/wx-msg-push.xml
@@ -4,29 +4,29 @@
false
- daoyixun
+ DaoYiXun
- false
- appointmentsuccess
+ true
+ AppointmentSuccess
- false
- appointmentcancel
+ true
+ AppointmentCancel
+
+ false
+ PaymentSuccess
+
+
false
business/universal
-
- false
- paymentsuccess
-
-
false
business/universal