mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-10 06:19:06 +00:00
perf 网关同步记录优化
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
- 微信V3支付接口
|
- 微信V3支付接口
|
||||||
- x 拆分网关同步相关代码
|
- x 拆分网关同步相关代码
|
||||||
- x 记录网关同步记录
|
- x 记录网关同步记录
|
||||||
- 重构支付消息通知结构
|
- 重构支付消息通知结构, 支持多种消息中间件
|
||||||
- x 保存各通道的支付单
|
- x 保存各通道的支付单
|
||||||
- 钱包支持设置开通时的默认金额
|
- 钱包支持设置开通时的默认金额
|
||||||
- 储值卡多卡支付和退款演示
|
- 储值卡多卡支付和退款演示
|
||||||
|
@@ -8,25 +8,25 @@ package cn.bootx.platform.daxpay.code.pay;
|
|||||||
*/
|
*/
|
||||||
public interface PaySyncStatus {
|
public interface PaySyncStatus {
|
||||||
|
|
||||||
/** -1 不需要同步 */
|
/** 不需要同步 */
|
||||||
String NOT_SYNC = "not_sync";
|
String NOT_SYNC = "not_sync";
|
||||||
|
|
||||||
/** 1 远程支付成功 */
|
/** 远程支付成功 */
|
||||||
String TRADE_SUCCESS = "trade_success";
|
String TRADE_SUCCESS = "trade_success";
|
||||||
|
|
||||||
/** 2 交易创建,等待买家付款 */
|
/** 交易创建,等待买家付款 */
|
||||||
String WAIT_BUYER_PAY = "wait_buyer_pay";
|
String WAIT_BUYER_PAY = "wait_buyer_pay";
|
||||||
|
|
||||||
/** 3 已关闭 */
|
/** 已关闭 */
|
||||||
String TRADE_CLOSED = "trade_closed";
|
String TRADE_CLOSED = "trade_closed";
|
||||||
|
|
||||||
/** 4 已退款 */
|
/** 已退款 */
|
||||||
String TRADE_REFUND = "trade_refund";
|
String TRADE_REFUND = "trade_refund";
|
||||||
|
|
||||||
/** 5 查询不到订单 */
|
/** 查询不到订单 */
|
||||||
String NOT_FOUND = "not_found";
|
String NOT_FOUND = "not_found";
|
||||||
|
|
||||||
/** 4 查询失败 */
|
/** 查询失败 */
|
||||||
String FAIL = "fail";
|
String FAIL = "fail";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
@Tag(name = "支付同步记录")
|
@Tag(name = "支付同步记录")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/")
|
@RequestMapping("/pay/sync")
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class PaySyncRecordController {
|
public class PaySyncRecordController {
|
||||||
private final PaySyncRecordService syncRecordService;
|
private final PaySyncRecordService syncRecordService;
|
||||||
|
@@ -66,6 +66,7 @@ public class AlipaySyncService {
|
|||||||
}
|
}
|
||||||
catch (AlipayApiException e) {
|
catch (AlipayApiException e) {
|
||||||
log.error("查询订单失败:", e);
|
log.error("查询订单失败:", e);
|
||||||
|
paySyncResult.setMsg(e.getErrMsg());
|
||||||
}
|
}
|
||||||
return paySyncResult;
|
return paySyncResult;
|
||||||
}
|
}
|
||||||
|
@@ -80,6 +80,7 @@ public class WeChatPaySyncService {
|
|||||||
}
|
}
|
||||||
catch (RuntimeException e) {
|
catch (RuntimeException e) {
|
||||||
log.error("查询订单失败:", e);
|
log.error("查询订单失败:", e);
|
||||||
|
paySyncResult.setMsg(e.getMessage());
|
||||||
}
|
}
|
||||||
return paySyncResult;
|
return paySyncResult;
|
||||||
}
|
}
|
||||||
|
@@ -60,6 +60,9 @@ public class PaySyncRecord extends MpCreateEntity implements EntityBaseFunction
|
|||||||
@DbComment("同步状态")
|
@DbComment("同步状态")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@DbComment("错误消息")
|
||||||
|
private String msg;
|
||||||
|
|
||||||
/** 同步时间 */
|
/** 同步时间 */
|
||||||
@DbComment("同步时间")
|
@DbComment("同步时间")
|
||||||
private LocalDateTime syncTime;
|
private LocalDateTime syncTime;
|
||||||
|
@@ -13,6 +13,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@@ -30,6 +32,7 @@ public class PaySyncRecordService {
|
|||||||
/**
|
/**
|
||||||
* 记录同步记录
|
* 记录同步记录
|
||||||
*/
|
*/
|
||||||
|
@Transactional(propagation= Propagation.REQUIRES_NEW)
|
||||||
public void saveRecord(PaySyncResult paySyncResult, Payment payment){
|
public void saveRecord(PaySyncResult paySyncResult, Payment payment){
|
||||||
PaySyncRecord paySyncRecord = new PaySyncRecord()
|
PaySyncRecord paySyncRecord = new PaySyncRecord()
|
||||||
.setPaymentId(payment.getId())
|
.setPaymentId(payment.getId())
|
||||||
@@ -38,6 +41,7 @@ public class PaySyncRecordService {
|
|||||||
.setPayChannel(payment.getAsyncPayChannel())
|
.setPayChannel(payment.getAsyncPayChannel())
|
||||||
.setSyncInfo(paySyncResult.getJson())
|
.setSyncInfo(paySyncResult.getJson())
|
||||||
.setStatus(paySyncResult.getPaySyncStatus())
|
.setStatus(paySyncResult.getPaySyncStatus())
|
||||||
|
.setMsg(paySyncResult.getMsg())
|
||||||
.setSyncTime(LocalDateTime.now());
|
.setSyncTime(LocalDateTime.now());
|
||||||
syncRecordManager.save(paySyncRecord);
|
syncRecordManager.save(paySyncRecord);
|
||||||
}
|
}
|
||||||
|
@@ -30,4 +30,7 @@ public class PaySyncResult {
|
|||||||
/** 网关返回对象的json字符串 */
|
/** 网关返回对象的json字符串 */
|
||||||
private String json;
|
private String json;
|
||||||
|
|
||||||
|
/** 错误提示 */
|
||||||
|
private String msg;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -77,10 +77,10 @@ public class PaySyncService {
|
|||||||
syncPayStrategy.initPayParam(payment);
|
syncPayStrategy.initPayParam(payment);
|
||||||
// 同步
|
// 同步
|
||||||
PaySyncResult paySyncResult = syncPayStrategy.doSyncPayStatusHandler();
|
PaySyncResult paySyncResult = syncPayStrategy.doSyncPayStatusHandler();
|
||||||
// 处理
|
|
||||||
this.resultHandler(paySyncResult,payment);
|
|
||||||
// 记录
|
// 记录
|
||||||
paySyncRecordService.saveRecord(paySyncResult,payment);
|
paySyncRecordService.saveRecord(paySyncResult,payment);
|
||||||
|
// 处理
|
||||||
|
this.resultHandler(paySyncResult,payment);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -24,6 +24,12 @@ public class PayNotifyRecordDto extends BaseDto implements Serializable {
|
|||||||
@Schema(description = "支付号")
|
@Schema(description = "支付号")
|
||||||
private Long paymentId;
|
private Long paymentId;
|
||||||
|
|
||||||
|
@Schema(description = "商户编码")
|
||||||
|
private String mchCode;
|
||||||
|
|
||||||
|
@Schema(description = "商户应用编码")
|
||||||
|
private String mchAppCode;
|
||||||
|
|
||||||
@Schema(description = "通知消息")
|
@Schema(description = "通知消息")
|
||||||
private String notifyInfo;
|
private String notifyInfo;
|
||||||
|
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
package cn.bootx.platform.daxpay.dto.sync;
|
package cn.bootx.platform.daxpay.dto.sync;
|
||||||
|
|
||||||
import cn.bootx.mybatis.table.modify.annotation.DbComment;
|
|
||||||
import cn.bootx.mybatis.table.modify.mybatis.mysq.annotation.DbMySqlFieldType;
|
import cn.bootx.mybatis.table.modify.mybatis.mysq.annotation.DbMySqlFieldType;
|
||||||
import cn.bootx.mybatis.table.modify.mybatis.mysq.constants.MySqlFieldTypeEnum;
|
import cn.bootx.mybatis.table.modify.mybatis.mysq.constants.MySqlFieldTypeEnum;
|
||||||
import cn.bootx.platform.common.core.rest.dto.BaseDto;
|
import cn.bootx.platform.common.core.rest.dto.BaseDto;
|
||||||
@@ -25,37 +24,40 @@ import java.time.LocalDateTime;
|
|||||||
public class PaySyncRecordDto extends BaseDto {
|
public class PaySyncRecordDto extends BaseDto {
|
||||||
|
|
||||||
/** 支付记录id */
|
/** 支付记录id */
|
||||||
@DbComment("支付记录id")
|
@Schema(description = "支付记录id")
|
||||||
private Long paymentId;
|
private Long paymentId;
|
||||||
|
|
||||||
/** 商户编码 */
|
/** 商户编码 */
|
||||||
@DbComment("商户编码")
|
@Schema(description = "商户编码")
|
||||||
private String mchCode;
|
private String mchCode;
|
||||||
|
|
||||||
/** 商户应用编码 */
|
/** 商户应用编码 */
|
||||||
@DbComment("商户应用编码")
|
@Schema(description = "商户应用编码")
|
||||||
private String mchAppCode;
|
private String mchAppCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付通道
|
* 支付通道
|
||||||
* @see PayChannelEnum#getCode()
|
* @see PayChannelEnum#getCode()
|
||||||
*/
|
*/
|
||||||
@DbComment("支付通道")
|
@Schema(description = "支付通道")
|
||||||
private String payChannel;
|
private String payChannel;
|
||||||
|
|
||||||
/** 通知消息 */
|
/** 通知消息 */
|
||||||
@DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
|
@DbMySqlFieldType(MySqlFieldTypeEnum.LONGTEXT)
|
||||||
@DbComment("通知消息")
|
@Schema(description = "通知消息")
|
||||||
private String syncInfo;
|
private String syncInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步状态
|
* 同步状态
|
||||||
* @see PaySyncStatus#WAIT_BUYER_PAY
|
* @see PaySyncStatus#WAIT_BUYER_PAY
|
||||||
*/
|
*/
|
||||||
@DbComment("同步状态")
|
@Schema(description = "同步状态")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "错误消息")
|
||||||
|
private String msg;
|
||||||
|
|
||||||
/** 同步时间 */
|
/** 同步时间 */
|
||||||
@DbComment("同步时间")
|
@Schema(description = "同步时间")
|
||||||
private LocalDateTime syncTime;
|
private LocalDateTime syncTime;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user