From 6fdd866d281447e8f51fea404dcd4fc269303762 Mon Sep 17 00:00:00 2001 From: wuxicheng <1441859745@qq.com> Date: Mon, 8 May 2023 16:00:49 +0800 Subject: [PATCH 1/2] =?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 --- .../api/remote/RemoteVipOrderService.java | 2 +- .../service/impl/VipOrderServiceImpl.java | 6 +++- .../bnyer/pay/design/factory/PayFactory.java | 3 +- .../pay/design/strategy/AliPayStrategy.java | 30 ++--------------- .../pay/design/strategy/DYPayStrategy.java | 31 +++++++++-------- .../pay/design/strategy/KSPayStrategy.java | 33 +++++++++++-------- .../pay/design/strategy/WxPayStrategy.java | 11 +++++-- .../service/impl/UnifiedPayServiceImpl.java | 9 ++--- 8 files changed, 60 insertions(+), 65 deletions(-) diff --git a/bnyer-api/bnyer-api-order/src/main/java/com/bnyer/order/api/remote/RemoteVipOrderService.java b/bnyer-api/bnyer-api-order/src/main/java/com/bnyer/order/api/remote/RemoteVipOrderService.java index 32319bb..26c2eee 100644 --- a/bnyer-api/bnyer-api-order/src/main/java/com/bnyer/order/api/remote/RemoteVipOrderService.java +++ b/bnyer-api/bnyer-api-order/src/main/java/com/bnyer/order/api/remote/RemoteVipOrderService.java @@ -24,6 +24,6 @@ public interface RemoteVipOrderService { * @param dto * @return */ - @PostMapping("/getVipOrderList") + @PostMapping("/vip/getVipOrderList") R> getVipOrderList(@RequestBody QueryVipOrderDto dto); } diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java index 64ef74d..eeadbe1 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java @@ -133,7 +133,11 @@ public class VipOrderServiceImpl extends ServiceImpl i */ private VipOrder buildImgVipOrder(UserVipInfoVo userVipInfoVo, AddVipOrderDto addVipOrderDto) { Long userId = SecurityUtils.getUserId(); - VipOrder vipOrder = EntityConvertUtil.copy(userVipInfoVo, VipOrder.class); + VipOrder vipOrder = new VipOrder(); + vipOrder.setVipId(userVipInfoVo.getId()); + vipOrder.setVipCode(userVipInfoVo.getVipCode()); + vipOrder.setVipName(userVipInfoVo.getVipName()); + vipOrder.setVipTypeName(userVipInfoVo.getVipTypeName()); vipOrder.setPhone(addVipOrderDto.getPhone()); vipOrder.setVipId(addVipOrderDto.getVipId()); vipOrder.setVipName(userVipInfoVo.getVipName()); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/factory/PayFactory.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/factory/PayFactory.java index 9127098..0f3da2e 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/factory/PayFactory.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/factory/PayFactory.java @@ -2,6 +2,7 @@ package com.bnyer.pay.design.factory; import com.bnyer.common.core.enums.EnumPayType; import com.bnyer.pay.design.strategy.AliPayStrategy; +import com.bnyer.pay.design.strategy.DYPayStrategy; import com.bnyer.pay.design.strategy.IPayStrategy; import com.bnyer.pay.design.strategy.WxPayStrategy; import com.google.common.collect.ImmutableMap; @@ -17,7 +18,7 @@ public class PayFactory { private static final Map strategyMap = new ImmutableMap.Builder() .put(EnumPayType.ALI_PAY.getType(),new AliPayStrategy()) .put(EnumPayType.WX_PAY.getType(),new WxPayStrategy()) - .put(EnumPayType.DY_PAY.getType(),new WxPayStrategy()) + .put(EnumPayType.DY_PAY.getType(),new DYPayStrategy()) .put(EnumPayType.KS_PAY.getType(),new WxPayStrategy()) .build(); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java index 2e9f86f..035e63c 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java @@ -1,6 +1,5 @@ package com.bnyer.pay.design.strategy; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; @@ -15,24 +14,20 @@ import com.alipay.api.request.AlipayTradeAppPayRequest; import com.alipay.api.request.AlipayTradeQueryRequest; import com.alipay.api.response.AlipayTradeAppPayResponse; import com.alipay.api.response.AlipayTradeQueryResponse; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.domain.AlipayConfig; import com.bnyer.common.core.enums.EnumPayType; import com.bnyer.common.core.enums.EnumTimeUnit; import com.bnyer.common.core.enums.ResponseEnum; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.DateUtils; -import com.bnyer.common.core.utils.SpringUtils; import com.bnyer.common.core.utils.StringUtils; import com.bnyer.pay.bo.QueryOrderBo; +import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.constant.AliPayConstant; import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.PayNotifyCheckDto; -import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.enums.EnumPayChannel; -import com.bnyer.pay.enums.EnumPayConfigStatus; import com.bnyer.pay.manager.AliPayManager; -import com.bnyer.pay.mapper.AlipayConfigMapper; import com.bnyer.pay.service.PayInfoService; import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo; @@ -40,10 +35,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -61,24 +54,11 @@ public class AliPayStrategy extends AbstractPayStrategy { @Autowired - public void setUserServer(AliPayManager aliPayManager,PayInfoService payInfoService) { + public void setBean(AliPayManager aliPayManager,PayInfoService payInfoService) { AliPayStrategy.aliPayManager = aliPayManager; AliPayStrategy.payInfoService = payInfoService; } -// /** -// * 查询支付配置 -// * @return -// */ -// private AlipayConfig getAlipayConfig() { -// List alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper().eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode())); -// if (CollUtil.isEmpty(alipayConfigList)){ -// throw new ServiceException(ResponseEnum.PAY_CONFIG_ERROR); -// } -// AlipayConfig alipayConfig = alipayConfigList.get(0); -// return alipayConfig; -// } - @Override public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { log.info("支付宝支付:统一下单接口调用开始,AliPayStrategy.unifiedOrder bo:{}", JSON.toJSONString(bo)); @@ -144,12 +124,6 @@ public class AliPayStrategy extends AbstractPayStrategy { //订单金额(元) String totalAmount = inMap.get("total_amount"); //通过appid查询配置的密钥:用于校验签名 -// List alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper() -// .eq(AlipayConfig::getAppid,appId).eq(AlipayConfig::getStatus, EnumPayConfigStatus.ENABLE.getCode())); -// if (CollUtil.isEmpty(alipayConfigList)){ -// log.error(ResponseEnum.PAY_CONFIG_ERROR.getMsg()); -// return MsgConstants.FAIL; -// } AlipayConfig alipayConfig = aliPayManager.getAlipayConfig(appId); //-----------------------2.签名校验--------------------------- String alipayPublicKey = alipayConfig.getAlipayPublicKey(); diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java index 1e043db..71609a7 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java @@ -11,11 +11,10 @@ import com.bnyer.common.core.enums.ResponseEnum; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.StringUtils; import com.bnyer.pay.bo.QueryOrderBo; +import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.constant.DYPayConstants; -import com.bnyer.pay.constant.KSPayConstants; import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.PayNotifyCheckDto; -import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.enums.EnumPayChannel; import com.bnyer.pay.enums.EnumPayConfigStatus; import com.bnyer.pay.mapper.DypayConfigMapper; @@ -45,17 +44,22 @@ import java.util.TreeMap; @Component public class DYPayStrategy extends AbstractPayStrategy{ - @Autowired - private DYPayUtil dyPayUtil; + private static DYPayUtil dyPayUtil; - @Autowired - private PayRestTemplateUtil payRestTemplateUtil; + private static PayRestTemplateUtil payRestTemplateUtil; - @Autowired - private PayInfoService payInfoService; + private static PayInfoService payInfoService; + + private static DypayConfigMapper dypayConfigMapper; @Autowired - private DypayConfigMapper dypayConfigMapper; + public void setBean(DYPayUtil dyPayUtil, PayRestTemplateUtil payRestTemplateUtil, + PayInfoService payInfoService,DypayConfigMapper dypayConfigMapper) { + DYPayStrategy.dyPayUtil = dyPayUtil; + DYPayStrategy.payRestTemplateUtil = payRestTemplateUtil; + DYPayStrategy.payInfoService = payInfoService; + DYPayStrategy.dypayConfigMapper = dypayConfigMapper; + } /** * 查询支付配置 @@ -73,11 +77,11 @@ public class DYPayStrategy extends AbstractPayStrategy{ @Override public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { String result = ""; + DypayConfig dypayConfig = getDypayConfig(); + String appId = dypayConfig.getAppid(); + String backurl = dypayConfig.getBackurl(); + String salt = dypayConfig.getSalt(); try { - DypayConfig dypayConfig = getDypayConfig(); - String appId = dypayConfig.getAppid(); - String backurl = dypayConfig.getBackurl(); - String salt = dypayConfig.getSalt(); //加签验签的参数需要排序 Map params = new TreeMap<>(); //小程序APPID @@ -142,6 +146,7 @@ public class DYPayStrategy extends AbstractPayStrategy{ } //保存预下单信息 ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); + thirdInOrderVo.setAppId(appId); ThirdInOrderVo.DyThirdInOrderVo dyThirdInOrderVo = new ThirdInOrderVo.DyThirdInOrderVo(); thirdInOrderVo.setOutOrderNo(bo.getPayId()); //把order_no和order_info_token返回前端用于调起收银台 diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java index 3165f95..d99123f 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java @@ -13,10 +13,10 @@ import com.bnyer.common.core.enums.ResponseEnum; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.StringUtils; import com.bnyer.pay.bo.QueryOrderBo; +import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.constant.KSPayConstants; import com.bnyer.pay.dto.EditPayInfoNotifyDto; import com.bnyer.pay.dto.PayNotifyCheckDto; -import com.bnyer.pay.bo.UnifiedOrderBo; import com.bnyer.pay.enums.EnumPayChannel; import com.bnyer.pay.enums.EnumPayConfigStatus; import com.bnyer.pay.mapper.KspayConfigMapper; @@ -27,7 +27,6 @@ import com.bnyer.pay.utils.PayRestTemplateUtil; import com.bnyer.pay.vo.ThirdInOrderVo; import com.bnyer.pay.vo.ThirdQueryOrderVo; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; -import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.digest.DigestUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -47,17 +46,22 @@ import java.util.TreeMap; @Component public class KSPayStrategy extends AbstractPayStrategy{ - @Autowired - private KSPayUtil ksPayUtil; + private static KSPayUtil ksPayUtil; - @Autowired - private PayRestTemplateUtil payRestTemplateUtil; + private static PayRestTemplateUtil payRestTemplateUtil; - @Autowired - private PayInfoService payInfoService; + private static PayInfoService payInfoService; + + private static KspayConfigMapper kspayConfigMapper; @Autowired - private KspayConfigMapper kspayConfigMapper; + public void setBean(KSPayUtil ksPayUtil, PayRestTemplateUtil payRestTemplateUtil, + PayInfoService payInfoService, KspayConfigMapper kspayConfigMapper) { + KSPayStrategy.ksPayUtil = ksPayUtil; + KSPayStrategy.payRestTemplateUtil = payRestTemplateUtil; + KSPayStrategy.payInfoService = payInfoService; + KSPayStrategy.kspayConfigMapper = kspayConfigMapper; + } /** * 查询支付配置 @@ -75,12 +79,12 @@ public class KSPayStrategy extends AbstractPayStrategy{ @Override public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { String result = ""; + KspayConfig kspayConfig = getKspayConfig(); + String openId = SecurityContextHolder.getFhOpenId(); + String appId = kspayConfig.getAppid(); + String backurl = kspayConfig.getBackurl(); + String secret = kspayConfig.getSecret(); try { - KspayConfig kspayConfig = getKspayConfig(); - String openId = SecurityContextHolder.getFhOpenId(); - String appId = kspayConfig.getAppid(); - String backurl = kspayConfig.getBackurl(); - String secret = kspayConfig.getSecret(); //加签验签的参数需要排序 Map params = new TreeMap<>(); //小程序APPID @@ -147,6 +151,7 @@ public class KSPayStrategy extends AbstractPayStrategy{ } //保存预下单信息 ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); + thirdInOrderVo.setAppId(appId); ThirdInOrderVo.KsThirdInOrderVo ksThirdInOrderVo = new ThirdInOrderVo.KsThirdInOrderVo(); thirdInOrderVo.setOutOrderNo(bo.getPayId()); //把order_no和order_info_token返回前端用于调起收银台 diff --git a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java index 341b242..e9b868c 100644 --- a/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java +++ b/bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java @@ -45,11 +45,15 @@ import java.util.Map; @Component public class WxPayStrategy extends AbstractPayStrategy { - @Autowired - private WxPayManager wxPayManager; + private static WxPayManager wxPayManager; + + private static PayInfoService payInfoService; @Autowired - private PayInfoService payInfoService; + public void setBean(WxPayManager wxPayManager, PayInfoService payInfoService) { + WxPayStrategy.wxPayManager = wxPayManager; + WxPayStrategy.payInfoService = payInfoService; + } @Override public ThirdInOrderVo unifiedOrder(UnifiedOrderBo bo) { @@ -92,6 +96,7 @@ public class WxPayStrategy extends AbstractPayStrategy { WxPayUnifiedOrderV3Result.JsapiResult jsapiResult = wxPayUnifiedOrderV3Result.getPayInfo(TradeTypeEnum.JSAPI, wxPayConfig.getAppid(), wxPayConfig.getMchid(), wxPayService.getConfig().getPrivateKey()); //返回数据 ThirdInOrderVo thirdInOrderVo = new ThirdInOrderVo(); + thirdInOrderVo.setAppId(wxPayConfig.getAppid()); ThirdInOrderVo.WxThirdInOrderVo wxThirdInOrderVo = new ThirdInOrderVo.WxThirdInOrderVo(); wxThirdInOrderVo.setPackageValue(jsapiResult.getPackageValue()); wxThirdInOrderVo.setTimeStamp(jsapiResult.getTimeStamp()); 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 bd0096c..be46f66 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 @@ -1,10 +1,7 @@ package com.bnyer.pay.service.impl; import com.bnyer.common.core.domain.R; -import com.bnyer.common.core.enums.EnumPayStatus; -import com.bnyer.common.core.enums.EnumPayType; -import com.bnyer.common.core.enums.EnumSceneCode; -import com.bnyer.common.core.enums.EnumUserClientType; +import com.bnyer.common.core.enums.*; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.OrderUtil; import com.bnyer.common.core.utils.bean.EntityConvertUtil; @@ -111,6 +108,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { */ private AddPayInfoDto buildPayInfo(ThirdInOrderVo thirdInOrderVo, UnifiedOrderBo unifiedOrderBo, InOrderDto dto) { AddPayInfoDto addPayInfoDto = new AddPayInfoDto(); + addPayInfoDto.setAppid(thirdInOrderVo.getAppId()); addPayInfoDto.setOrderNo(dto.getOrderNo()); addPayInfoDto.setSceneCode(dto.getSceneCode()); addPayInfoDto.setRemark(dto.getRemark()); @@ -136,6 +134,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { * @return */ private UnifiedOrderBo buildUnifiedOrderDto(InOrderDto dto, int goodsType, String payAmount, String payId, HttpServletRequest request) { + String openId = ""; //当前时间 Date currDate = new Date(); //ip地址 @@ -146,6 +145,8 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { unifiedOrderBo.setCurrDate(currDate); unifiedOrderBo.setPayAmount(payAmount); unifiedOrderBo.setGoodsType(goodsType); + unifiedOrderBo.setGoodsSubject(EnumSceneCode.getSceneCodeName(dto.getSceneCode())); + unifiedOrderBo.setGoodsDesc(EnumSceneCode.getSceneCodeName(dto.getSceneCode())); return unifiedOrderBo; } 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 2/2] =?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; }