|
|
@ -20,10 +20,7 @@ import com.bnyer.order.api.remote.RemoteVipOrderService; |
|
|
import com.bnyer.pay.bean.bo.QueryOrderBo; |
|
|
import com.bnyer.pay.bean.bo.QueryOrderBo; |
|
|
import com.bnyer.pay.bean.bo.RefundBo; |
|
|
import com.bnyer.pay.bean.bo.RefundBo; |
|
|
import com.bnyer.pay.bean.bo.UnifiedOrderBo; |
|
|
import com.bnyer.pay.bean.bo.UnifiedOrderBo; |
|
|
import com.bnyer.pay.bean.dto.AddPayInfoDto; |
|
|
import com.bnyer.pay.bean.dto.*; |
|
|
import com.bnyer.pay.bean.dto.QueryOrderDto; |
|
|
|
|
|
import com.bnyer.pay.bean.dto.RefundDto; |
|
|
|
|
|
import com.bnyer.pay.bean.dto.UnifiedOrderDto; |
|
|
|
|
|
import com.bnyer.pay.bean.vo.*; |
|
|
import com.bnyer.pay.bean.vo.*; |
|
|
import com.bnyer.pay.constant.KSPayConstants; |
|
|
import com.bnyer.pay.constant.KSPayConstants; |
|
|
import com.bnyer.pay.design.factory.PayFactory; |
|
|
import com.bnyer.pay.design.factory.PayFactory; |
|
|
@ -40,7 +37,6 @@ import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
|
import java.math.BigDecimal; |
|
|
import java.math.BigDecimal; |
|
|
import java.util.Date; |
|
|
import java.util.Date; |
|
|
import java.util.Objects; |
|
|
import java.util.Objects; |
|
|
@ -66,11 +62,10 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { |
|
|
/** |
|
|
/** |
|
|
* 统一下单,并生成支付订单 |
|
|
* 统一下单,并生成支付订单 |
|
|
* @param dto |
|
|
* @param dto |
|
|
* @param request |
|
|
|
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public UnifiedOrderVo unifiedOrder(UnifiedOrderDto dto, HttpServletRequest request) { |
|
|
public UnifiedOrderVo unifiedOrder(UnifiedOrderExtDto dto) { |
|
|
//下单前校验
|
|
|
//下单前校验
|
|
|
checkData(dto); |
|
|
checkData(dto); |
|
|
//支付金额
|
|
|
//支付金额
|
|
|
@ -108,7 +103,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { |
|
|
throw new ServiceException("sceneCode未匹配上对应支付场景"); |
|
|
throw new ServiceException("sceneCode未匹配上对应支付场景"); |
|
|
} |
|
|
} |
|
|
//构建统一下单请求实体
|
|
|
//构建统一下单请求实体
|
|
|
UnifiedOrderBo unifiedOrderBo = buildUnifiedOrderDto(dto,goodsDesc, goodsType,payAmount,payId, request); |
|
|
UnifiedOrderBo unifiedOrderBo = buildUnifiedOrderDto(dto,goodsDesc, goodsType,payAmount,payId); |
|
|
//下单,获取第三方返回信息
|
|
|
//下单,获取第三方返回信息
|
|
|
IPayStrategy payStrategy = PayFactory.getInstance().getConcreteStrategy(dto.getPayType()); |
|
|
IPayStrategy payStrategy = PayFactory.getInstance().getConcreteStrategy(dto.getPayType()); |
|
|
if (Objects.isNull(payStrategy)){ |
|
|
if (Objects.isNull(payStrategy)){ |
|
|
@ -141,7 +136,7 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { |
|
|
* @param dto |
|
|
* @param dto |
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
private AddPayInfoDto buildPayInfo(ThirdUnifiedOrderVo thirdUnifiedOrderVo, UnifiedOrderBo unifiedOrderBo, UnifiedOrderDto dto) { |
|
|
private AddPayInfoDto buildPayInfo(ThirdUnifiedOrderVo thirdUnifiedOrderVo, UnifiedOrderBo unifiedOrderBo, UnifiedOrderExtDto dto) { |
|
|
AddPayInfoDto addPayInfoDto = new AddPayInfoDto(); |
|
|
AddPayInfoDto addPayInfoDto = new AddPayInfoDto(); |
|
|
addPayInfoDto.setAppid(thirdUnifiedOrderVo.getAppId()); |
|
|
addPayInfoDto.setAppid(thirdUnifiedOrderVo.getAppId()); |
|
|
addPayInfoDto.setOrderNo(dto.getOrderNo()); |
|
|
addPayInfoDto.setOrderNo(dto.getOrderNo()); |
|
|
@ -168,10 +163,9 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { |
|
|
* @param goodsType 商品类型 |
|
|
* @param goodsType 商品类型 |
|
|
* @param payAmount 不同支付场景下的支付金额 |
|
|
* @param payAmount 不同支付场景下的支付金额 |
|
|
* @param payId 内部系统支付单号 |
|
|
* @param payId 内部系统支付单号 |
|
|
* @param request 请求request用于获取ip地址 |
|
|
|
|
|
* @return |
|
|
* @return |
|
|
*/ |
|
|
*/ |
|
|
private UnifiedOrderBo buildUnifiedOrderDto(UnifiedOrderDto dto, String goodsDesc, int goodsType, String payAmount, String payId, HttpServletRequest request) { |
|
|
private UnifiedOrderBo buildUnifiedOrderDto(UnifiedOrderExtDto dto, String goodsDesc, int goodsType, String payAmount, String payId) { |
|
|
UserInfoVo userInfo = SecurityUtils.getUserInfo(); |
|
|
UserInfoVo userInfo = SecurityUtils.getUserInfo(); |
|
|
String openId = dto.getOpenId(); |
|
|
String openId = dto.getOpenId(); |
|
|
if (StringUtils.isBlank(openId)){ |
|
|
if (StringUtils.isBlank(openId)){ |
|
|
@ -179,12 +173,10 @@ public class UnifiedPayServiceImpl implements UnifiedPayService { |
|
|
} |
|
|
} |
|
|
//当前时间
|
|
|
//当前时间
|
|
|
Date currDate = new Date(); |
|
|
Date currDate = new Date(); |
|
|
//ip地址
|
|
|
|
|
|
String ip = IpUtils.getIpAddr(request); |
|
|
|
|
|
UnifiedOrderBo unifiedOrderBo = EntityConvertUtil.copy(dto, UnifiedOrderBo.class); |
|
|
UnifiedOrderBo unifiedOrderBo = EntityConvertUtil.copy(dto, UnifiedOrderBo.class); |
|
|
unifiedOrderBo.setOpenId(openId); |
|
|
unifiedOrderBo.setOpenId(openId); |
|
|
unifiedOrderBo.setPayId(payId); |
|
|
unifiedOrderBo.setPayId(payId); |
|
|
unifiedOrderBo.setIp(ip); |
|
|
unifiedOrderBo.setIp(dto.getIp()); |
|
|
unifiedOrderBo.setCurrDate(currDate); |
|
|
unifiedOrderBo.setCurrDate(currDate); |
|
|
unifiedOrderBo.setPayAmount(payAmount); |
|
|
unifiedOrderBo.setPayAmount(payAmount); |
|
|
unifiedOrderBo.setGoodsType(goodsType); |
|
|
unifiedOrderBo.setGoodsType(goodsType); |
|
|
|