1、日志调整

2、挂号历史记录新增与HIS交互的订单号返回,医保挂号支付后,存储发票号。
debug
王绍全 18 hours ago
parent 6e64a4eade
commit bc10372a7d
  1. 2
      doc/bocom-api-sdk_v1_条码/example/com/bocom/api/example/pmssMpng/MPNG210003V1Test.java
  2. 2
      doc/bocom-api-sdk_v1_条码/example/com/bocom/api/example/pmssMpng/PmmsMpngNotify.java
  3. 2
      doc/bocom-api-sdk_v1_条码/example/com/bocom/api/example/pmssMpng/RefundMoney_MPNG020701V1Test.java
  4. 4
      src/main/java/com/ynxbd/bcm/config/BCMConfig.java
  5. 2
      src/main/java/com/ynxbd/common/action/RegisterAction.java
  6. 2
      src/main/java/com/ynxbd/common/action/pay/BcmPayAction.java
  7. 4
      src/main/java/com/ynxbd/common/action/pay/MedicalAction.java
  8. 2
      src/main/java/com/ynxbd/common/action/pay/MedicalTestAction.java
  9. 2
      src/main/java/com/ynxbd/common/bean/pay/Register.java
  10. 2
      src/main/java/com/ynxbd/common/dao/AccountsDao.java
  11. 7
      src/main/java/com/ynxbd/common/dao/RegisterDao.java
  12. 15
      src/main/java/com/ynxbd/common/dao/his/HisRegisterDao.java
  13. 10
      src/main/java/com/ynxbd/common/helper/his/HisEnum.java
  14. 7
      src/main/java/com/ynxbd/common/service/MedicalService.java
  15. 14
      src/main/java/com/ynxbd/common/service/RegService.java
  16. 6
      src/main/java/com/ynxbd/wx/remove/dao/WSDao.java
  17. 2
      src/main/java/com/ynxbd/wx/wxfactory/WxMedHelper.java
  18. 10
      src/main/java/com/ynxbd/wx/wxfactory/WxPayHelper.java
  19. 16
      src/main/java/com/ynxbd/wx/wxfactory/medical/Client.java
  20. 2
      src/main/java/com/ynxbd/wx/wxfactory/message/MdClient.java
  21. 2
      src/main/java/com/ynxbd/wx/wxfactory/utils/WxRespHelper.java

