diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java index e825da3d1..ceb7b680a 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/PayController.java @@ -14,6 +14,9 @@ import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.MemberBasicInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.IMemberBasicInfoService; +import com.jsowell.pile.service.IPileMerchantInfoService; +import com.jsowell.pile.service.orderlogic.AbstractOrderLogic; +import com.jsowell.pile.service.orderlogic.OrderLogicFactory; import com.jsowell.pile.vo.uniapp.PayModeVO; import com.jsowell.service.MemberService; import com.jsowell.service.OrderService; @@ -49,6 +52,9 @@ public class PayController extends BaseController { @Autowired private MemberService memberService; + @Autowired + private IPileMerchantInfoService pileMerchantInfoService; + /** * 充值余额支付/微信余额充值 * 提供给小程序使用 @@ -273,7 +279,13 @@ public class PayController extends BaseController { // } dto.setOpenId(memberBasicInfo.getOpenId()); // 充值余额 附加参数 - Map weixinMap = memberService.rechargeBalanceWithAdapay(dto); + // Map weixinMap = memberService.rechargeBalanceWithAdapay(dto); + + String mode = pileMerchantInfoService.getDelayModeByWechatAppId(dto.getWechatAppId()); + // 获取处理逻辑 + AbstractOrderLogic orderLogic = OrderLogicFactory.getOrderLogic(mode); + Map weixinMap = orderLogic.rechargeBalance(dto); + response = new RestApiResponse<>(ImmutableMap.of("weixinMap", weixinMap)); } catch (BusinessException e) { logger.error("汇付余额充值接口 error", e); @@ -304,7 +316,14 @@ public class PayController extends BaseController { String appId = request.getHeader("appId"); dto.setWechatAppId(appId); dto.setRefundType("2"); - orderService.adapayRefund(dto); + + // orderService.adapayRefund(dto); + + String mode = pileMerchantInfoService.getDelayModeByWechatAppId(dto.getWechatAppId()); + // 获取处理逻辑 + AbstractOrderLogic orderLogic = OrderLogicFactory.getOrderLogic(mode); + orderLogic.refundBalance(dto); + response = new RestApiResponse<>(); } catch (BusinessException e) { logger.warn("汇付支付退款接口 warn", e); diff --git a/jsowell-admin/src/test/java/SpringBootTestController.java b/jsowell-admin/src/test/java/SpringBootTestController.java index a85afb227..5aaa0acfa 100644 --- a/jsowell-admin/src/test/java/SpringBootTestController.java +++ b/jsowell-admin/src/test/java/SpringBootTestController.java @@ -442,14 +442,14 @@ public class SpringBootTestController { @Test public void createSettleAccountRequestTest() throws BaseAdaPayException { SettleAccountDTO dto = new SettleAccountDTO(); - dto.setCardId("408060100100034609"); - dto.setCardName("江苏敦顺建设工程有限公司"); + dto.setCardId("31050180460000002469"); + dto.setCardName("上海擎昆物业管理有限公司"); dto.setTelNo("18021373333"); - dto.setBankCode("03090000"); + dto.setBankCode("01050000"); dto.setBankAcctType("1"); - dto.setProvCode("0032"); - dto.setAreaCode("3210"); - String adapayMemberId = "ACM40991242"; + dto.setProvCode("0031"); + dto.setAreaCode("3100"); + String adapayMemberId = "ACM80899105"; String wechatAppId = "wxbb3e0d474569481d"; adapayService.createSettleAccountRequest(dto, adapayMemberId, wechatAppId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java index 27b2e9e9d..6126907f9 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/DelayMerchantOrderLogic.java @@ -67,7 +67,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { */ @Override public OrderBasicInfo generateOrder(GenerateOrderDTO dto) throws ParseException { - logger.info("{}-生成订单start, param:{}", this.getClass().getSimpleName(), JSONObject.toJSONString(dto)); + logger.info("【{}】-生成订单start, param:{}", this.getClass().getSimpleName(), JSONObject.toJSONString(dto)); // 处理前端传的参数 analysisPileParameter(dto); @@ -185,7 +185,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { @Override public Map payOrder(PayOrderDTO dto) { - logger.info("{}-支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode()); if (orderInfo == null) { throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL); @@ -220,7 +220,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { */ @Transactional(rollbackFor = Exception.class) public void balancePayOrder(PayOrderDTO dto) { - logger.info("{}-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); // 订单编号 String orderCode = dto.getOrderCode(); // 支付金额 @@ -328,7 +328,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { * 在线支付订单 */ public Map onlinePaymentOrder(PayOrderDTO dto) { - logger.info("{}-在线支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-在线支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); Map weixinMap = adapayService.createPayment(dto); return weixinMap; } @@ -337,7 +337,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { * 白名单支付订单 */ public void whitelistPaymentOrder(PayOrderDTO dto) { - logger.info("{}-白名单支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-白名单支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); String orderCode = dto.getOrderCode(); BigDecimal payAmount = dto.getPayAmount(); String payMode = dto.getPayMode(); @@ -358,7 +358,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { */ @Override public void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) { - logger.info("{}-结算订单start data:{}, orderBasicInfo:{}", this.getClass().getSimpleName(), data.toString(), JSON.toJSONString(orderBasicInfo)); + logger.info("【{}】-结算订单start data:{}, orderBasicInfo:{}", this.getClass().getSimpleName(), data.toString(), JSON.toJSONString(orderBasicInfo)); // 判断订单状态 if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) { logger.info("结算订单:{}, 是订单完成状态", orderBasicInfo.getOrderCode()); @@ -425,7 +425,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { logger.info("订单:{}使用白名单支付,不进行退款处理", orderBasicInfo.getOrderCode()); } } catch (Exception e) { - logger.error("{}-订单退款逻辑异常orderCode:{}", this.getClass().getSimpleName(), orderBasicInfo.getOrderCode(), e); + logger.error("【{}】-订单退款逻辑异常orderCode:{}", this.getClass().getSimpleName(), orderBasicInfo.getOrderCode(), e); } } @@ -436,6 +436,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { */ @Override public Map rechargeBalance(WeixinPayDTO dto) { + logger.info("【{}】-余额充值start dto:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); // 获取支付配置 AbstractAdapayConfig config = AdapayConfigFactory.getConfig(dto.getWechatAppId()); if (config == null) { @@ -494,6 +495,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { */ @Override public void refundBalance(ApplyRefundDTO dto) { + logger.info("【{}】-余额退款start dto:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); // 做个拦截,如果前一笔退款没有完成,就抛异常 String redisKey = CacheConstants.MEMBER_BALANCE_REFUNDS_ARE_IN_PROGRESS + dto.getMemberId(); PaymentReverseResponse redisResult = redisCache.getCacheObject(redisKey); @@ -538,7 +540,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { */ @Transactional(rollbackFor = Exception.class) public void balancePaymentOrderRefund(OrderBasicInfo orderBasicInfo) { - logger.info("{}-余额支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); + logger.info("【{}】-余额支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); // 订单编号 String orderCode = orderBasicInfo.getOrderCode(); // 订单消费金额 @@ -582,7 +584,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { * 在线支付订单退款 */ private void onlinePaymentOrderRefund(OrderBasicInfo orderBasicInfo) { - logger.info("{}-在线支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); + logger.info("【{}】-在线支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); // 订单编号 String orderCode = orderBasicInfo.getOrderCode(); @@ -610,7 +612,7 @@ public class DelayMerchantOrderLogic extends AbstractOrderLogic { * @param dto */ private void refundOrderWithAdapay(ApplyRefundDTO dto) { - logger.info("{}-汇付支付订单:{}, 执行退款逻辑 param:{}", this.getClass().getSimpleName(), dto.getOrderCode(), JSON.toJSONString(dto)); + logger.info("【{}】-汇付支付订单:{}, 执行退款逻辑 param:{}", this.getClass().getSimpleName(), dto.getOrderCode(), JSON.toJSONString(dto)); // 查出来原来的支付信息 AdapayCallbackRecord callbackRecord = adapayCallbackRecordService.selectByOrderCode(dto.getOrderCode()); if (Objects.isNull(callbackRecord)) { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/NotDelayMerchantOrderLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/NotDelayMerchantOrderLogic.java index a8d222a90..1a8b5a134 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/NotDelayMerchantOrderLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/orderlogic/NotDelayMerchantOrderLogic.java @@ -66,7 +66,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ */ @Override public OrderBasicInfo generateOrder(GenerateOrderDTO dto) throws ParseException { - logger.info("{}-生成订单start, param:{}", this.getClass().getSimpleName(), JSONObject.toJSONString(dto)); + logger.info("【{}】-生成订单start, param:{}", this.getClass().getSimpleName(), JSONObject.toJSONString(dto)); // 处理前端传的参数 analysisPileParameter(dto); @@ -184,7 +184,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ @Override public Map payOrder(PayOrderDTO dto) { - logger.info("{}-支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(dto.getOrderCode()); if (orderInfo == null) { throw new BusinessException(ReturnCodeEnum.CODE_QUERY_ORDER_INFO_IS_NULL); @@ -221,7 +221,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ * @param dto */ public void balancePayOrder(PayOrderDTO dto) { - logger.info("{}-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-余额支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); String orderCode = dto.getOrderCode(); // 订单编号 BigDecimal chargeAmount = dto.getPayAmount(); // 支付金额 // 查询该会员的余额 @@ -307,7 +307,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ * @param dto */ public Map onlinePaymentOrder(PayOrderDTO dto) { - logger.info("{}-在线支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-在线支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); Map weixinMap = adapayService.createPayment(dto); return weixinMap; } @@ -318,7 +318,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ * @param dto */ public void whitelistPaymentOrder(PayOrderDTO dto) { - logger.info("{}-白名单支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); + logger.info("【{}】-白名单支付订单start, param:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); String orderCode = dto.getOrderCode(); BigDecimal payAmount = dto.getPayAmount(); String payMode = dto.getPayMode(); @@ -342,7 +342,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ */ @Override public void settleOrder(TransactionRecordsData data, OrderBasicInfo orderBasicInfo) { - logger.info("{}-结算订单start data:{}, orderBasicInfo:{}", this.getClass().getSimpleName(), data.toString(), JSON.toJSONString(orderBasicInfo)); + logger.info("【{}】-结算订单start data:{}, orderBasicInfo:{}", this.getClass().getSimpleName(), data.toString(), JSON.toJSONString(orderBasicInfo)); // 判断订单状态 if (StringUtils.equals(orderBasicInfo.getOrderStatus(), OrderStatusEnum.ORDER_COMPLETE.getValue())) { logger.info("结算订单:{}, 是订单完成状态", orderBasicInfo.getOrderCode()); @@ -408,6 +408,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ */ @Override public Map rechargeBalance(WeixinPayDTO dto) { + logger.info("【{}】-余额充值start dto:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); // 获取支付配置 AbstractAdapayConfig config = AdapayConfigFactory.getConfig(dto.getWechatAppId()); if (config == null) { @@ -439,10 +440,6 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ map.put("payMode", payMode); map.put("memberId", dto.getMemberId()); createAdaPaymentParam.setDescription(JSON.toJSONString(map)); - // 延时分账 - if (StringUtils.isNotBlank(payMode)) { - createAdaPaymentParam.setPay_mode(payMode); - } try { logger.info("创建汇付支付参数:{}", JSONObject.toJSONString(createAdaPaymentParam)); Map response = Payment.create(BeanMap.create(createAdaPaymentParam), config.getWechatAppId()); @@ -466,6 +463,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ */ @Override public void refundBalance(ApplyRefundDTO dto) { + logger.info("【{}】-余额退款start dto:{}", this.getClass().getSimpleName(), JSON.toJSONString(dto)); // 做个拦截,如果前一笔退款没有完成,就抛异常 String redisKey = CacheConstants.MEMBER_BALANCE_REFUNDS_ARE_IN_PROGRESS + dto.getMemberId(); RefundResponse redisResult = redisCache.getCacheObject(redisKey); @@ -524,7 +522,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ */ @Transactional(rollbackFor = Exception.class) public void balancePaymentOrderRefund(OrderBasicInfo orderBasicInfo) { - logger.info("{}-余额支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); + logger.info("【{}】-余额支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); // 订单编号 String orderCode = orderBasicInfo.getOrderCode(); // 订单消费金额 @@ -576,7 +574,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ * @param orderBasicInfo */ private void onlinePaymentOrderRefund(OrderBasicInfo orderBasicInfo) { - logger.info("{}-在线支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); + logger.info("【{}】-在线支付订单退款start orderBasicInfo:{}", this.getClass().getSimpleName(), JSON.toJSONString(orderBasicInfo)); // 订单编号 String orderCode = orderBasicInfo.getOrderCode(); @@ -604,7 +602,7 @@ public class NotDelayMerchantOrderLogic extends AbstractOrderLogic{ * @param dto */ private void refundOrderWithAdapay(ApplyRefundDTO dto) { - logger.info("{}-汇付支付订单:{}, 执行退款逻辑 param:{}", this.getClass().getSimpleName(), dto.getOrderCode(), JSON.toJSONString(dto)); + logger.info("【{}】-汇付支付订单:{}, 执行退款逻辑 param:{}", this.getClass().getSimpleName(), dto.getOrderCode(), JSON.toJSONString(dto)); // 查出来原来的支付信息 AdapayCallbackRecord callbackRecord = adapayCallbackRecordService.selectByOrderCode(dto.getOrderCode()); if (Objects.isNull(callbackRecord)) { diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WechatPayConfig.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WechatPayConfig.java index 0a04880fc..511c166f2 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WechatPayConfig.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WechatPayConfig.java @@ -5,9 +5,11 @@ import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.utils.WechatPayUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; -// @Order(value = 2) -// @Component +@Order(value = 2) +@Component public class WechatPayConfig implements CommandLineRunner { /** * 公众号appid diff --git a/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WeixinLoginProperties.java b/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WeixinLoginProperties.java index 5fb089e7f..31a38be68 100644 --- a/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WeixinLoginProperties.java +++ b/jsowell-pile/src/main/java/com/jsowell/wxpay/config/WeixinLoginProperties.java @@ -2,8 +2,9 @@ package com.jsowell.wxpay.config; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; -// @Component +@Component public class WeixinLoginProperties implements InitializingBean { @Value("${weixin.login.gateway}")