zoujiajian 1 жил өмнө
parent
commit
59f8598a30

+ 2 - 0
wholesale/src/main/java/com/yhlxj/service/order/WebWholesaleOrderDonService.java

@@ -19,4 +19,6 @@ public interface WebWholesaleOrderDonService {
 	AliPayParams zfbUnifiedPay(AlipayOrderDonReq re) throws Exception;
 
 	void aliPayNotify(Map<String, String> params) throws Exception;
+
+	void closeOrderStatus(long wholesaleId, Long orderId);
 }

+ 65 - 1
wholesale/src/main/java/com/yhlxj/service/order/impl/WebWholesaleOrderDonServiceImpl.java

@@ -2,7 +2,12 @@ package com.yhlxj.service.order.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.domain.AlipayTradeWapPayModel;
 import com.alipay.api.internal.util.AlipaySignature;
+import com.alipay.api.request.AlipayTradeQueryRequest;
+import com.alipay.api.response.AlipayTradeQueryResponse;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
@@ -10,7 +15,6 @@ import com.cyksj.common.snowflake.Sequence;
 import com.cyksj.common.util.Codec;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.StringUtil;
-import com.cyksj.enums.GatewayApiCode;
 import com.yhlxj.dao.mapper.*;
 import com.yhlxj.dao.model.dto.AliPayParams;
 import com.yhlxj.dao.model.dto.WebWholesaleConfigDto;
@@ -20,6 +24,7 @@ import com.yhlxj.dao.model.request.OrderAttach;
 import com.yhlxj.dao.model.request.WebOrderPayRequest;
 import com.yhlxj.service.order.WebWholesaleOrderDonService;
 import com.yhlxj.service.pay.AliPayCommonService;
+import com.yhlxj.service.zfb.AliPayClientFactory;
 import com.yhlxj.service.zfb.BaseZfbConfig;
 import com.yhlxj.service.zfb.ZfbProductCode;
 import lombok.RequiredArgsConstructor;
@@ -27,6 +32,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -149,6 +155,22 @@ public class WebWholesaleOrderDonServiceImpl implements WebWholesaleOrderDonServ
 		unifiedHandlerOrderNotify(orderDon);
 	}
 
+	@Override
+	public void closeOrderStatus(long wholesaleId, Long orderId) {
+		WebWholesaleOrderDon orderDon = orderDonMapper.selectById(orderId);
+		if (orderDon == null) {
+			return;
+		}
+		if (!orderDon.getUserId().equals(wholesaleId)) {
+			return;
+		}
+		log.info("关闭订单 orderId:{}", orderId);
+		if (WebWholesaleOrderDon.Status.noPayment.equals(orderDon.getStatus())) {
+			//调用微信、支付宝第三方接口查询订单是否支付
+			WebWholesaleOrderDon.Status status = isHasPaid(orderDon);
+		}
+	}
+
 	/**
 	 * 处理订单统一回调
 	 */
@@ -218,4 +240,46 @@ public class WebWholesaleOrderDonServiceImpl implements WebWholesaleOrderDonServ
 		}
 		return String.format("%s%s", 0, skuMonth);
 	}
+
+	private WebWholesaleOrderDon.Status isHasPaid(WebWholesaleOrderDon orderDon) {
+		try {
+			AlipayTradeQueryResponse zfbOrderDetail = getZfbOrderDetail(orderDon.getShopId(), orderDon.getOrderNo());
+			if (zfbOrderDetail != null) {
+				String tradeStatus = zfbOrderDetail.getTradeStatus();
+				if ("TRADE_SUCCESS".equals(tradeStatus)) {
+					orderDon.setStatus(WebWholesaleOrderDon.Status.complete);
+					orderDon.setTransactionId(zfbOrderDetail.getTradeNo());
+					Date sendPayDate = zfbOrderDetail.getSendPayDate();
+					orderDon.setPayTime(sendPayDate);
+					//买家支付宝账号
+					String buyerId = Optional.ofNullable(zfbOrderDetail.getBuyerUserId()).orElse(zfbOrderDetail.getBuyerOpenId());
+					orderDon.setBuyerId(buyerId);
+					unifiedHandlerOrderNotify(orderDon);
+					orderDonMapper.updateById(orderDon);
+				}
+			}
+		} catch (Exception e) {
+
+		}
+		return orderDon.getStatus();
+	}
+
+	public AlipayTradeQueryResponse getZfbOrderDetail(String shopId, String orderNo) throws AlipayApiException {
+		AlipayClient alipayClient = AliPayClientFactory.getAlipayClient(shopId);
+		AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
+		AlipayTradeWapPayModel bizModel = new AlipayTradeWapPayModel();
+		bizModel.setOutTradeNo(orderNo);
+		request.setBizModel(bizModel);
+		AlipayTradeQueryResponse response;
+		ShopConfig shopConfig = shopConfigMapper.selectOne(Wrappers.lambdaQuery(ShopConfig.class).eq(ShopConfig::getAppId, shopId));
+		if (shopConfig != null && shopConfig.getIsCert()) {
+			response = alipayClient.certificateExecute(request);
+		} else {
+			response = alipayClient.execute(request);
+		}
+		if (response.isSuccess()) {
+			return response;
+		}
+		return null;
+	}
 }

+ 10 - 0
wholesale/src/main/java/com/yhlxj/web/controller/manage/WholesaleCodeController.java

@@ -150,6 +150,16 @@ public class WholesaleCodeController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(wholesaleOrderDon);
 	}
 
+	/**
+	 * 关闭订单
+	 */
+	@PutMapping("/close/order/{orderId}")
+	public Result<WebWholesaleOrderDon> closeOrderStatus(@PathVariable Long orderId) {
+		long wholesaleId = StpUtil.getLoginIdAsLong();
+		webWholesaleOrderDonService.closeOrderStatus(wholesaleId, orderId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
 	/**
 	 * 获取支付宝回调参数
 	 */

+ 2 - 2
wholesale/src/main/resources/application-pre.yml

@@ -127,8 +127,8 @@ wechat:
   oldAppid: wxd58016eee53b6558
   appid: wx6cbc2de2a55e5579
   secret: 2ab6340e7787ab24de9f29094dee9d24
-  domain: https://nf.video/8082/api/
-  notifyDomain: https://phoenix.nf.video/8082/api/
+  domain: https://mj1.galaxydvd.com/8085/api/
+  notifyDomain: https://mj1.galaxydvd.com/8085/api/
   #默认微信商户
   shopid: 1634772026
   shopKey: p2B8BAKi2V3PgMDSSez82V67aIvMKBt5