|
@@ -3,15 +3,19 @@ package com.zanxiang.sdk.service.Impl;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.zanxiang.common.domain.ResultMap;
|
|
|
import com.zanxiang.common.enums.OrderStateEnum;
|
|
|
+import com.zanxiang.common.enums.PayDeviceEnum;
|
|
|
import com.zanxiang.common.exception.BaseException;
|
|
|
import com.zanxiang.common.utils.SpringUtils;
|
|
|
+import com.zanxiang.module.web.util.IpUtil;
|
|
|
import com.zanxiang.mybatis.entity.Order;
|
|
|
+import com.zanxiang.mybatis.entity.OrderPayParam;
|
|
|
import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
|
|
|
import com.zanxiang.sdk.domain.params.ProductPayParam;
|
|
|
import com.zanxiang.sdk.domain.params.UserData;
|
|
|
import com.zanxiang.sdk.domain.vo.PayParamVO;
|
|
|
import com.zanxiang.sdk.enums.PayTypeEnum;
|
|
|
import com.zanxiang.sdk.service.GamePayWayService;
|
|
|
+import com.zanxiang.sdk.service.OrderPayParamService;
|
|
|
import com.zanxiang.sdk.service.OrderPayService;
|
|
|
import com.zanxiang.sdk.service.OrderService;
|
|
|
import com.zanxiang.sdk.service.pay.PayBaseService;
|
|
@@ -39,29 +43,71 @@ public class OrderPayServiceImpl implements OrderPayService {
|
|
|
@Autowired
|
|
|
public GamePayWayService gamePayWayService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private OrderPayParamService orderPayParamService;
|
|
|
+
|
|
|
@Override
|
|
|
- public PayParamVO getPayParam(Long orderId) {
|
|
|
+ public PayParamVO getPayParam(String code, Long orderId, HttpServletRequest request) {
|
|
|
+ OrderPayParam orderPayParam = orderPayParamService.getOne(new LambdaQueryWrapper<OrderPayParam>()
|
|
|
+ .eq(OrderPayParam::getOrderId, orderId));
|
|
|
+ if (orderPayParam != null) {
|
|
|
+ return PayParamVO.builder()
|
|
|
+ .orderId(orderPayParam.getOrderId())
|
|
|
+ .amount(orderPayParam.getAmount())
|
|
|
+ .describe("购买" + orderPayParam.getAmount() + "元档充值")
|
|
|
+ .appId(orderPayParam.getAppId())
|
|
|
+ .payParam(orderPayParam.getPayParam())
|
|
|
+ .build();
|
|
|
+ }
|
|
|
Order order = orderService.getById(orderId);
|
|
|
if (order == null) {
|
|
|
throw new BaseException("参数错误, 订单信息不存在");
|
|
|
}
|
|
|
+ //创建支付参数
|
|
|
+ ProductPayParamBO bo = ProductPayParamBO.builder()
|
|
|
+ .gameId(order.getGameId().toString())
|
|
|
+ .userId(order.getUserId())
|
|
|
+ .payDevice(order.getPayDevice())
|
|
|
+ .deviceSystem(order.getDeviceSystem())
|
|
|
+ .spbillCreateIp(IpUtil.getRealIp(request))
|
|
|
+ .outTradeNo(order.getOrderId())
|
|
|
+ .payWay(2)
|
|
|
+ .code(code)
|
|
|
+ .build();
|
|
|
+ //调起支付
|
|
|
+ PayTypeEnum payTypeEnum = PayTypeEnum.getByPayType(bo.getPayWay());
|
|
|
+ PayBaseService service = SpringUtils.getBean(payTypeEnum.getClazz());
|
|
|
+ service.payCreate(bo);
|
|
|
+ //重新查询
|
|
|
+ orderPayParam = orderPayParamService.getOne(new LambdaQueryWrapper<OrderPayParam>()
|
|
|
+ .eq(OrderPayParam::getOrderId, orderId));
|
|
|
+ if (orderPayParam == null) {
|
|
|
+ throw new BaseException("支付参数获取失败");
|
|
|
+ }
|
|
|
return PayParamVO.builder()
|
|
|
- .orderId(order.getOrderId())
|
|
|
- .amount(order.getAmount())
|
|
|
- .describe("购买" + order.getAmount() + "元档充值")
|
|
|
- .payParam(order.getPayParam())
|
|
|
+ .orderId(orderPayParam.getOrderId())
|
|
|
+ .amount(orderPayParam.getAmount())
|
|
|
+ .describe("购买" + orderPayParam.getAmount() + "元档充值")
|
|
|
+ .appId(orderPayParam.getAppId())
|
|
|
+ .payParam(orderPayParam.getPayParam())
|
|
|
.build();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Integer getAppletPayDevice(UserData userData) {
|
|
|
- return 2;
|
|
|
+ return 6;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public ResultMap payCreate(ProductPayParam product, UserData userData) {
|
|
|
//创建订单
|
|
|
orderService.createOrder(product, userData);
|
|
|
+ //判断游戏类型
|
|
|
+ if (Objects.equals(PayDeviceEnum.MINI_APP_PAY.getCode(), product.getPayDevice())
|
|
|
+ || Objects.equals(PayDeviceEnum.CUSTOM_PAY.getCode(), product.getPayDevice())) {
|
|
|
+ log.error("单独生成订单, 不下单");
|
|
|
+ return ResultMap.ok(product.getOrderId());
|
|
|
+ }
|
|
|
//创建支付参数
|
|
|
ProductPayParamBO bo = new ProductPayParamBO();
|
|
|
bo.setGameId(userData.getGameId().toString());
|