|
|
|
|
@ -55,28 +55,33 @@ public class PayService { |
|
|
|
|
|
|
|
|
|
String notifyType = notifyInfo.getAttach(); |
|
|
|
|
|
|
|
|
|
log.info("【微信】[{}]收到通知 outTradeNo={}, bankTransNo={}", notifyType, outTradeNo, bankTransNo); |
|
|
|
|
MerchantEnum mchEnum = MerchantEnum.findEnumByOutTradeNo(outTradeNo); |
|
|
|
|
if (mchEnum == null) { |
|
|
|
|
mchEnum = MerchantEnum.WX; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
log.info("{}[{}]收到通知 outTradeNo={}, bankTransNo={}", mchEnum.NAME, notifyType, outTradeNo, bankTransNo); |
|
|
|
|
|
|
|
|
|
switch (PEnum.toEnum(notifyType)) { |
|
|
|
|
case RECIPE: |
|
|
|
|
new RecipeService().recipeListPay(MerchantEnum.WX, totalFee.toString(), openid, outTradeNo, bankTransNo, null, payDate, payTime, payInfo); |
|
|
|
|
new RecipeService().recipeListPay(mchEnum, totalFee.toString(), openid, outTradeNo, bankTransNo, null, payDate, payTime, payInfo); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case REG: // 挂号
|
|
|
|
|
try { |
|
|
|
|
new RegService().regPaidNotify(MerchantEnum.WX, totalFee, openid, bankTransNo, outTradeNo, null, payDate, payTime, payInfo, new Date()); |
|
|
|
|
new RegService().regPaidNotify(mchEnum, totalFee, openid, bankTransNo, outTradeNo, null, payDate, payTime, payInfo, new Date()); |
|
|
|
|
} catch (ServiceException e) { |
|
|
|
|
log.info("【微信】[挂号]通知异常 outTradeNo={}, bankTransNo={}, message={}", outTradeNo, bankTransNo, e.getMessage()); |
|
|
|
|
log.info("{}[挂号]通知异常 outTradeNo={}, bankTransNo={}, message={}", mchEnum.NAME, outTradeNo, bankTransNo, e.getMessage()); |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case IN_HOSP: |
|
|
|
|
boolean isInsert = new InHospService().inHospNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo); |
|
|
|
|
log.info("【微信】[住院预交金] 预存{}", (isInsert ? "成功" : "失败")); |
|
|
|
|
boolean isInsert = new InHospService().inHospNotify(mchEnum, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo); |
|
|
|
|
log.info("{}[住院预交金] 预存{}", mchEnum.NAME, (isInsert ? "成功" : "失败")); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case CASEBOOK: |
|
|
|
|
new CasebookService().paidNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo); |
|
|
|
|
new CasebookService().paidNotify(mchEnum, openid, totalFee, outTradeNo, bankTransNo, payInfo); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case OL_REG: |
|
|
|
|
@ -84,19 +89,19 @@ public class PayService { |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case PEIS_RESERVE: |
|
|
|
|
new PEISService().payNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo); |
|
|
|
|
new PEISService().payNotify(mchEnum, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case OUT_COLLECT: |
|
|
|
|
new OutCollectService().ocPaidNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payInfo); |
|
|
|
|
new OutCollectService().ocPaidNotify(mchEnum, openid, totalFee, outTradeNo, bankTransNo, payInfo); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case TPP_QR_REG: |
|
|
|
|
new ThirdPartyPayService().tppQRRegNotify(MerchantEnum.WX, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo); |
|
|
|
|
new ThirdPartyPayService().tppQRRegNotify(mchEnum, openid, totalFee, outTradeNo, bankTransNo, payDate, payTime, payInfo); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
log.info("【微信】通知类型错误,结束请求"); |
|
|
|
|
log.info("{}通知类型错误,结束请求", mchEnum.NAME); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -167,7 +172,7 @@ public class PayService { |
|
|
|
|
throw new ServiceException(ResultEnum.PAY_ORDER_NOT_FOUND); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum)) { |
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum) || MerchantEnum.WX_GMC.equals(merchantEnum)) { |
|
|
|
|
if (order.isRefund()) { // 发生过退费(全额 | 部分)
|
|
|
|
|
Bill bill = null; |
|
|
|
|
List<Bill> billList = WxPayHelper.queryRefundList(outTradeNo); |
|
|
|
|
@ -269,12 +274,13 @@ public class PayService { |
|
|
|
|
|
|
|
|
|
switch (merchantEnum) { |
|
|
|
|
case WX: |
|
|
|
|
order = WxPayHelper.refund(merchantEnum, outTradeNo, outRefundNo, refundMoney, totalFee, refundDesc); |
|
|
|
|
break; |
|
|
|
|
return WxPayHelper.refund(merchantEnum, outTradeNo, outRefundNo, refundMoney, totalFee, refundDesc); |
|
|
|
|
|
|
|
|
|
case WX_GMC: |
|
|
|
|
return WxPayHelper.refund(merchantEnum, outTradeNo, outRefundNo, refundMoney, totalFee, refundDesc); |
|
|
|
|
|
|
|
|
|
case ALI: |
|
|
|
|
order = AliHelper.refund(outTradeNo, outRefundNo, refundMoney, refundDesc); |
|
|
|
|
break; |
|
|
|
|
return AliHelper.refund(outTradeNo, outRefundNo, refundMoney, refundDesc); |
|
|
|
|
|
|
|
|
|
case BCM: |
|
|
|
|
log.info("【交行退款】outTradeNo={}, tradeDate={}", outTradeNo, tradeDate); |
|
|
|
|
@ -283,8 +289,7 @@ public class PayService { |
|
|
|
|
order.setErrorMsg("退款日期错误"); |
|
|
|
|
return order; |
|
|
|
|
} |
|
|
|
|
order = BCMHelper.refund(outTradeNo, outRefundNo, tradeDateStr, refundMoney, refundDesc); |
|
|
|
|
break; |
|
|
|
|
return BCMHelper.refund(outTradeNo, outRefundNo, tradeDateStr, refundMoney, refundDesc); |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
break; |
|
|
|
|
@ -312,7 +317,7 @@ public class PayService { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum)) { |
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum) || MerchantEnum.WX_GMC.equals(merchantEnum)) { |
|
|
|
|
return WxPayHelper.queryOrder(outTradeNo); |
|
|
|
|
|
|
|
|
|
} else if (MerchantEnum.ALI.equals(merchantEnum)) { |
|
|
|
|
@ -340,7 +345,7 @@ public class PayService { |
|
|
|
|
return order; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (merchantEnum.equals(MerchantEnum.WX)) { |
|
|
|
|
if (merchantEnum.equals(MerchantEnum.WX)) { // 扫码盒子不加入医共体类型
|
|
|
|
|
order = WxPayHelper.payMicro(title, outTradeNo, totalFee, authCode, ip); |
|
|
|
|
|
|
|
|
|
} else if (merchantEnum.equals(MerchantEnum.ALI)) { |
|
|
|
|
@ -521,7 +526,7 @@ public class PayService { |
|
|
|
|
* 是否退费成功 |
|
|
|
|
*/ |
|
|
|
|
public static Bill queryRefund(MerchantEnum merchantEnum, String outTradeNo, String bankTransNo, String outRefundNo) throws ServiceException { |
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum)) { |
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum) || MerchantEnum.WX_GMC.equals(merchantEnum)) { |
|
|
|
|
return WxPayHelper.queryRefund(outTradeNo, outRefundNo); |
|
|
|
|
} else if (MerchantEnum.ALI.equals(merchantEnum)) { |
|
|
|
|
return AliHelper.queryRefund(outTradeNo, outRefundNo); |
|
|
|
|
@ -540,7 +545,7 @@ public class PayService { |
|
|
|
|
payOpenId = msgOpenId; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum)) { // 微信下单
|
|
|
|
|
if (MerchantEnum.WX.equals(merchantEnum) || MerchantEnum.WX_GMC.equals(merchantEnum)) { // 微信下单
|
|
|
|
|
return WxPayHelper.createOrder(merchantEnum, title, totalFee, outTradeNo, notifyType, ip, payOpenId, msgOpenId); |
|
|
|
|
|
|
|
|
|
} else if (MerchantEnum.ALI.equals(merchantEnum)) { // 支付宝下单
|
|
|
|
|
|