From f2d66a19b24bd80104bd5e1e699885144ed4758f Mon Sep 17 00:00:00 2001 From: wuxicheng <1441859745@qq.com> Date: Mon, 8 May 2023 16:39:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bnyer/common/core/domain/PayInfo.java | 4 ++-- .../java/com/bnyer/pay/dto/QueryOrderDto.java | 9 -------- .../service/impl/UnifiedPayServiceImpl.java | 21 +++++++++++++------ 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PayInfo.java b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PayInfo.java index 913f9b4..c642fb1 100644 --- a/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PayInfo.java +++ b/bnyer-common/bnyer-common-core/src/main/java/com/bnyer/common/core/domain/PayInfo.java @@ -81,10 +81,10 @@ public class PayInfo extends BaseDomain { private String payChannel; /** - * 交易类型:JSAPI等 + * 交易类型:1--JSAPI支付(小程序appId支付)、2--Native支付、3--app支付,4--JSAPI支付(公众号appId支付)5--H5支付 */ @TableField(value = "trade_type") - @ApiModelProperty(value = "交易类型:JSAPI等") + @ApiModelProperty(value = "交易类型:1--JSAPI支付(小程序appId支付)、2--Native支付、3--app支付,4--JSAPI支付(公众号appId支付)5--H5支付") private String tradeType; /** diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/QueryOrderDto.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/QueryOrderDto.java index ec414bc..3580ba0 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/QueryOrderDto.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/dto/QueryOrderDto.java @@ -1,6 +1,5 @@ package com.bnyer.pay.dto; -import com.bnyer.common.core.annotation.CustomParamsValidation; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.NoArgsConstructor; @@ -18,14 +17,6 @@ import javax.validation.constraints.NotBlank; @NoArgsConstructor public class QueryOrderDto { - @NotBlank(message = "支付类型不能为空") - @ApiModelProperty(value="支付类型:wxpay/alipay/kspay/dypay",required = true) - private String payType; - - @ApiModelProperty(value="交易类型 1--JSAPI支付(小程序appId支付)、2--Native支付、3--app支付,4--JSAPI支付(公众号appId支付)5--H5支付,微信支付必填",example = "1") - @CustomParamsValidation(range = "1",message = "交易类型暂时只支持JSAPI") - private String tradeType; - @NotBlank(message = "支付单号不能为空") @ApiModelProperty(value="支付单号",required = true) private String payId; diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java index be46f66..c87e1d9 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java @@ -58,11 +58,13 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { @Override public InOrderVo inOrder(InOrderDto dto, HttpServletRequest request) { //支付金额 - String payAmount = ""; + String payAmount; //商品类型:快手支付需要 int goodsType; //payId String payId; + //商品描述 + String goodsDesc; EnumSceneCode enumSceneCode = EnumSceneCode.getSceneCodeByCode(dto.getSceneCode()); switch (enumSceneCode){ //会员充值场景 @@ -79,12 +81,13 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { goodsType = KSPayConstants.GOODS_TYPE_VIP; payId = OrderUtil.getOrderNo("RV",new Date(), EnumUserClientType.getCodeByType(vipOrderVo.getUserClientType()) ,String.valueOf(vipOrderVo.getUserId())); + goodsDesc = enumSceneCode.getName() + ":" + vipOrderVo.getVipTypeName() + "-" + vipOrderVo.getVipName(); break; default: throw new ServiceException("sceneCode未匹配上对应支付场景"); } //构建统一下单请求实体 - UnifiedOrderBo unifiedOrderBo = buildUnifiedOrderDto(dto, goodsType,payAmount,payId, request); + UnifiedOrderBo unifiedOrderBo = buildUnifiedOrderDto(dto,goodsDesc, goodsType,payAmount,payId, request); //下单,获取第三方返回信息 IPayStrategy payStrategy = PayFactory.getInstance().getConcreteStrategy(dto.getPayType()); if (Objects.isNull(payStrategy)){ @@ -118,6 +121,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { addPayInfoDto.setAppid(thirdInOrderVo.getAppId()); addPayInfoDto.setGoodsSubject(unifiedOrderBo.getGoodsSubject()); addPayInfoDto.setGoodsDesc(unifiedOrderBo.getGoodsDesc()); + addPayInfoDto.setTradeType(dto.getTradeType()); // addPayInfoDto.setThirdNo(thirdInOrderVo.getPrepayid()); addPayInfoDto.setIp(unifiedOrderBo.getIp()); return addPayInfoDto; @@ -127,13 +131,14 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { * 构建统一下单请求实体 * * @param dto 入参 + * @param goodsDesc * @param goodsType 商品类型 * @param payAmount 不同支付场景下的支付金额 * @param payId 内部系统支付单号 * @param request 请求request用于获取ip地址 * @return */ - private UnifiedOrderBo buildUnifiedOrderDto(InOrderDto dto, int goodsType, String payAmount, String payId, HttpServletRequest request) { + private UnifiedOrderBo buildUnifiedOrderDto(InOrderDto dto, String goodsDesc, int goodsType, String payAmount, String payId, HttpServletRequest request) { String openId = ""; //当前时间 Date currDate = new Date(); @@ -146,7 +151,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { unifiedOrderBo.setPayAmount(payAmount); unifiedOrderBo.setGoodsType(goodsType); unifiedOrderBo.setGoodsSubject(EnumSceneCode.getSceneCodeName(dto.getSceneCode())); - unifiedOrderBo.setGoodsDesc(EnumSceneCode.getSceneCodeName(dto.getSceneCode())); + unifiedOrderBo.setGoodsDesc(goodsDesc); return unifiedOrderBo; } @@ -159,6 +164,9 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { public QueryOrderVo queryOrder(QueryOrderDto dto) { //先查询系统支付单是否已经完成支付,如果因为延迟导致没有及时同步,在调用第三方接口查询支付状态返回 PayInfoDetailsVo payInfoDetailsVo = payInfoService.queryOrder(dto.getPayId()); + if (Objects.isNull(payInfoDetailsVo)){ + throw new ServiceException(ResponseEnum.NOT_EXIST); + } Integer payStatus = payInfoDetailsVo.getPayStatus(); EnumPayStatus enumPayStatus = EnumPayStatus.getEnumPayStatusByStatus(payStatus); if (EnumPayStatus.NO_PAY != enumPayStatus){ @@ -168,16 +176,17 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { return queryOrderVo; } //获取第三方订单信息 - IPayStrategy strategy = PayFactory.getInstance().getConcreteStrategy(dto.getPayType()); + IPayStrategy strategy = PayFactory.getInstance().getConcreteStrategy(payInfoDetailsVo.getPayType()); if (Objects.isNull(strategy)){ throw new ServiceException("暂不支持该支付方式"); } //构建统一订单查询实体 QueryOrderBo queryOrderBo = EntityConvertUtil.copy(dto, QueryOrderBo.class); + queryOrderBo.setTradeType(payInfoDetailsVo.getTradeType()); ThirdQueryOrderVo thirdQueryOrderVo = strategy.queryOrder(queryOrderBo); QueryOrderVo queryOrderVo = new QueryOrderVo(); queryOrderVo.setPayId(dto.getPayId()); - queryOrderVo.setPayStatus(getPayStatus(dto.getPayType(), thirdQueryOrderVo.getPayStatus())); + queryOrderVo.setPayStatus(getPayStatus(payInfoDetailsVo.getPayType(), thirdQueryOrderVo.getPayStatus())); return queryOrderVo; }