@ -113,7 +113,7 @@ public class MPNG210003V1Test {
MPNG210003ResponseV1.RspHead rspHead = response.getRspHead(); MPNG210003ResponseV1.RspHead rspHead = response.getRspHead();
String responseStatus = rspHead.getResponseStatus(); String responseStatus = rspHead.getResponseStatus();
System.out.println("[交行]二维码下单返回 resp={}" + JSON.toJSONString(response)); System.out.println("【交行】二维码下单返回 resp={}" + JSON.toJSONString(response));
if (response.isSuccess() && "S".equals(response.getBizState()) && "S".equals(responseStatus)) { if (response.isSuccess() && "S".equals(response.getBizState()) && "S".equals(responseStatus)) {
System.out.println("success"); System.out.println("success");
MPNG210003ResponseV1.RspBody rspBody = response.getRspBody(); MPNG210003ResponseV1.RspBody rspBody = response.getRspBody();

@ -49,7 +49,7 @@ public class PmmsMpngNotify {
// MPNG210003ResponseV1.RspHead rspHead = response.getRspHead(); // MPNG210003ResponseV1.RspHead rspHead = response.getRspHead();
// String responseStatus = rspHead.getResponseStatus(); // String responseStatus = rspHead.getResponseStatus();
// //
// System.out.println("[交行]二维码下单返回 resp={}" + JSON.toJSONString(response)); // System.out.println("【交行】二维码下单返回 resp={}" + JSON.toJSONString(response));
// if (response.isSuccess() && "S".equals(response.getBizState()) && "S".equals(responseStatus)) { // if (response.isSuccess() && "S".equals(response.getBizState()) && "S".equals(responseStatus)) {
// System.out.println("success"); // System.out.println("success");
// MPNG210003ResponseV1.RspBody rspBody = response.getRspBody(); // MPNG210003ResponseV1.RspBody rspBody = response.getRspBody();

@ -62,7 +62,7 @@ public class RefundMoney_MPNG020701V1Test {
request.setBizContent(bizContent); request.setBizContent(bizContent);
MPNG020701ResponseV1 response = client.execute(request, UUID.randomUUID().toString().replace("-", "")); MPNG020701ResponseV1 response = client.execute(request, UUID.randomUUID().toString().replace("-", ""));
System.out.println("[交行]退款 resp={}" + JSON.toJSONString(response)); System.out.println("【交行】退款 resp={}" + JSON.toJSONString(response));
if (response.isSuccess()) { if (response.isSuccess()) {
System.out.println("success"); System.out.println("success");
} else { } else {

@ -27,7 +27,7 @@ public class BCMConfig {
if (isEnable) { if (isEnable) {
IS_DEV = config.getBoolean("bcm.is_dev", false); IS_DEV = config.getBoolean("bcm.is_dev", false);
if (IS_DEV) { if (IS_DEV) {
log.info("[交行]配置文件当前为测试环境-----------------------"); log.info("【交行】配置文件当前为测试环境-----------------------");
config = new ProperHelper().read("bcm/bcm-dev.properties"); config = new ProperHelper().read("bcm/bcm-dev.properties");
} }
@ -47,7 +47,7 @@ public class BCMConfig {
} }
if (APP_ID == null || MER_PTC_ID == null) { if (APP_ID == null || MER_PTC_ID == null) {
log.error("[交行]读取配置文件bcm.properties失败"); log.error("【交行】读取配置文件bcm.properties失败");
} }
} }

@ -682,7 +682,7 @@ public class RegisterAction extends BaseAction {
// } // }
// //
// /** // /**
// * [现场挂号]获取指定科室医生信息 // * [今日挂号]获取指定科室医生信息
// */ // */
// @Action("getSiteDoctorList") // @Action("getSiteDoctorList")
// public String getSiteDoctorList() { // public String getSiteDoctorList() {

@ -23,7 +23,7 @@ import java.util.Date;
public class BcmPayAction extends BaseAction { public class BcmPayAction extends BaseAction {
/** /**
* [交行]处方支付通知 * 交行处方支付通知
* *
* @return 是否成功 * @return 是否成功
*/ */

@ -382,7 +382,7 @@ public class MedicalAction extends BaseAction {
@Action("payNotify") @Action("payNotify")
public Result payNotify() { public Result payNotify() {
try { try {
log.info("[微信医保]回调通知..."); log.info("【微信-医保】回调通知...");
MedicalNotify notifyInfo = WxMedHelper.paidMedNotify(request); MedicalNotify notifyInfo = WxMedHelper.paidMedNotify(request);
// 成功返回 // 成功返回
Result.respXml(MedRespHelper.respOk(WxMedConfig.PAY_KEY)); Result.respXml(MedRespHelper.respOk(WxMedConfig.PAY_KEY));
@ -397,7 +397,7 @@ public class MedicalAction extends BaseAction {
String notifyType = notifyInfo.getAttach(); String notifyType = notifyInfo.getAttach();
log.info("[微信医保][{}] 收到通知 outTradeNo={}, bankTransNo={}, notifyType={}", log.info("【微信-医保】[{}] 收到通知 outTradeNo={}, bankTransNo={}, notifyType={}",
notifyType, outTradeNo, bankTransNo, notifyType); notifyType, outTradeNo, bankTransNo, notifyType);
new MedicalService().commonNotify(MerchantEnum.WX_MEDICAL, notifyType, outTradeNo, totalFee, bankTransNo, payDate, payTime, openid, payInfo); new MedicalService().commonNotify(MerchantEnum.WX_MEDICAL, notifyType, outTradeNo, totalFee, bankTransNo, payDate, payTime, openid, payInfo);

@ -137,7 +137,7 @@ public class MedicalTestAction extends BaseAction {
*/ */
@Action("queryWxOrder") @Action("queryWxOrder")
public Result queryWxOrder(String accessToken, String outTradeNo, String medTransId) { public Result queryWxOrder(String accessToken, String outTradeNo, String medTransId) {
log.info("[微信医保]订单查询 outTradeNo={}, medTransId={}", outTradeNo, medTransId); log.info("【微信-医保】订单查询 outTradeNo={}, medTransId={}", outTradeNo, medTransId);
WxMedOrder order = WxMedHelper.queryOrder(accessToken, outTradeNo, medTransId); WxMedOrder order = WxMedHelper.queryOrder(accessToken, outTradeNo, medTransId);
if (order.isOk()) { if (order.isOk()) {
return Result.success(order); return Result.success(order);

@ -49,7 +49,7 @@ public class Register extends Order {
private String tid; private String tid;
// 时段名 // 时段名
private String tName; private String tName;
// 挂号类型(1:预约挂号,2:现场挂号,3:分时段预约挂号,4:分时段现场挂号) // 挂号类型(1:预约挂号,2:今日挂号,3:分时段预约挂号,4:分时段今日挂号)
private String regType; private String regType;
// 挂号日期 // 挂号日期
private String regDate; private String regDate;

@ -31,7 +31,7 @@ public class AccountsDao {
"group by date_format(updatetime,'%Y-%m-%d')\n" + "group by date_format(updatetime,'%Y-%m-%d')\n" +
"union all\n" + "union all\n" +
"select CONCAT(date_format(updatetime,'%Y%m%d'), '3') as no, date_format(updatetime,'%Y-%m-%d') as date, " + "select CONCAT(date_format(updatetime,'%Y%m%d'), '3') as no, date_format(updatetime,'%Y-%m-%d') as date, " +
"count(*) as 'count' , sum(paymoney) as 'sumMoney', '现场挂号' as description from register " + "count(*) as 'count' , sum(paymoney) as 'sumMoney', '今日挂号' as description from register " +
"where paystatus = 0 and hisstatus = 0 and (RegType = 1 or updatetime >= regdate) and updatetime BETWEEN '" + begDate + "' and DATE_ADD('" + endDate + "',INTERVAL 1 DAY)\n" + "where paystatus = 0 and hisstatus = 0 and (RegType = 1 or updatetime >= regdate) and updatetime BETWEEN '" + begDate + "' and DATE_ADD('" + endDate + "',INTERVAL 1 DAY)\n" +
"group by date_format(updatetime,'%Y-%m-%d') \n" + "group by date_format(updatetime,'%Y-%m-%d') \n" +
"union all\n" + "union all\n" +

@ -518,10 +518,11 @@ public class RegisterDao {
* @param outTradeNo 订单号 * @param outTradeNo 订单号
* @return 是否成功 * @return 是否成功
*/ */
public boolean updateHisPaidByOutTradeNo(String outTradeNo) { public boolean updateHisPaidByOutTradeNo(String outTradeNo, String invoiceTransNo) {
String sql = "update register set payStatus=0, hisStatus=0 where outTradeNo=? and hisStatus= -1"; String sql = "update register set payStatus=0, hisStatus=0, invoiceTransNo=? where outTradeNo=? and hisStatus= -1";
return DataBase.update(sql, ps -> { return DataBase.update(sql, ps -> {
ps.setString(1, outTradeNo); ps.setString(1, invoiceTransNo);
ps.setString(2, outTradeNo);
}) > 0; }) > 0;
} }

@ -125,14 +125,14 @@ public class HisRegisterDao {
} }
/** /**
* [现场挂号]获取现场挂号医生列表 * [今日挂号]获取今日挂号医生列表
* *
* @param deptCode 科室代码 * @param deptCode 科室代码
* @param timeInterval 挂号时段显示 * @param timeInterval 挂号时段显示
* @return 医生列表 * @return 医生列表
*/ */
public List<Doctor> getRegTodayDoctorList(String deptCode, String timeInterval) { public List<Doctor> getRegTodayDoctorList(String deptCode, String timeInterval) {
log.info("[现场挂号]查询HIS医生列表 deptCode={}", deptCode); log.info("[今日挂号]查询HIS医生列表 deptCode={}", deptCode);
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("DeptCode", deptCode); params.put("DeptCode", deptCode);
@ -261,7 +261,7 @@ public class HisRegisterDao {
// 晚班 // 晚班
boolean isNight = night != null && nightBegTime != null && nightEndTime != null && DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime); boolean isNight = night != null && nightBegTime != null && nightEndTime != null && DateHelper.inTimeRangeH_m_s(nightBegTime, nightEndTime);
log.info("【现场挂号】时段{{}}", key); log.info("【今日挂号】时段{{}}", key);
Register register; Register register;
for (Doctor doctor : doctorList) { for (Doctor doctor : doctorList) {
@ -365,7 +365,7 @@ public class HisRegisterDao {
/** /**
* [现场挂号]获取科室列表 * [今日挂号]获取科室列表
* *
* @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回默认值} * @param hasSourcesFlag 有号源标识 { 1:仅返回有号源科室; 0:有无号源科室都返回默认值}
* @return 科室列表 * @return 科室列表
@ -379,7 +379,7 @@ public class HisRegisterDao {
hasSourcesFlag = "1"; hasSourcesFlag = "1";
} }
log.info("[现场挂号]查询HIS科室列表"); log.info("[今日挂号]查询HIS科室列表");
List<Dept> resultList = new ArrayList<>(); List<Dept> resultList = new ArrayList<>();
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
@ -490,6 +490,7 @@ public class HisRegisterDao {
reg.setBegTime(node.getString("BegTime")); reg.setBegTime(node.getString("BegTime"));
reg.setEndTime(node.getString("EndTime")); reg.setEndTime(node.getString("EndTime"));
reg.setRefundDate(node.getString("RefundDate")); reg.setRefundDate(node.getString("RefundDate"));
reg.setTradeNo(node.getString("TransNo"));
// 是否取号 // 是否取号
reg.setIsTake(node.getInteger("IsTake")); reg.setIsTake(node.getInteger("IsTake"));
// 是否就诊 // 是否就诊
@ -562,8 +563,8 @@ public class HisRegisterDao {
reg.setRegDate(node.getString("ReservationDate")); // 日期 reg.setRegDate(node.getString("ReservationDate")); // 日期
reg.setHisTransNo(node.getString("HISTransNo")); // HIS流水号 reg.setHisTransNo(node.getString("HISTransNo")); // HIS流水号
reg.setTradeNo(node.getString("ReservationTransNo")); // HIS交易流水号 reg.setTradeNo(node.getString("ReservationTransNo")); // HIS交易流水号
reg.setHospitalArea(node.getString("HospitalAreaName")); // HIS交易流水号 reg.setHospitalArea(node.getString("HospitalAreaName")); // 园区
reg.setBegTime(node.getString("BegTime")); reg.setBegTime(node.getString("BegTime"));
reg.setEndTime(node.getString("EndTime")); reg.setEndTime(node.getString("EndTime"));
// 金额 // 金额

@ -26,8 +26,8 @@ public enum HisEnum {
AP_Query_InspectionApplication("[报告]检验(化验)申请单", "5002", "AP_Query_InspectionApplication", false), AP_Query_InspectionApplication("[报告]检验(化验)申请单", "5002", "AP_Query_InspectionApplication", false),
// 挂号记录--------------- // 挂号记录---------------
AP_Query_Regist("[现场挂号]查询现场挂号记录", "2004", "AP_Query_Regist", true), AP_Query_Regist("[挂号记录]查询历史挂号记录", "2004", "AP_Query_Regist", true),
AP_Query_Reservation("[预约挂号]查询预约挂号记录", "3004", "AP_Query_Reservation", true), AP_Query_Reservation("[预约挂号]查询预约记录", "3004", "AP_Query_Reservation", true),
// 分时段挂号--------- // 分时段挂号---------
AP_Query_Dept_New("[分时段挂号]查询科室列表", "7001", "AP_Query_Dept_New", false), AP_Query_Dept_New("[分时段挂号]查询科室列表", "7001", "AP_Query_Dept_New", false),
@ -37,9 +37,9 @@ public enum HisEnum {
AP_Occupy_Source_New("[分时段挂号]占号", "7005", "AP_Occupy_Source_New", true), AP_Occupy_Source_New("[分时段挂号]占号", "7005", "AP_Occupy_Source_New", true),
// 普通挂号--------------- // 普通挂号---------------
AP_Regist("[现场挂号]执行挂号", "2003", "AP_Regist", true), AP_Regist("[今日挂号]执行挂号", "2003", "AP_Regist", true),
AP_Query_Dept("[现场挂号]查询科室列表", "2001", "AP_Query_Dept", true), AP_Query_Dept("[今日挂号]查询科室列表", "2001", "AP_Query_Dept", true),
AP_Query_Doct("[现场挂号]根据科室查询医生列表", "2002", "AP_Query_Doct", true), AP_Query_Doct("[今日挂号]根据科室查询医生列表", "2002", "AP_Query_Doct", true),
// ---------------------- // ----------------------
AP_Query_Reservation_Dept("[预约挂号]查询科室列表", "3001", "AP_Query_Reservation_Dept", true), AP_Query_Reservation_Dept("[预约挂号]查询科室列表", "3001", "AP_Query_Reservation_Dept", true),
AP_Query_Reservation_Doct("[预约挂号]根据科室查询医生列表", "3002", "AP_Query_Reservation_Doct", true), AP_Query_Reservation_Doct("[预约挂号]根据科室查询医生列表", "3002", "AP_Query_Reservation_Doct", true),

@ -121,7 +121,6 @@ public class MedicalService {
} }
/** /**
* [医保]his下单 * [医保]his下单
* *
@ -524,9 +523,11 @@ public class MedicalService {
return false; return false;
} }
log.info("[医保][挂号]HIS结算成功 outTradeNo={}, bankTransNo={}", outTradeNo, bankTransNo); String invoiceTransNo = jsonResult.getDataMapString("InvoiceTransNo");
log.info("[医保][挂号]HIS结算成功 outTradeNo={}, bankTransNo={}, invoiceTransNo={}", outTradeNo, bankTransNo, invoiceTransNo);
// 成功处理 // 成功处理
if (!regDao.updateHisPaidByOutTradeNo(outTradeNo)) { if (!regDao.updateHisPaidByOutTradeNo(outTradeNo, invoiceTransNo)) {
log.error("[医保][挂号]修改成功数据失败"); log.error("[医保][挂号]修改成功数据失败");
} }
return true; return true;

@ -56,7 +56,7 @@ public class RegService {
return null; return null;
} }
// 挂号类型:1:预约挂号,2:现场挂号,3:分时段预约挂号,4:分时段现场挂号 // 挂号类型:1:预约挂号,2:今日挂号,3:分时段预约挂号,4:分时段今日挂号
if (isSplitTime) { if (isSplitTime) {
return DateHelper.isToday(regDate) ? "4" : "3"; // 判断是否是今天 return DateHelper.isToday(regDate) ? "4" : "3"; // 判断是否是今天
} }
@ -135,7 +135,7 @@ public class RegService {
reg.setBankTransNo(bankTransNo); reg.setBankTransNo(bankTransNo);
reg.setTradeNo(tradeNo); reg.setTradeNo(tradeNo);
// 挂号类型:1:预约挂号,2:现场挂号;3:分时段预约挂号,4:分时段现场挂号 // 挂号类型:1:预约挂号,2:今日挂号;3:分时段预约挂号,4:分时段今日挂号
regType = reg.getRegType(); regType = reg.getRegType();
patientId = reg.getPatientId(); patientId = reg.getPatientId();
if (ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(regType) || ObjectUtils.isEmpty(reg.getRegDate())) { if (ObjectUtils.isEmpty(patientId) || ObjectUtils.isEmpty(regType) || ObjectUtils.isEmpty(reg.getRegDate())) {
@ -155,7 +155,7 @@ public class RegService {
log.info("{} 开始调用HIS挂号:patientId={}, bankTransNo={}", merchantEnum.NAME, patientId, bankTransNo); log.info("{} 开始调用HIS挂号:patientId={}, bankTransNo={}", merchantEnum.NAME, patientId, bankTransNo);
String hisTransNo = null, treatNum = null, hisQueueNo, callNum = null, invoiceTransNo = null; String hisTransNo = null, treatNum = null, hisQueueNo, callNum = null, invoiceTransNo = null;
// 挂号类型:1:预约挂号,2:现场挂号;3:分时段预约挂号,4:分时段现场挂号 // 挂号类型:1:预约挂号,2:今日挂号;3:分时段预约挂号,4:分时段今日挂号
JsonResult jsonResult; JsonResult jsonResult;
if ("1".equals(regType) || "2".equals(regType)) { // 挂号 if ("1".equals(regType) || "2".equals(regType)) { // 挂号
log.info("[挂号]开始执行"); log.info("[挂号]开始执行");
@ -827,7 +827,7 @@ public class RegService {
*/ */
public Register queryRegByHisInfo(String patientId, String tradeNo, String hisTransNo) throws ServiceException { public Register queryRegByHisInfo(String patientId, String tradeNo, String hisTransNo) throws ServiceException {
Register register; Register register;
log.info("[挂号订单]根据信息查询订单 patientId={}, hisTransNo={} tradeNo={}", patientId, hisTransNo, tradeNo); log.info("[挂号订单]根据信息查询订单 patientId={}, hisTransNo={}, tradeNo={}", patientId, hisTransNo, tradeNo);
if (ObjectUtils.isEmpty(patientId)) { if (ObjectUtils.isEmpty(patientId)) {
return null; return null;
} }
@ -966,20 +966,20 @@ public class RegService {
* @param openId openId * @param openId openId
*/ */
public boolean completeRegTreatNum(String treatNum, String openId, String patientId, String tradeNo, String hisTransNo, String orderFromOwner) throws ServiceException { public boolean completeRegTreatNum(String treatNum, String openId, String patientId, String tradeNo, String hisTransNo, String orderFromOwner) throws ServiceException {
if (!ObjectUtils.isEmpty(orderFromOwner) && !"蓝旗".equals(orderFromOwner)) { if (!ObjectUtils.isEmpty(orderFromOwner) && !"蓝旗".equals(orderFromOwner)) { // 不是线上挂号
return true; return true;
} }
RegisterDao regDao = new RegisterDao(); RegisterDao regDao = new RegisterDao();
Register findInfo = queryRegByHisInfo(patientId, tradeNo, hisTransNo); Register findInfo = queryRegByHisInfo(patientId, tradeNo, hisTransNo);
if (findInfo == null) { if (findInfo == null) {
throw new ServiceException("未找到挂号信息"); throw new ServiceException("未找到线上挂号信息"); // 本地数据中未找到
} }
Long id = findInfo.getId(); Long id = findInfo.getId();
String curDate = DateHelper.getCurDate(); String curDate = DateHelper.getCurDate();
if (!curDate.equals(findInfo.getRegDate())) { if (!curDate.equals(findInfo.getRegDate())) {
throw new ServiceException("不是今日就诊"); throw new ServiceException("不是今日就诊");
} }
if (!ObjectUtils.isEmpty(findInfo.getTreatNum())) { //就诊号不为空=>无需补充门诊号 if (!ObjectUtils.isEmpty(findInfo.getTreatNum())) { // 就诊号不为空=>无需补充门诊号
return true; return true;
} }
return regDao.updateTreatNum(id, treatNum) > 0; return regDao.updateTreatNum(id, treatNum) > 0;

@ -66,9 +66,9 @@
// } // }
// //
// /** // /**
// * 获取现场挂号科室列表 // * 获取今日挂号科室列表
// * // *
// * @return 现场挂号科室列表 // * @return 今日挂号科室列表
// */ // */
// public List<DeptBean> getRegDeptList() { // public List<DeptBean> getRegDeptList() {
// List<DeptBean> list = new ArrayList<>(); // List<DeptBean> list = new ArrayList<>();
@ -171,7 +171,7 @@
// } // }
// //
// /** // /**
// * 获取现场挂号医生列表 // * 获取今日挂号医生列表
// * // *
// * @param deptCode 科室代码 // * @param deptCode 科室代码
// * @return 医生列表 // * @return 医生列表

@ -153,7 +153,7 @@ public class WxMedHelper {
public static Map<String, Object> createOrder(OrderMIEnum OrderMIEnum, String openid, String outTradeNo, String serialNo, String cardNo, String realName, String ip, String payOrdId, String payAuthNo, public static Map<String, Object> createOrder(OrderMIEnum OrderMIEnum, String openid, String outTradeNo, String serialNo, String cardNo, String realName, String ip, String payOrdId, String payAuthNo,
BigDecimal totalFee, BigDecimal insuranceFee, BigDecimal cashFee, String body, String callbackUrl, String notifyUrl, String attach, String familyType, String familyName, String familyCardNo) throws ServiceException { BigDecimal totalFee, BigDecimal insuranceFee, BigDecimal cashFee, String body, String callbackUrl, String notifyUrl, String attach, String familyType, String familyName, String familyCardNo) throws ServiceException {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
log.info("[微信医保]下单 outTradeNo={}, openid={}, cardNo={}, realName={}, payOrdId={}, payAuthNo={}, totalFee={}, insuranceFee={}, cashFee={}, familyType={}, familyName={}, familyCardNo={}" log.info("【微信-医保】下单 outTradeNo={}, openid={}, cardNo={}, realName={}, payOrdId={}, payAuthNo={}, totalFee={}, insuranceFee={}, cashFee={}, familyType={}, familyName={}, familyCardNo={}"
, outTradeNo, openid, cardNo, realName, payOrdId, payAuthNo, totalFee, insuranceFee, cashFee, familyType, familyName, familyCardNo); , outTradeNo, openid, cardNo, realName, payOrdId, payAuthNo, totalFee, insuranceFee, cashFee, familyType, familyName, familyCardNo);
MedicalPayOrder order = WxFactory.Medical.Common().createOrder(OrderMIEnum, WxCacheHelper.getAccessToken(), MedicalPayOrder order = WxFactory.Medical.Common().createOrder(OrderMIEnum, WxCacheHelper.getAccessToken(),

@ -82,23 +82,23 @@ public class WxPayHelper {
Map<String, Object> paramsMap = WxSignHelper.reqXmlParamsMap(request); Map<String, Object> paramsMap = WxSignHelper.reqXmlParamsMap(request);
log.info("【微信回调】map={}", paramsMap); log.info("【微信回调】map={}", paramsMap);
if (paramsMap == null) { if (paramsMap == null) {
throw new ServiceException("【微信回调通知下单信息返回错误"); throw new ServiceException("【微信回调通知下单信息返回错误");
} }
// 签名验证 // 签名验证
if (!WxSignHelper.validateSign(paramsMap, WeChatConfig.MCH_KEY)) { // 验证未通过,通知支付失败 if (!WxSignHelper.validateSign(paramsMap, WeChatConfig.MCH_KEY)) { // 验证未通过,通知支付失败
throw new ServiceException("【微信回调通知签名验证未通过!"); throw new ServiceException("【微信回调通知签名验证未通过!");
} }
String json = JsonHelper.toJsonString(paramsMap); String json = JsonHelper.toJsonString(paramsMap);
if (ObjectUtils.isEmpty(json)) { if (ObjectUtils.isEmpty(json)) {
throw new ServiceException("【微信回调通知下单信息为空"); throw new ServiceException("【微信回调通知下单信息为空");
} }
WxPayNotify notifyInfo = JsonHelper.parseObject(json, WxPayNotify.class); WxPayNotify notifyInfo = JsonHelper.parseObject(json, WxPayNotify.class);
log.info("【微信回调】notifyInfo={}", notifyInfo); log.info("【微信回调】notifyInfo={}", notifyInfo);
if (notifyInfo == null) { if (notifyInfo == null) {
throw new ServiceException("【微信回调通知下单信息转换失败"); throw new ServiceException("【微信回调通知下单信息转换失败");
} }
String openid = notifyInfo.getOpenid(); String openid = notifyInfo.getOpenid();
@ -1176,7 +1176,7 @@ public class WxPayHelper {
public static WxNativePayResult createNativeOrder(String notifyUrl, String title, BigDecimal totalFee, String outTradeNo, String notifyType, String ip) { public static WxNativePayResult createNativeOrder(String notifyUrl, String title, BigDecimal totalFee, String outTradeNo, String notifyType, String ip) {
try { try {
if (ObjectUtils.isEmpty(outTradeNo) || ObjectUtils.isEmpty(notifyUrl) || totalFee == null || notifyType == null) { if (ObjectUtils.isEmpty(outTradeNo) || ObjectUtils.isEmpty(notifyUrl) || totalFee == null || notifyType == null) {
log.info("【微信】Native下单参数缺失"); log.info("Native下单参数缺失");
return null; return null;
} }

@ -142,11 +142,11 @@ public class Client {
params.put("channel_no", channel); // 渠道号 params.put("channel_no", channel); // 渠道号
//---------------------------------------------------------------- //----------------------------------------------------------------
params.put("sign", WxSignHelper.generateSign(params, WxSignHelper.SIGN_TYPE_MD5, mdPayKey)); params.put("sign", WxSignHelper.generateSign(params, WxSignHelper.SIGN_TYPE_MD5, mdPayKey));
// [微信医保]测试报告内容[3] // 【微信-医保】测试报告内容[3]
log.info("[微信医保][下单] req={}", JsonHelper.toJsonString(params)); log.info("【微信-医保】[下单] req={}", JsonHelper.toJsonString(params));
}); });
log.info("[微信医保][下单] resp={}", JsonHelper.toJsonString(jsonResult)); log.info("【微信-医保】[下单] resp={}", JsonHelper.toJsonString(jsonResult));
if (!jsonResult.success()) { if (!jsonResult.success()) {
return new MedicalPayOrder().createResult(jsonResult); return new MedicalPayOrder().createResult(jsonResult);
} }
@ -329,7 +329,7 @@ public class Client {
* @return 用户信息 * @return 用户信息
*/ */
public MedicalUserInfo getUserInfo(String reqUrl, String openid, String qrcode) { public MedicalUserInfo getUserInfo(String reqUrl, String openid, String qrcode) {
log.info("[微信医保][授权]请求地址-{}", reqUrl); log.info("【微信-医保】[授权]请求地址-{}", reqUrl);
MedicalUserInfo info = new MedicalUserInfo(); MedicalUserInfo info = new MedicalUserInfo();
String timestamp = Long.toString(System.currentTimeMillis()); String timestamp = Long.toString(System.currentTimeMillis());
@ -341,8 +341,8 @@ public class Client {
JSONObject respJson = OkHttpHelper.postForm(reqUrl, params -> { JSONObject respJson = OkHttpHelper.postForm(reqUrl, params -> {
params.put("qrcode", qrcode); params.put("qrcode", qrcode);
params.put("openid", openid); params.put("openid", openid);
// [微信医保]测试报告内容[1] // 【微信-医保】测试报告内容[1]
log.info("[微信医保][授权] req={}", JsonHelper.toJsonString(params)); log.info("【微信-医保】[授权] req={}", JsonHelper.toJsonString(params));
}, headers -> { }, headers -> {
headers.set("Accept", "application/json"); headers.set("Accept", "application/json");
headers.set("Content-Type", "application/json"); headers.set("Content-Type", "application/json");
@ -359,7 +359,7 @@ public class Client {
String message = respJson.getString("message"); String message = respJson.getString("message");
log.info("respJson={}", JsonHelper.toJsonString(respJson)); log.info("respJson={}", JsonHelper.toJsonString(respJson));
if (!"0".equals(code)) { if (!"0".equals(code)) {
log.error("[微信医保][授权]失败 resp={}", respJson); log.error("【微信-医保】[授权]失败 resp={}", respJson);
info.setMessage(String.format("[%s] %s", code, message)); info.setMessage(String.format("[%s] %s", code, message));
return info; return info;
@ -381,7 +381,7 @@ public class Client {
info.setCardNo(cardNo); info.setCardNo(cardNo);
respJson.remove("user_card_no"); respJson.remove("user_card_no");
} }
log.error("[微信医保][授权]返回 resp={}", respJson); log.error("【微信-医保】[授权]返回 resp={}", respJson);
info.setUserName(userName); info.setUserName(userName);
info.setPayAuthNo(payAuthNo); info.setPayAuthNo(payAuthNo);

@ -110,7 +110,7 @@ public class MdClient {
* *
* @param hospitalName 医院名称含院区如果有 * @param hospitalName 医院名称含院区如果有
* @param url 链接 * @param url 链接
* @param status 1001-预约挂号成功通知1004-现场挂号成功通知1002-取消预约挂号通知 * @param status 1001-预约挂号成功通知1004-今日挂号成功通知1002-取消预约挂号通知
* @param patCardNo 用户证件号md5 * @param patCardNo 用户证件号md5
* @param patHospitalId 用户就诊卡号 * @param patHospitalId 用户就诊卡号
* @param patName 患者姓名李* *姓名需打码 * @param patName 患者姓名李* *姓名需打码

@ -24,7 +24,7 @@ public class WxRespHelper {
* 成功响应 * 成功响应
*/ */
public static String respOk() { public static String respOk() {
log.info("【微信回调通知成功"); log.info("【微信回调通知成功");
try { try {
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("return_code", "SUCCESS"); map.put("return_code", "SUCCESS");

Loading…
Cancel
Save