Browse Source

支付优化

feature-1.1
wuxicheng 3 years ago
parent
commit
5b48a75798
  1. 4
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/QueryOrderBo.java
  2. 17
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/RefundBo.java
  3. 2
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/UnifiedOrderBo.java
  4. 13
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/controller/UnifiedPayController.java
  5. 15
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java
  6. 23
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java
  7. 23
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/IPayStrategy.java
  8. 23
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java
  9. 31
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java
  10. 3
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/QueryOrderDto.java
  11. 17
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/RefundDto.java
  12. 2
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/UnifiedOrderDto.java
  13. 2
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/enums/EnumPayConfigStatus.java
  14. 6
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/UnifiedPayService.java
  15. 22
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java
  16. 10
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdRefundVo.java
  17. 5
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdUnifiedOrderVo.java
  18. 10
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/UnifiedOrderVo.java

4
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/QueryOrderBo.java

@ -14,10 +14,6 @@ import lombok.Setter;
@NoArgsConstructor @NoArgsConstructor
public class QueryOrderBo { public class QueryOrderBo {
/**
* 支付类型wxpay/alipay/kspay/dypay
*/
private String payType;
/** /**
* 交易类型 1--JSAPI支付小程序appId支付2--Native支付3--app支付4--JSAPI支付公众号appId支付5--H5支付,微信支付必填 * 交易类型 1--JSAPI支付小程序appId支付2--Native支付3--app支付4--JSAPI支付公众号appId支付5--H5支付,微信支付必填
*/ */

17
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/RefundBo.java

@ -0,0 +1,17 @@
package com.bnyer.pay.bo;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @author :WXC
* @Date :2023/05/08
* @description :
*/
@Getter
@Setter
@NoArgsConstructor
public class RefundBo {
}

2
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/bo/UnifiedOrderBo.java

@ -21,7 +21,7 @@ public class UnifiedOrderBo {
*/ */
private String payId; private String payId;
/** /**
* trade_type=JSAPI此参数必传用户在商户appid下的唯一标识 * 用户在商户appid下的唯一标识
*/ */
private String openId; private String openId;
/** /**

13
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/controller/UnifiedPayController.java

@ -1,12 +1,11 @@
package com.bnyer.pay.controller; package com.bnyer.pay.controller;
import com.bnyer.common.core.domain.R; import com.bnyer.common.core.domain.R;
import com.bnyer.pay.dto.InOrderDto; import com.bnyer.pay.dto.UnifiedOrderDto;
import com.bnyer.pay.dto.QueryOrderDto; import com.bnyer.pay.dto.QueryOrderDto;
import com.bnyer.pay.service.UnifiedPayService; import com.bnyer.pay.service.UnifiedPayService;
import com.bnyer.pay.vo.InOrderVo; import com.bnyer.pay.vo.UnifiedOrderVo;
import com.bnyer.pay.vo.QueryOrderVo; import com.bnyer.pay.vo.QueryOrderVo;
import com.bnyer.pay.vo.ThirdInOrderVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -33,11 +32,11 @@ public class UnifiedPayController {
@Autowired @Autowired
private UnifiedPayService unifiedPayService; private UnifiedPayService unifiedPayService;
@PostMapping("/inOrder") @PostMapping("/unifiedOrder")
@Operation(summary = "统一下单,并生成支付订单" , description = "生成支付订单,返回前端支付所需参数") @Operation(summary = "统一下单,并生成支付订单" , description = "生成支付订单,返回前端支付所需参数")
public R<InOrderVo> inOrder(@Valid @RequestBody InOrderDto dto, HttpServletRequest request){ public R<UnifiedOrderVo> unifiedOrder(@Valid @RequestBody UnifiedOrderDto dto, HttpServletRequest request){
InOrderVo inOrderVo = unifiedPayService.inOrder(dto,request); UnifiedOrderVo unifiedOrderVo = unifiedPayService.unifiedOrder(dto,request);
return R.ok(inOrderVo); return R.ok(unifiedOrderVo);
} }
@PostMapping("/queryOrder") @PostMapping("/queryOrder")

15
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java

@ -22,6 +22,7 @@ import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.DateUtils; import com.bnyer.common.core.utils.DateUtils;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.pay.bo.QueryOrderBo; import com.bnyer.pay.bo.QueryOrderBo;
import com.bnyer.pay.bo.RefundBo;
import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.bo.UnifiedOrderBo;
import com.bnyer.pay.constant.AliPayConstant; import com.bnyer.pay.constant.AliPayConstant;
import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.EditPayInfoNotifyDto;
@ -29,7 +30,8 @@ import com.bnyer.pay.dto.PayNotifyCheckDto;
import com.bnyer.pay.enums.EnumPayChannel; import com.bnyer.pay.enums.EnumPayChannel;
import com.bnyer.pay.manager.AliPayManager; import com.bnyer.pay.manager.AliPayManager;
import com.bnyer.pay.service.PayInfoService; import com.bnyer.pay.service.PayInfoService;
import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdRefundVo;
import com.bnyer.pay.vo.ThirdUnifiedOrderVo;
import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -60,7 +62,7 @@ public class AliPayStrategy extends AbstractPayStrategy {
} }
@Override @Override
public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { public ThirdUnifiedOrderVo unifiedOrder(UnifiedOrderBo bo) {
log.info("支付宝支付:统一下单接口调用开始,AliPayStrategy.unifiedOrder bo:{}", JSON.toJSONString(bo)); log.info("支付宝支付:统一下单接口调用开始,AliPayStrategy.unifiedOrder bo:{}", JSON.toJSONString(bo));
AlipayConfig alipayConfig = aliPayManager.getAlipayConfig(); AlipayConfig alipayConfig = aliPayManager.getAlipayConfig();
String appid = alipayConfig.getAppid(); String appid = alipayConfig.getAppid();
@ -88,8 +90,8 @@ public class AliPayStrategy extends AbstractPayStrategy {
// 这里和普通的接口调用不同,使用的是sdkExecute // 这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
if(response.isSuccess()){ if(response.isSuccess()){
ThirdInOrderVo vo = new ThirdInOrderVo(); ThirdUnifiedOrderVo vo = new ThirdUnifiedOrderVo();
ThirdInOrderVo.AliThirdInOrderVo aliThirdInOrderVo = new ThirdInOrderVo.AliThirdInOrderVo(); ThirdUnifiedOrderVo.AliThirdInOrderVo aliThirdInOrderVo = new ThirdUnifiedOrderVo.AliThirdInOrderVo();
aliThirdInOrderVo.setOutStr(response.getBody()); aliThirdInOrderVo.setOutStr(response.getBody());
vo.setAliThirdInOrderVo(aliThirdInOrderVo); vo.setAliThirdInOrderVo(aliThirdInOrderVo);
vo.setOutOrderNo(bo.getPayId()); vo.setOutOrderNo(bo.getPayId());
@ -209,5 +211,10 @@ public class AliPayStrategy extends AbstractPayStrategy {
} }
} }
@Override
public ThirdRefundVo refund(RefundBo bo) {
return null;
}
} }

23
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java

@ -11,6 +11,7 @@ import com.bnyer.common.core.enums.ResponseEnum;
import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.pay.bo.QueryOrderBo; import com.bnyer.pay.bo.QueryOrderBo;
import com.bnyer.pay.bo.RefundBo;
import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.bo.UnifiedOrderBo;
import com.bnyer.pay.constant.DYPayConstants; import com.bnyer.pay.constant.DYPayConstants;
import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.EditPayInfoNotifyDto;
@ -22,7 +23,8 @@ import com.bnyer.pay.service.PayInfoService;
import com.bnyer.pay.utils.DYPayUtil; import com.bnyer.pay.utils.DYPayUtil;
import com.bnyer.pay.utils.MoneyUtil; import com.bnyer.pay.utils.MoneyUtil;
import com.bnyer.pay.utils.PayRestTemplateUtil; import com.bnyer.pay.utils.PayRestTemplateUtil;
import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdRefundVo;
import com.bnyer.pay.vo.ThirdUnifiedOrderVo;
import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo;
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
@ -75,7 +77,7 @@ public class DYPayStrategy extends AbstractPayStrategy{
} }
@Override @Override
public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { public ThirdUnifiedOrderVo unifiedOrder(UnifiedOrderBo bo) {
String result = ""; String result = "";
DypayConfig dypayConfig = getDypayConfig(); DypayConfig dypayConfig = getDypayConfig();
String appId = dypayConfig.getAppid(); String appId = dypayConfig.getAppid();
@ -145,15 +147,15 @@ public class DYPayStrategy extends AbstractPayStrategy{
throw new ServiceException(ResponseEnum.PAY_FAILS); throw new ServiceException(ResponseEnum.PAY_FAILS);
} }
//保存预下单信息 //保存预下单信息
ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdInOrderVo.setAppId(appId); thirdUnifiedOrderVo.setAppId(appId);
ThirdInOrderVo.DyThirdInOrderVo dyThirdInOrderVo = new ThirdInOrderVo.DyThirdInOrderVo(); ThirdUnifiedOrderVo.DyThirdInOrderVo dyThirdInOrderVo = new ThirdUnifiedOrderVo.DyThirdInOrderVo();
thirdInOrderVo.setOutOrderNo(bo.getPayId()); thirdUnifiedOrderVo.setOutOrderNo(bo.getPayId());
//把order_no和order_info_token返回前端用于调起收银台 //把order_no和order_info_token返回前端用于调起收银台
dyThirdInOrderVo.setOrderId(orderId); dyThirdInOrderVo.setOrderId(orderId);
dyThirdInOrderVo.setOrderToken(orderToken); dyThirdInOrderVo.setOrderToken(orderToken);
thirdInOrderVo.setDyThirdInOrderVo(dyThirdInOrderVo); thirdUnifiedOrderVo.setDyThirdInOrderVo(dyThirdInOrderVo);
return thirdInOrderVo; return thirdUnifiedOrderVo;
} }
@Override @Override
@ -291,4 +293,9 @@ public class DYPayStrategy extends AbstractPayStrategy{
thirdQueryOrderVo.setChannelNo(channelNo); thirdQueryOrderVo.setChannelNo(channelNo);
return thirdQueryOrderVo; return thirdQueryOrderVo;
} }
@Override
public ThirdRefundVo refund(RefundBo bo) {
return null;
}
} }

23
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/IPayStrategy.java

@ -1,8 +1,10 @@
package com.bnyer.pay.design.strategy; package com.bnyer.pay.design.strategy;
import com.bnyer.pay.bo.QueryOrderBo; import com.bnyer.pay.bo.QueryOrderBo;
import com.bnyer.pay.bo.RefundBo;
import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.bo.UnifiedOrderBo;
import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdRefundVo;
import com.bnyer.pay.vo.ThirdUnifiedOrderVo;
import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo;
/** /**
@ -16,10 +18,10 @@ public interface IPayStrategy {
* @param bo * @param bo
* @return * @return
*/ */
ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo); ThirdUnifiedOrderVo unifiedOrder(UnifiedOrderBo bo);
/** /**
* 支付回调处理 * 统一支付回调处理
* 满足支付成功需要几个条件 * 满足支付成功需要几个条件
* 1.回调到pay服务时要保证修改支付状态payStatus为1001对账状态singStatus为1001 * 1.回调到pay服务时要保证修改支付状态payStatus为1001对账状态singStatus为1001
* 2.pay服务处理完以后发送消息到order服务修改order表订单状态orderStatus为1支付状态payStatus为1001 * 2.pay服务处理完以后发送消息到order服务修改order表订单状态orderStatus为1支付状态payStatus为1001
@ -31,15 +33,20 @@ public interface IPayStrategy {
String parsePayNotify(String params); String parsePayNotify(String params);
/** /**
* 订单查询 * 统一订单查询
* @param bo 入参
* @return 第三方订单查询信息
*/ */
ThirdQueryOrderVo queryOrder(QueryOrderBo bo); ThirdQueryOrderVo queryOrder(QueryOrderBo bo);
//===========待完成================
// TODO: 2023/04/03 订单查询
// TODO: 2023/04/03 退款 /**
// void refund(); * 统一退款
* @param bo 入参
* @return 第三方退款信息
*/
ThirdRefundVo refund(RefundBo bo);
//===========待完成================
// TODO: 2023/04/03 退款查询 // TODO: 2023/04/03 退款查询
// void refundQuery(); // void refundQuery();
} }

