|
|
@@ -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;
|
|
|
+ }
|
|
|
}
|