|
@@ -1,11 +1,14 @@
|
|
|
package com.zanxiang.sdk.service.pay;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.zanxiang.common.constant.Constants;
|
|
|
import com.zanxiang.common.domain.ResultMap;
|
|
|
import com.zanxiang.common.enums.DeleteEnum;
|
|
|
import com.zanxiang.common.enums.HttpStatusEnum;
|
|
|
+import com.zanxiang.common.enums.PayDeviceEnum;
|
|
|
import com.zanxiang.common.exception.BaseException;
|
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
|
+import com.zanxiang.mybatis.entity.Order;
|
|
|
import com.zanxiang.mybatis.entity.OrderPayParam;
|
|
|
import com.zanxiang.sdk.constant.WxPayConstants;
|
|
|
import com.zanxiang.sdk.domain.bo.ProductPayAttachParamBO;
|
|
@@ -14,9 +17,7 @@ import com.zanxiang.sdk.domain.bo.WxPayConfigBO;
|
|
|
import com.zanxiang.sdk.domain.dto.GamePayWayDTO;
|
|
|
import com.zanxiang.sdk.domain.dto.PayApplicationDTO;
|
|
|
import com.zanxiang.sdk.domain.dto.PayMerchantDTO;
|
|
|
-import com.zanxiang.sdk.service.OrderPayParamService;
|
|
|
-import com.zanxiang.sdk.service.PayApplicationService;
|
|
|
-import com.zanxiang.sdk.service.PayMerchantService;
|
|
|
+import com.zanxiang.sdk.service.*;
|
|
|
import com.zanxiang.sdk.service.api.WxApiService;
|
|
|
import com.zanxiang.sdk.util.HttpUtil;
|
|
|
import com.zanxiang.sdk.util.WxPayUtil;
|
|
@@ -92,6 +93,12 @@ public class WxPayService extends PayBaseService {
|
|
|
@Autowired
|
|
|
private PayApplicationService payApplicationService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PayBoxService payBoxService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderService orderService;
|
|
|
+
|
|
|
@Override
|
|
|
public ResultMap create(ProductPayParamBO product) {
|
|
|
this.attach = product.getAttach();
|
|
@@ -100,20 +107,31 @@ public class WxPayService extends PayBaseService {
|
|
|
//支付方式
|
|
|
int payDevice = product.getPayDevice().intValue();
|
|
|
//不同的支付途径
|
|
|
+ ResultMap resultMap;
|
|
|
switch (payDevice) {
|
|
|
case 1:
|
|
|
//PC
|
|
|
- return this.pcPay(product);
|
|
|
+ resultMap = this.pcPay(product);
|
|
|
+ break;
|
|
|
case 2:
|
|
|
//H5
|
|
|
- return this.h5Pay(product);
|
|
|
+ resultMap = this.h5Pay(product);
|
|
|
+ break;
|
|
|
case 4:
|
|
|
case 6:
|
|
|
//小程序
|
|
|
- return this.miniAppPay(product);
|
|
|
+ resultMap = this.miniAppPay(product);
|
|
|
+ break;
|
|
|
default:
|
|
|
throw new RuntimeException("未知支付方式");
|
|
|
}
|
|
|
+ //更新订单商户信息
|
|
|
+ orderService.update(new LambdaUpdateWrapper<Order>()
|
|
|
+ .set(Order::getMerchantNo, config.getMchId())
|
|
|
+ .set(Order::getMerchantName, config.getMachName())
|
|
|
+ .eq(Order::getOrderId, product.getOutTradeNo()));
|
|
|
+ //返回支付参数
|
|
|
+ return resultMap;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -289,15 +307,25 @@ public class WxPayService extends PayBaseService {
|
|
|
}
|
|
|
|
|
|
private void configInit(GamePayWayDTO gamePayWayDTO) {
|
|
|
- //todo : 如果是关联了盒子, 则不存在商户id, 得根据盒子查询商户信息
|
|
|
//商户信息
|
|
|
- PayMerchantDTO payMerchantDTO = payMerchantService.getByMerchantNo(gamePayWayDTO.getMerchantNo());
|
|
|
- WxPayConfigBO payConfigBO = JsonUtil.toObj(payMerchantDTO.getPayConfig(), WxPayConfigBO.class);
|
|
|
+ PayMerchantDTO payMerchantDTO;
|
|
|
//支付应用信息
|
|
|
- PayApplicationDTO payApplicationDTO = payApplicationService.getPayApplication(gamePayWayDTO.getAppId());
|
|
|
+ PayApplicationDTO payApplicationDTO;
|
|
|
+ //小程序支付和客服支付, 关联了盒子
|
|
|
+ if (Objects.equals(PayDeviceEnum.APPLET_PAY.getPayDeviceId(), gamePayWayDTO.getPayDeviceId())
|
|
|
+ || Objects.equals(PayDeviceEnum.CUSTOM_PAY.getPayDeviceId(), gamePayWayDTO.getPayDeviceId())) {
|
|
|
+ payMerchantDTO = payBoxService.getMerchantByBoxId(gamePayWayDTO.getPayBoxId());
|
|
|
+ payApplicationDTO = payApplicationService.getPayApplicationByPayBoxId(gamePayWayDTO.getPayBoxId());
|
|
|
+ } else {
|
|
|
+ payMerchantDTO = payMerchantService.getByMerchantNo(gamePayWayDTO.getMerchantNo());
|
|
|
+ payApplicationDTO = payApplicationService.getPayApplicationByAppId(gamePayWayDTO.getAppId());
|
|
|
+ }
|
|
|
+ //支付配置参数
|
|
|
+ WxPayConfigBO payConfigBO = JsonUtil.toObj(payMerchantDTO.getPayConfig(), WxPayConfigBO.class);
|
|
|
payConfigBO.setAppId(payApplicationDTO.getAppId());
|
|
|
payConfigBO.setAppSecret(payApplicationDTO.getAppSecret());
|
|
|
payConfigBO.setAppletType(payApplicationDTO.getType());
|
|
|
+ payConfigBO.setMachName(payMerchantDTO.getMerchantName());
|
|
|
//赋值配置信息
|
|
|
this.config = payConfigBO;
|
|
|
log.error("初始化的支付配置信息, config : {}", JsonUtil.toString(this.config));
|