23
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java

@ -13,6 +13,7 @@ import com.bnyer.common.core.enums.ResponseEnum;
import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.pay.bo.QueryOrderBo; import com.bnyer.pay.bo.QueryOrderBo;
import com.bnyer.pay.bo.RefundBo;
import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.bo.UnifiedOrderBo;
import com.bnyer.pay.constant.KSPayConstants; import com.bnyer.pay.constant.KSPayConstants;
import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.EditPayInfoNotifyDto;
@ -24,7 +25,8 @@ import com.bnyer.pay.service.PayInfoService;
import com.bnyer.pay.utils.KSPayUtil; import com.bnyer.pay.utils.KSPayUtil;
import com.bnyer.pay.utils.MoneyUtil; import com.bnyer.pay.utils.MoneyUtil;
import com.bnyer.pay.utils.PayRestTemplateUtil; import com.bnyer.pay.utils.PayRestTemplateUtil;
import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdRefundVo;
import com.bnyer.pay.vo.ThirdUnifiedOrderVo;
import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo;
import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -77,7 +79,7 @@ public class KSPayStrategy extends AbstractPayStrategy{
} }
@Override @Override
public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { public ThirdUnifiedOrderVo unifiedOrder(UnifiedOrderBo bo) {
String result = ""; String result = "";
KspayConfig kspayConfig = getKspayConfig(); KspayConfig kspayConfig = getKspayConfig();
String openId = SecurityContextHolder.getFhOpenId(); String openId = SecurityContextHolder.getFhOpenId();
@ -150,15 +152,15 @@ public class KSPayStrategy extends AbstractPayStrategy{
throw new ServiceException(ResponseEnum.PAY_FAILS); throw new ServiceException(ResponseEnum.PAY_FAILS);
} }
//保存预下单信息 //保存预下单信息
ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdInOrderVo.setAppId(appId); thirdUnifiedOrderVo.setAppId(appId);
ThirdInOrderVo.KsThirdInOrderVo ksThirdInOrderVo = new ThirdInOrderVo.KsThirdInOrderVo(); ThirdUnifiedOrderVo.KsThirdInOrderVo ksThirdInOrderVo = new ThirdUnifiedOrderVo.KsThirdInOrderVo();
thirdInOrderVo.setOutOrderNo(bo.getPayId()); thirdUnifiedOrderVo.setOutOrderNo(bo.getPayId());
//把order_no和order_info_token返回前端用于调起收银台 //把order_no和order_info_token返回前端用于调起收银台
ksThirdInOrderVo.setOrderNo(orderNo); ksThirdInOrderVo.setOrderNo(orderNo);
ksThirdInOrderVo.setOrderToken(orderToken); ksThirdInOrderVo.setOrderToken(orderToken);
thirdInOrderVo.setKsThirdInOrderVo(ksThirdInOrderVo); thirdUnifiedOrderVo.setKsThirdInOrderVo(ksThirdInOrderVo);
return thirdInOrderVo; return thirdUnifiedOrderVo;
} }
@Override @Override
@ -294,4 +296,9 @@ public class KSPayStrategy extends AbstractPayStrategy{
thirdQueryOrderVo.setOpenId(openId); thirdQueryOrderVo.setOpenId(openId);
return thirdQueryOrderVo; return thirdQueryOrderVo;
} }
@Override
public ThirdRefundVo refund(RefundBo bo) {
return null;
}
} }

