|
|
@@ -1,6 +1,12 @@
|
|
|
package com.xingxi.mq.consumer.order;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryV3Request;
|
|
|
+import com.github.binarywang.wxpay.bean.request.WxPayRefundV3Request;
|
|
|
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
|
|
|
+import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result;
|
|
|
+import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result;
|
|
|
+import com.github.binarywang.wxpay.config.WxPayConfig;
|
|
|
import com.github.binarywang.wxpay.service.WxPayService;
|
|
|
import com.xingxi.business.Order.domain.Order;
|
|
|
import com.xingxi.business.Order.domain.OrderDetail;
|
|
|
@@ -13,6 +19,7 @@ import com.xingxi.business.ProdInventory.mapper.ProdInventoryMapper;
|
|
|
import com.xingxi.common.enums.EDelFlag;
|
|
|
import com.xingxi.common.enums.EOrderDetailStatus;
|
|
|
import com.xingxi.common.enums.EOrderStatus;
|
|
|
+import com.xingxi.common.enums.ETradeState;
|
|
|
import com.xingxi.common.mq.bo.order.OrderBO;
|
|
|
import com.xingxi.common.mq.constant.OrderMqKey;
|
|
|
import com.xingxi.common.mq.core.AbstractRabbitConsumer;
|
|
|
@@ -52,6 +59,7 @@ public class OrderCloseConsumer extends AbstractRabbitConsumer {
|
|
|
|
|
|
@Autowired
|
|
|
private WxPayService wxPayService;
|
|
|
+ private WxPayConfig config;
|
|
|
|
|
|
@Bean(OrderMqKey.EDIT_QUEUE_DELAY_FOR_UNPAID)
|
|
|
@Override
|
|
|
@@ -99,18 +107,41 @@ public class OrderCloseConsumer extends AbstractRabbitConsumer {
|
|
|
spi.setDelFlag(EDelFlag.NO.getVal());
|
|
|
|
|
|
List<PaymentInfo> paymentInfoList = paymentInfoService.selectPaymentInfoList(spi);
|
|
|
-
|
|
|
+ PaymentInfo pi = null;
|
|
|
if(CollectionUtils.isNotEmpty(paymentInfoList)){
|
|
|
- PaymentInfo pi = paymentInfoList.get(0);
|
|
|
- if(pi != null) {
|
|
|
- // 查询是否支付成功 TODO
|
|
|
+// config = wxPayService.getConfig();
|
|
|
+
|
|
|
+ pi = paymentInfoList.get(0);
|
|
|
+ // 查询是否支付成功 TODO
|
|
|
+ WxPayOrderQueryV3Request wxQryRequest = new WxPayOrderQueryV3Request();
|
|
|
+ wxQryRequest.setOutTradeNo(orgOrder.getOrderNo());
|
|
|
+// wxrequest.setMchid(config.getMchId());
|
|
|
+
|
|
|
+ WxPayOrderQueryV3Result rtn = wxPayService.queryOrderV3(wxQryRequest);
|
|
|
|
|
|
+ if (ETradeState.SUCCESS.getVal().equals(rtn.getTradeState())) {
|
|
|
|
|
|
// 如果支付成功并且微信支付没有回调成功就在这里退款 TODO
|
|
|
+ WxPayRefundV3Request wxRefundRequest = new WxPayRefundV3Request();
|
|
|
+ wxRefundRequest.setOutTradeNo(orgOrder.getOrderNo());
|
|
|
+ wxRefundRequest.setOutRefundNo("REFUND" + orgOrder.getOrderNo());
|
|
|
+ wxRefundRequest.setReason(orderBO.getOrderNo() + "退款");
|
|
|
+
|
|
|
+ WxPayRefundV3Request.Amount refundAmount = new WxPayRefundV3Request.Amount();
|
|
|
+ refundAmount.setRefund(orgOrder.getPayAmount().intValue()); // 分
|
|
|
+ refundAmount.setTotal(orgOrder.getPayAmount().intValue()); // 分
|
|
|
+ refundAmount.setCurrency("CNY");
|
|
|
+
|
|
|
+ wxRefundRequest.setAmount(refundAmount);
|
|
|
+ WxPayRefundV3Result refundV3Result = wxPayService.refundV3(wxRefundRequest);
|
|
|
+
|
|
|
+ // TODO 增加退款表,保存退款信息
|
|
|
|
|
|
|
|
|
- return true;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
// 取消主订单
|
|
|
@@ -154,13 +185,16 @@ public class OrderCloseConsumer extends AbstractRabbitConsumer {
|
|
|
// prodInventoryMapper.
|
|
|
}
|
|
|
|
|
|
-// // 关闭支付信息
|
|
|
-// PaymentInfo upi = new PaymentInfo();
|
|
|
-// upi.setOrderId(orgOrder.getOrderId());
|
|
|
-// upi.setTradeState(EOrderStatus.CANCELLED.getVal());
|
|
|
-// upi.setUpdateUser(opName);
|
|
|
-// upi.setUpdateTime(nowDate);
|
|
|
-// paymentInfoService.updateOrderStatusByOrderId(upi);
|
|
|
+ // 关闭支付信息
|
|
|
+ if (pi != null) {
|
|
|
+ PaymentInfo upi = new PaymentInfo();
|
|
|
+ upi.setPayId(pi.getPayId());
|
|
|
+ upi.setOrderId(orgOrder.getOrderId());
|
|
|
+ upi.setTradeState(EOrderStatus.CANCELLED.getVal());
|
|
|
+ upi.setUpdateUser(opName);
|
|
|
+ upi.setUpdateTime(nowDate);
|
|
|
+ paymentInfoService.updatePaymentInfo(upi);
|
|
|
+ }
|
|
|
|
|
|
log.info("订单关闭MQ,订单【{}】数据处理完成.", orgOrder.getOrderNo());
|
|
|
return true;
|