Browse Source

支付优化

feature-1.1
wuxicheng 3 years ago
parent
commit
6fdd866d28
  1. 2
      bnyer-api/bnyer-api-order/src/main/java/com/bnyer/order/api/remote/RemoteVipOrderService.java
  2. 6
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java
  3. 3
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/factory/PayFactory.java
  4. 30
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/AliPayStrategy.java
  5. 31
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/DYPayStrategy.java
  6. 33
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/KSPayStrategy.java
  7. 11
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/design/strategy/WxPayStrategy.java
  8. 9
      bnyer-services/bnyer-pay/src/main/java/com/bnyer/pay/service/impl/UnifiedPayServiceImpl.java

2
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<List<VipOrderVo>> getVipOrderList(@RequestBody QueryVipOrderDto dto);
}

6
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java

@ -133,7 +133,11 @@ public class VipOrderServiceImpl extends ServiceImpl<VipOrderMapper, VipOrder> 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());

3
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<String, IPayStrategy> strategyMap = new ImmutableMap.Builder<String, IPayStrategy>()
.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();

30
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<AlipayConfig> alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper<AlipayConfig>().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<AlipayConfig> alipayConfigList = alipayConfigMapper.selectList(new LambdaQueryWrapper<AlipayConfig>()
// .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();

31
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<String, Object> 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返回前端用于调起收银台

33
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<String, Object> 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返回前端用于调起收银台

11
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());

9
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;
}

Loading…
Cancel
Save