31
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java

@ -8,6 +8,7 @@ import com.bnyer.common.core.enums.ResponseEnum;
import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.pay.bo.QueryOrderBo; import com.bnyer.pay.bo.QueryOrderBo;
import com.bnyer.pay.bo.RefundBo;
import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.bo.UnifiedOrderBo;
import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.EditPayInfoNotifyDto;
import com.bnyer.pay.dto.PayNotifyCheckDto; import com.bnyer.pay.dto.PayNotifyCheckDto;
@ -17,7 +18,8 @@ import com.bnyer.pay.enums.EnumWxPayStatus;
import com.bnyer.pay.manager.WxPayManager; import com.bnyer.pay.manager.WxPayManager;
import com.bnyer.pay.service.PayInfoService; import com.bnyer.pay.service.PayInfoService;
import com.bnyer.pay.utils.WXPayUtil; import com.bnyer.pay.utils.WXPayUtil;
import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdRefundVo;
import com.bnyer.pay.vo.ThirdUnifiedOrderVo;
import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo;
import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result;
@ -56,20 +58,20 @@ public class WxPayStrategy extends AbstractPayStrategy {
} }
@Override @Override
public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { public ThirdUnifiedOrderVo unifiedOrder(UnifiedOrderBo bo) {
log.info("微信支付:统一下单接口调用开始,WxPayStrategy.unifiedOrder bo:{}",JSON.toJSONString(bo)); log.info("微信支付:统一下单接口调用开始,WxPayStrategy.unifiedOrder bo:{}",JSON.toJSONString(bo));
ThirdInOrderVo thirdInOrderVo = null; ThirdUnifiedOrderVo thirdUnifiedOrderVo = null;
EnumTradeType payByTradeType = EnumTradeType.getPayByTradeType(bo.getTradeType()); EnumTradeType payByTradeType = EnumTradeType.getPayByTradeType(bo.getTradeType());
switch (payByTradeType){ switch (payByTradeType){
case JSAPI_MINI: case JSAPI_MINI:
thirdInOrderVo = jsApiPay(bo); thirdUnifiedOrderVo = jsApiPay(bo);
break; break;
case JSAPI_PUBLIC: case JSAPI_PUBLIC:
break; break;
default: default:
throw new ServiceException("TradeType未匹配上对应支付方式"); throw new ServiceException("TradeType未匹配上对应支付方式");
} }
return thirdInOrderVo; return thirdUnifiedOrderVo;
} }
/** /**
@ -77,7 +79,7 @@ public class WxPayStrategy extends AbstractPayStrategy {
* @param bo * @param bo
* @return * @return
*/ */
private ThirdInOrderVo jsApiPay(UnifiedOrderBo bo) { private ThirdUnifiedOrderVo jsApiPay(UnifiedOrderBo bo) {
WxpayConfig wxPayConfig = wxPayManager.getWxPayConfigByTradeType(bo.getTradeType()); WxpayConfig wxPayConfig = wxPayManager.getWxPayConfigByTradeType(bo.getTradeType());
WxPayService wxPayService = wxPayManager.getWxPayService(wxPayConfig); WxPayService wxPayService = wxPayManager.getWxPayService(wxPayConfig);
String openId = SecurityContextHolder.getWechatOpenId(); String openId = SecurityContextHolder.getWechatOpenId();
@ -95,16 +97,16 @@ public class WxPayStrategy extends AbstractPayStrategy {
WxPayUnifiedOrderV3Result wxPayUnifiedOrderV3Result = wxPayService.createOrderV3(TradeTypeEnum.JSAPI, orderRequest); WxPayUnifiedOrderV3Result wxPayUnifiedOrderV3Result = wxPayService.createOrderV3(TradeTypeEnum.JSAPI, orderRequest);
WxPayUnifiedOrderV3Result.JsapiResult jsapiResult = wxPayUnifiedOrderV3Result.getPayInfo(TradeTypeEnum.JSAPI, wxPayConfig.getAppid(), wxPayConfig.getMchid(), wxPayService.getConfig().getPrivateKey()); WxPayUnifiedOrderV3Result.JsapiResult jsapiResult = wxPayUnifiedOrderV3Result.getPayInfo(TradeTypeEnum.JSAPI, wxPayConfig.getAppid(), wxPayConfig.getMchid(), wxPayService.getConfig().getPrivateKey());
//返回数据 //返回数据
ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); ThirdUnifiedOrderVo thirdUnifiedOrderVo = new ThirdUnifiedOrderVo();
thirdInOrderVo.setAppId(wxPayConfig.getAppid()); thirdUnifiedOrderVo.setAppId(wxPayConfig.getAppid());
ThirdInOrderVo.WxThirdInOrderVo wxThirdInOrderVo = new ThirdInOrderVo.WxThirdInOrderVo(); ThirdUnifiedOrderVo.WxThirdInOrderVo wxThirdInOrderVo = new ThirdUnifiedOrderVo.WxThirdInOrderVo();
wxThirdInOrderVo.setPackageValue(jsapiResult.getPackageValue()); wxThirdInOrderVo.setPackageValue(jsapiResult.getPackageValue());
wxThirdInOrderVo.setTimeStamp(jsapiResult.getTimeStamp()); wxThirdInOrderVo.setTimeStamp(jsapiResult.getTimeStamp());
wxThirdInOrderVo.setNonceStr(jsapiResult.getNonceStr()); wxThirdInOrderVo.setNonceStr(jsapiResult.getNonceStr());
wxThirdInOrderVo.setPaySign(jsapiResult.getPaySign()); wxThirdInOrderVo.setPaySign(jsapiResult.getPaySign());
thirdInOrderVo.setOutOrderNo(bo.getPayId()); thirdUnifiedOrderVo.setOutOrderNo(bo.getPayId());
thirdInOrderVo.setAppId(jsapiResult.getAppId()); thirdUnifiedOrderVo.setAppId(jsapiResult.getAppId());
return thirdInOrderVo; return thirdUnifiedOrderVo;
} catch (WxPayException e) { } catch (WxPayException e) {
log.error("微信支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(), e.getMessage()); log.error("微信支付:统一下单接口调用失败,payId:{},error{}", bo.getPayId(), e.getMessage());
throw new ServiceException(ResponseEnum.PAY_FAILS); throw new ServiceException(ResponseEnum.PAY_FAILS);
@ -201,4 +203,9 @@ public class WxPayStrategy extends AbstractPayStrategy {
throw new ServiceException(ResponseEnum.ORDER_QUERY_FAILS); throw new ServiceException(ResponseEnum.ORDER_QUERY_FAILS);
} }
} }
@Override
public ThirdRefundVo refund(RefundBo bo) {
return null;
}
} }

