支付记录 状态
This commit is contained in:
@@ -2,30 +2,24 @@ package com.czg.controller;
|
|||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.io.IoUtil;
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.czg.CzgPayUtils;
|
import com.czg.CzgPayUtils;
|
||||||
import com.czg.entity.CzgBaseRespParams;
|
import com.czg.entity.CzgBaseRespParams;
|
||||||
import com.czg.market.service.MkDistributionUserService;
|
import com.czg.market.service.MkDistributionUserService;
|
||||||
import com.czg.market.service.TbMemberConfigService;
|
|
||||||
import com.czg.mq.PrintMqListener;
|
|
||||||
import com.czg.order.entity.OrderPayment;
|
import com.czg.order.entity.OrderPayment;
|
||||||
import com.czg.order.service.OrderInfoService;
|
import com.czg.order.service.OrderInfoService;
|
||||||
import com.czg.order.service.OrderPaymentService;
|
import com.czg.order.service.OrderPaymentService;
|
||||||
import com.czg.order.service.ShopTableOrderStatisticService;
|
|
||||||
import com.czg.service.market.service.impl.AppWxServiceImpl;
|
import com.czg.service.market.service.impl.AppWxServiceImpl;
|
||||||
import com.czg.service.market.service.impl.WxServiceImpl;
|
|
||||||
import com.czg.task.StatisticTask;
|
|
||||||
import com.czg.utils.AssertUtil;
|
import com.czg.utils.AssertUtil;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 回调
|
* 回调
|
||||||
@@ -41,32 +35,12 @@ public class NotifyController {
|
|||||||
@Resource
|
@Resource
|
||||||
private OrderInfoService orderInfoService;
|
private OrderInfoService orderInfoService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private StatisticTask statisticTask;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ShopTableOrderStatisticService shopTableOrderStatisticService;
|
|
||||||
@Resource
|
@Resource
|
||||||
private AppWxServiceImpl wxService;
|
private AppWxServiceImpl wxService;
|
||||||
@Resource
|
@Resource
|
||||||
private WxServiceImpl wxService2;
|
|
||||||
@Resource
|
|
||||||
private MkDistributionUserService distributionUserService;
|
private MkDistributionUserService distributionUserService;
|
||||||
@Resource
|
@Resource
|
||||||
private OrderPaymentService paymentService;
|
private OrderPaymentService paymentService;
|
||||||
@Resource
|
|
||||||
private TbMemberConfigService memberConfigService;
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("testOpen")
|
|
||||||
public JSONObject test1(String code) throws Exception {
|
|
||||||
JSONObject czg = JSONObject.parseObject("{\"amount\":10,\"cashFee\":0,\"channelSendNo\":\"20251113110113130266202235210653\",\"channelTradeNo\":\"4200002932202511131794511090\",\"currency\":\"cny\",\"drType\":\"00\",\"ifCode\":\"lklspay\",\"mchOrderNo\":\"WX1988788559919120384\",\"mercNo\":\"B251107293903\",\"msgType\":\"sft.trade.notify\",\"note\":\"成功\",\"payOrderId\":\"2025111319887885609440501775VT\",\"payTime\":\"2025-11-13 09:58:44\",\"payType\":\"WECHAT\",\"refundAmt\":0,\"refundState\":0,\"settlementType\":\"D1\",\"state\":\"TRADE_SUCCESS\",\"storeId\":\"S2511077140\",\"subject\":\"万维时光的店铺\",\"tradeFee\":0,\"userId\":\"oVxsc1QNZRRsWdWDmTdwPJGT9BWc\"}");
|
|
||||||
AssertUtil.isNull(czg, "支付回调数据为空");
|
|
||||||
log.info("支付回调数据为:{}", czg);
|
|
||||||
orderInfoService.payCallBackOrder(czg.getString("mchOrderNo"), czg, 0);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@RequestMapping("/payCallBack")
|
@RequestMapping("/payCallBack")
|
||||||
@@ -92,7 +66,7 @@ public class NotifyController {
|
|||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
log.warn("转账回调失败", e);
|
log.warn("转账回调失败", e);
|
||||||
}
|
}
|
||||||
return "SUCCESS";
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -116,21 +90,22 @@ public class NotifyController {
|
|||||||
String outTradeNo = plainTextJson.getString("out_trade_no");
|
String outTradeNo = plainTextJson.getString("out_trade_no");
|
||||||
String tradeState = plainTextJson.getString("trade_state");
|
String tradeState = plainTextJson.getString("trade_state");
|
||||||
String transactionId = plainTextJson.getString("transaction_id");
|
String transactionId = plainTextJson.getString("transaction_id");
|
||||||
|
OrderPayment payment = paymentService.getOne(new QueryWrapper().eq(OrderPayment::getOrderNo, outTradeNo));
|
||||||
|
payment.setPayStatus("fail");
|
||||||
if ("SUCCESS".equals(tradeState)) {
|
if ("SUCCESS".equals(tradeState)) {
|
||||||
try {
|
try {
|
||||||
OrderPayment payment = paymentService.getOne(new QueryWrapper().eq(OrderPayment::getOrderNo, outTradeNo));
|
|
||||||
payment.setTradeNumber(transactionId);
|
payment.setTradeNumber(transactionId);
|
||||||
payment.setPayTime(DateUtil.date().toLocalDateTime());
|
payment.setPayTime(DateUtil.date().toLocalDateTime());
|
||||||
payment.setRespJson(plainTextJson.toJSONString());
|
payment.setRespJson(plainTextJson.toJSONString());
|
||||||
paymentService.updateById(payment);
|
payment.setPayStatus("success");
|
||||||
distributionUserService.rechargeCallBack(payment.getShopId(), payment.getAmount(), payment.getId());
|
distributionUserService.rechargeCallBack(payment.getShopId(), payment.getAmount(), payment.getId());
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
log.error("充值回调失败", e);
|
log.error("充值回调失败", e);
|
||||||
return "SUCCESS";
|
return "SUCCESS";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
paymentService.updateById(payment);
|
||||||
return "SUCCESS";
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -142,21 +117,4 @@ public class NotifyController {
|
|||||||
orderInfoService.refundCallBackOrder(czg.getString("mchOrderNo"), czg);
|
orderInfoService.refundCallBackOrder(czg.getString("mchOrderNo"), czg);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Resource
|
|
||||||
private PrintMqListener printMqListener;
|
|
||||||
|
|
||||||
@RequestMapping("/test")
|
|
||||||
public void test(@RequestParam String id) {
|
|
||||||
shopTableOrderStatisticService.statistic(DateUtil.date());
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/anew/statistic/history/data")
|
|
||||||
public String statistic(@RequestParam String now) {
|
|
||||||
String format = DateUtil.format(new Date(), "yyyyMMddHHmm");
|
|
||||||
if (format.equals(now)) {
|
|
||||||
ThreadUtil.execAsync(() -> statisticTask.statisticHistoryData());
|
|
||||||
}
|
|
||||||
return SUCCESS;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,6 +89,10 @@ public class OrderPayment implements Serializable {
|
|||||||
* 支付相应结果 json
|
* 支付相应结果 json
|
||||||
*/
|
*/
|
||||||
private String respJson;
|
private String respJson;
|
||||||
|
/**
|
||||||
|
* 支付状态:success, fail, init
|
||||||
|
*/
|
||||||
|
private String payStatus;
|
||||||
|
|
||||||
@Column(onInsertValue = "now()")
|
@Column(onInsertValue = "now()")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
@@ -107,6 +111,7 @@ public class OrderPayment implements Serializable {
|
|||||||
this.orderNo = orderNo;
|
this.orderNo = orderNo;
|
||||||
this.authCode = authCode;
|
this.authCode = authCode;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
|
this.payStatus = "init";
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrderPayment(@NonNull Long shopId,@NonNull Long sourceId, @NotBlank String payType, @NotBlank String orderNo,
|
public OrderPayment(@NonNull Long shopId,@NonNull Long sourceId, @NotBlank String payType, @NotBlank String orderNo,
|
||||||
@@ -118,5 +123,6 @@ public class OrderPayment implements Serializable {
|
|||||||
this.authCode = authCode;
|
this.authCode = authCode;
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.relatedId = relatedId;
|
this.relatedId = relatedId;
|
||||||
|
this.payStatus = "init";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1037,9 +1037,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
}
|
}
|
||||||
payment.setTradeNumber(czgCallBackDto.getPayOrderId());
|
payment.setTradeNumber(czgCallBackDto.getPayOrderId());
|
||||||
payment.setRespJson(resultJson.toString());
|
payment.setRespJson(resultJson.toString());
|
||||||
paymentService.updateById(payment);
|
payment.setPayStatus("fail");
|
||||||
|
|
||||||
if ("TRADE_SUCCESS".equals(czgCallBackDto.getState())) {
|
if ("TRADE_SUCCESS".equals(czgCallBackDto.getState())) {
|
||||||
|
payment.setPayStatus("success");
|
||||||
if ("order".equals(payment.getPayType())) {
|
if ("order".equals(payment.getPayType())) {
|
||||||
OrderInfo orderInfo = getById(payment.getSourceId());
|
OrderInfo orderInfo = getById(payment.getSourceId());
|
||||||
if (orderInfo == null) {
|
if (orderInfo == null) {
|
||||||
@@ -1154,6 +1154,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
// distributionUserService.distribute(payment.getId(), payment.getOrderNo(), payment.getAmount(), orderInfo.getUserId(), payment.getShopId(), "recharge");
|
// distributionUserService.distribute(payment.getId(), payment.getOrderNo(), payment.getAmount(), orderInfo.getUserId(), payment.getShopId(), "recharge");
|
||||||
// }
|
// }
|
||||||
} else if ("memberPay".equals(payment.getPayType())) {
|
} else if ("memberPay".equals(payment.getPayType())) {
|
||||||
|
//购买会员
|
||||||
ShopUser shopUser = shopUserService.getById(payment.getSourceId());
|
ShopUser shopUser = shopUserService.getById(payment.getSourceId());
|
||||||
memberConfigService.joinMember(payment.getShopId(), shopUser.getUserId(), payment.getRelatedId());
|
memberConfigService.joinMember(payment.getShopId(), shopUser.getUserId(), payment.getRelatedId());
|
||||||
// 充值赠送积分
|
// 充值赠送积分
|
||||||
@@ -1164,6 +1165,7 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
distributionUserService.open(payment.getSourceId(), payment.getAmount(), payment.getShopId(), payment.getId());
|
distributionUserService.open(payment.getSourceId(), payment.getAmount(), payment.getShopId(), payment.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
paymentService.updateById(payment);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -1174,13 +1176,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
log.info("订单处理过,payment id:{}", payment.getId());
|
log.info("订单处理过,payment id:{}", payment.getId());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
paymentService.updateChain()
|
payment.setPayStatus("success");
|
||||||
.set(OrderPayment::getTradeNumber, czgCallBackDto.getRefundOrderId())
|
|
||||||
.set(OrderPayment::getRespJson, resultJson.toString())
|
|
||||||
.set(OrderPayment::getPayTime, czgCallBackDto.getRefundTime())
|
|
||||||
.where(OrderPayment::getId).eq(payment.getId())
|
|
||||||
.update();
|
|
||||||
if (!"SUCCESS".equals(czgCallBackDto.getState())) {
|
if (!"SUCCESS".equals(czgCallBackDto.getState())) {
|
||||||
|
payment.setPayStatus("fail");
|
||||||
if ("refund".equals(payment.getPayType())) {
|
if ("refund".equals(payment.getPayType())) {
|
||||||
//TODO 订单退款失败 暂不考虑回滚 填充退款原因
|
//TODO 订单退款失败 暂不考虑回滚 填充退款原因
|
||||||
updateChain()
|
updateChain()
|
||||||
@@ -1195,6 +1193,13 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
|
|||||||
.eq(ShopUserFlow::getId, payment.getSourceId()).update();
|
.eq(ShopUserFlow::getId, payment.getSourceId()).update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
paymentService.updateChain()
|
||||||
|
.set(OrderPayment::getTradeNumber, czgCallBackDto.getRefundOrderId())
|
||||||
|
.set(OrderPayment::getRespJson, resultJson.toString())
|
||||||
|
.set(OrderPayment::getPayTime, czgCallBackDto.getRefundTime())
|
||||||
|
.set(OrderPayment::getPayStatus, payment.getPayStatus())
|
||||||
|
.where(OrderPayment::getId).eq(payment.getId())
|
||||||
|
.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user