3
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/QueryOrderDto.java

@ -21,4 +21,7 @@ public class QueryOrderDto {
@ApiModelProperty(value="支付单号",required = true) @ApiModelProperty(value="支付单号",required = true)
private String payId; private String payId;
@ApiModelProperty(value = "第三方流水号")
private String payNo;
} }

17
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/RefundDto.java

@ -0,0 +1,17 @@
package com.bnyer.pay.dto;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* @author :WXC
* @Date :2023/05/08
* @description :
*/
@Getter
@Setter
@NoArgsConstructor
public class RefundDto {
}

2
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/InOrderDto.java → bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/UnifiedOrderDto.java

@ -17,7 +17,7 @@ import javax.validation.constraints.NotNull;
@Getter @Getter
@Setter @Setter
@NoArgsConstructor @NoArgsConstructor
public class InOrderDto { public class UnifiedOrderDto {
@NotBlank(message = "业务主订单号不能为空") @NotBlank(message = "业务主订单号不能为空")
@ApiModelProperty(value="业务主订单号:关联内部业务订单表",required = true) @ApiModelProperty(value="业务主订单号:关联内部业务订单表",required = true)

2
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/enums/EnumPayConfigStatus.java

@ -13,7 +13,7 @@ import java.util.Objects;
@AllArgsConstructor @AllArgsConstructor
public enum EnumPayConfigStatus { public enum EnumPayConfigStatus {
ENABLE("0","正常"), ENABLE("0","启用"),
DISABLE("1","停用"), DISABLE("1","停用"),
; ;

6
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/UnifiedPayService.java

@ -1,8 +1,8 @@
package com.bnyer.pay.service; package com.bnyer.pay.service;
import com.bnyer.pay.dto.InOrderDto; import com.bnyer.pay.dto.UnifiedOrderDto;
import com.bnyer.pay.dto.QueryOrderDto; import com.bnyer.pay.dto.QueryOrderDto;
import com.bnyer.pay.vo.InOrderVo; import com.bnyer.pay.vo.UnifiedOrderVo;
import com.bnyer.pay.vo.QueryOrderVo; import com.bnyer.pay.vo.QueryOrderVo;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@ -20,7 +20,7 @@ public interface UnifiedPayService {
* @param request * @param request
* @return * @return
*/ */
InOrderVo inOrder(InOrderDto dto, HttpServletRequest request); UnifiedOrderVo unifiedOrder(UnifiedOrderDto dto, HttpServletRequest request);
/** /**
* 统一订单查询 * 统一订单查询

22
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java

@ -15,7 +15,7 @@ import com.bnyer.pay.constant.KSPayConstants;
import com.bnyer.pay.design.factory.PayFactory; import com.bnyer.pay.design.factory.PayFactory;
import com.bnyer.pay.design.strategy.IPayStrategy; import com.bnyer.pay.design.strategy.IPayStrategy;
import com.bnyer.pay.dto.AddPayInfoDto; import com.bnyer.pay.dto.AddPayInfoDto;
import com.bnyer.pay.dto.InOrderDto; import com.bnyer.pay.dto.UnifiedOrderDto;
import com.bnyer.pay.dto.QueryOrderDto; import com.bnyer.pay.dto.QueryOrderDto;
import com.bnyer.pay.enums.EnumAliPayStatus; import com.bnyer.pay.enums.EnumAliPayStatus;
import com.bnyer.pay.enums.EnumDyPayStatus; import com.bnyer.pay.enums.EnumDyPayStatus;
@ -56,7 +56,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService {
* @return * @return
*/ */
@Override @Override
public InOrderVo inOrder(InOrderDto dto, HttpServletRequest request) { public UnifiedOrderVo unifiedOrder(UnifiedOrderDto dto, HttpServletRequest request) {
//支付金额 //支付金额
String payAmount; String payAmount;
//商品类型:快手支付需要 //商品类型:快手支付需要
@ -93,32 +93,32 @@ public class UnifiedPayServiceImpl implements UnifiedPayService {
if (Objects.isNull(payStrategy)){ if (Objects.isNull(payStrategy)){
throw new ServiceException("暂不支持该支付方式"); throw new ServiceException("暂不支持该支付方式");
} }
ThirdInOrderVo thirdInOrderVo = payStrategy.unifiedOrder(unifiedOrderBo); ThirdUnifiedOrderVo thirdUnifiedOrderVo = payStrategy.unifiedOrder(unifiedOrderBo);
//构建支付订单完成入库 //构建支付订单完成入库
AddPayInfoDto addPayInfoDto = buildPayInfo(thirdInOrderVo, unifiedOrderBo,dto); AddPayInfoDto addPayInfoDto = buildPayInfo(thirdUnifiedOrderVo, unifiedOrderBo,dto);
payInfoService.addPayInfo(addPayInfoDto); payInfoService.addPayInfo(addPayInfoDto);
InOrderVo inOrderVo = EntityConvertUtil.copy(thirdInOrderVo, InOrderVo.class); UnifiedOrderVo unifiedOrderVo = EntityConvertUtil.copy(thirdUnifiedOrderVo, UnifiedOrderVo.class);
return inOrderVo; return unifiedOrderVo;
} }
/** /**
* 构建支付订单 * 构建支付订单
* *
* @param thirdInOrderVo * @param thirdUnifiedOrderVo
* @param unifiedOrderBo * @param unifiedOrderBo
* @param dto * @param dto
* @return * @return
*/ */
private AddPayInfoDto buildPayInfo(ThirdInOrderVo thirdInOrderVo, UnifiedOrderBo unifiedOrderBo, InOrderDto dto) { private AddPayInfoDto buildPayInfo(ThirdUnifiedOrderVo thirdUnifiedOrderVo, UnifiedOrderBo unifiedOrderBo, UnifiedOrderDto dto) {
AddPayInfoDto addPayInfoDto = new AddPayInfoDto(); AddPayInfoDto addPayInfoDto = new AddPayInfoDto();
addPayInfoDto.setAppid(thirdInOrderVo.getAppId()); addPayInfoDto.setAppid(thirdUnifiedOrderVo.getAppId());
addPayInfoDto.setOrderNo(dto.getOrderNo()); addPayInfoDto.setOrderNo(dto.getOrderNo());
addPayInfoDto.setSceneCode(dto.getSceneCode()); addPayInfoDto.setSceneCode(dto.getSceneCode());
addPayInfoDto.setRemark(dto.getRemark()); addPayInfoDto.setRemark(dto.getRemark());
addPayInfoDto.setPayType(dto.getPayType()); addPayInfoDto.setPayType(dto.getPayType());
addPayInfoDto.setPayId(unifiedOrderBo.getPayId()); addPayInfoDto.setPayId(unifiedOrderBo.getPayId());
addPayInfoDto.setPayAmount(new BigDecimal(unifiedOrderBo.getPayAmount())); addPayInfoDto.setPayAmount(new BigDecimal(unifiedOrderBo.getPayAmount()));
addPayInfoDto.setAppid(thirdInOrderVo.getAppId()); addPayInfoDto.setAppid(thirdUnifiedOrderVo.getAppId());
addPayInfoDto.setGoodsSubject(unifiedOrderBo.getGoodsSubject()); addPayInfoDto.setGoodsSubject(unifiedOrderBo.getGoodsSubject());
addPayInfoDto.setGoodsDesc(unifiedOrderBo.getGoodsDesc()); addPayInfoDto.setGoodsDesc(unifiedOrderBo.getGoodsDesc());
addPayInfoDto.setTradeType(dto.getTradeType()); addPayInfoDto.setTradeType(dto.getTradeType());
@ -138,7 +138,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService {
* @param request 请求request用于获取ip地址 * @param request 请求request用于获取ip地址
* @return * @return
*/ */
private UnifiedOrderBo buildUnifiedOrderDto(InOrderDto dto, String goodsDesc, int goodsType, String payAmount, String payId, HttpServletRequest request) { private UnifiedOrderBo buildUnifiedOrderDto(UnifiedOrderDto dto, String goodsDesc, int goodsType, String payAmount, String payId, HttpServletRequest request) {
String openId = ""; String openId = "";
//当前时间 //当前时间
Date currDate = new Date(); Date currDate = new Date();

10
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdRefundVo.java

@ -0,0 +1,10 @@
package com.bnyer.pay.vo;
/**
* @author :WXC
* @Date :2023/05/08
* @description :
*/
public class ThirdRefundVo {
}

5
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdInOrderVo.java → bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/ThirdUnifiedOrderVo.java

@ -2,7 +2,6 @@ package com.bnyer.pay.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable; import java.io.Serializable;
@ -13,7 +12,7 @@ import java.io.Serializable;
*/ */
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class ThirdInOrderVo implements Serializable { public class ThirdUnifiedOrderVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "应用id") @ApiModelProperty(value = "应用id")
@ -44,7 +43,7 @@ public class ThirdInOrderVo implements Serializable {
private String nonceStr; private String nonceStr;
@ApiModelProperty(value = "会话标识") @ApiModelProperty(value = "会话标识")
private String packageValue; private String packageValue;
@ApiModelProperty(value = "微信返回的字段") @ApiModelProperty(value = "签名类型")
private String signType; private String signType;
@ApiModelProperty(value = "签名") @ApiModelProperty(value = "签名")
private String paySign; private String paySign;

10
bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/InOrderVo.java → bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/vo/UnifiedOrderVo.java

@ -11,7 +11,7 @@ import lombok.NoArgsConstructor;
*/ */
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class InOrderVo { public class UnifiedOrderVo {
@ApiModelProperty(value = "应用id") @ApiModelProperty(value = "应用id")
private String appId; private String appId;
@ -20,16 +20,16 @@ public class InOrderVo {
private String outOrderNo; private String outOrderNo;
@ApiModelProperty(value = "微信下单返回") @ApiModelProperty(value = "微信下单返回")
private ThirdInOrderVo.WxThirdInOrderVo wxThirdInOrderVo; private ThirdUnifiedOrderVo.WxThirdInOrderVo wxThirdInOrderVo;
@ApiModelProperty(value = "支付宝下单返回") @ApiModelProperty(value = "支付宝下单返回")
private ThirdInOrderVo.AliThirdInOrderVo aliThirdInOrderVo; private ThirdUnifiedOrderVo.AliThirdInOrderVo aliThirdInOrderVo;
@ApiModelProperty(value = "快手下单返回") @ApiModelProperty(value = "快手下单返回")
private ThirdInOrderVo.KsThirdInOrderVo ksThirdInOrderVo; private ThirdUnifiedOrderVo.KsThirdInOrderVo ksThirdInOrderVo;
@ApiModelProperty(value = "抖音下单返回") @ApiModelProperty(value = "抖音下单返回")
private ThirdInOrderVo.DyThirdInOrderVo dyThirdInOrderVo; private ThirdUnifiedOrderVo.DyThirdInOrderVo dyThirdInOrderVo;
@Data @Data
public static class WxThirdInOrderVo { public static class WxThirdInOrderVo {
Loading…
Cancel
Save