ref 支付宝支付替换为原生SDK方式, 调整一些数据库字段必填和长度属性

This commit is contained in:
bootx
2024-06-16 22:57:30 +08:00
parent 72ac03f842
commit f3703a7ced
44 changed files with 228 additions and 205 deletions

View File

@@ -78,17 +78,11 @@
<version>${daxpay.version}</version>
</dependency>
<!-- 支付宝支付 -->
<!-- 支付宝官方SDK -->
<dependency>
<groupId>com.github.javen205</groupId>
<artifactId>IJPay-AliPay</artifactId>
<version>${IJPay.version}</version>
<exclusions>
<exclusion>
<artifactId>fastjson</artifactId>
<groupId>com.alibaba</groupId>
</exclusion>
</exclusions>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>${alipay.version}</version>
</dependency>
<!-- 微信支付 ijpay -->

View File

@@ -13,5 +13,5 @@ import lombok.experimental.Accessors;
public class AllocationLocal {
/** 通道分账号 */
private String outAllocationNo;
private String outAllocNo;
}

View File

@@ -3,15 +3,18 @@ package cn.daxpay.single.service.core.channel.alipay.service;
import cn.daxpay.single.code.AllocReceiverTypeEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.payment.allocation.entity.AllocationReceiver;
import cn.hutool.core.util.StrUtil;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayResponse;
import com.alipay.api.domain.AlipayTradeRoyaltyRelationBindModel;
import com.alipay.api.domain.AlipayTradeRoyaltyRelationUnbindModel;
import com.alipay.api.domain.RoyaltyEntity;
import com.alipay.api.request.AlipayTradeRoyaltyRelationBindRequest;
import com.alipay.api.request.AlipayTradeRoyaltyRelationUnbindRequest;
import com.alipay.api.response.AlipayTradeRoyaltyRelationBindResponse;
import com.alipay.api.response.AlipayTradeRoyaltyRelationUnbindResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -33,6 +36,7 @@ import static cn.daxpay.single.code.AllocReceiverTypeEnum.*;
@Service
@RequiredArgsConstructor
public class AliPayAllocationReceiverService {
private final AliPayConfigService aliPayConfigService;
/**
* 校验
@@ -47,7 +51,8 @@ public class AliPayAllocationReceiverService {
* 绑定关系
*/
@SneakyThrows
public void bind(AllocationReceiver allocationReceiver){
public void bind(AllocationReceiver allocationReceiver, AliPayConfig aliPayConfig){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayTradeRoyaltyRelationBindModel model = new AlipayTradeRoyaltyRelationBindModel();
model.setOutRequestNo(String.valueOf(allocationReceiver.getId()));
@@ -60,7 +65,9 @@ public class AliPayAllocationReceiverService {
// 不报错视为同步成功
model.setReceiverList(Collections.singletonList(entity));
AlipayTradeRoyaltyRelationBindResponse response = AliPayApi.tradeRoyaltyRelationBind(model);
AlipayTradeRoyaltyRelationBindRequest request = new AlipayTradeRoyaltyRelationBindRequest();
request.setBizModel(model);
AlipayTradeRoyaltyRelationBindResponse response = alipayClient.execute(request);
this.verifyErrorMsg(response);
}
@@ -68,7 +75,8 @@ public class AliPayAllocationReceiverService {
* 解绑关系
*/
@SneakyThrows
public void unbind(AllocationReceiver allocationReceiver){
public void unbind(AllocationReceiver allocationReceiver, AliPayConfig aliPayConfig){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayTradeRoyaltyRelationUnbindModel model = new AlipayTradeRoyaltyRelationUnbindModel();
model.setOutRequestNo(String.valueOf(allocationReceiver.getId()));
@@ -78,7 +86,9 @@ public class AliPayAllocationReceiverService {
entity.setAccount(allocationReceiver.getReceiverAccount());
model.setReceiverList(Collections.singletonList(entity));
AlipayTradeRoyaltyRelationUnbindResponse response = AliPayApi.tradeRoyaltyRelationUnBind(model);
AlipayTradeRoyaltyRelationUnbindRequest request = new AlipayTradeRoyaltyRelationUnbindRequest();
request.setBizModel(model);
AlipayTradeRoyaltyRelationUnbindResponse response = alipayClient.execute(request);
System.out.println(response);
// 如果出现分账方不存在也视为成功
if (Objects.equals(response.getSubCode(), AliPayCode.USER_NOT_EXIST)) {

View File

@@ -6,6 +6,7 @@ import cn.daxpay.single.code.AllocDetailResultEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.common.local.PaymentContextLocal;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.allocation.entity.AllocOrder;
import cn.daxpay.single.service.core.order.allocation.entity.AllocOrderDetail;
import cn.daxpay.single.service.core.payment.sync.result.AllocRemoteSyncResult;
@@ -13,12 +14,13 @@ import cn.daxpay.single.util.PayUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayResponse;
import com.alipay.api.domain.*;
import com.alipay.api.request.AlipayTradeOrderSettleQueryRequest;
import com.alipay.api.request.AlipayTradeOrderSettleRequest;
import com.alipay.api.response.AlipayTradeOrderSettleQueryResponse;
import com.alipay.api.response.AlipayTradeOrderSettleResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -41,12 +43,13 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class AliPayAllocationService {
private final AliPayConfigService aliPayConfigService;
/**
* 发起分账
*/
@SneakyThrows
public void allocation(AllocOrder allocOrder, List<AllocOrderDetail> orderDetails){
public void allocation(AllocOrder allocOrder, List<AllocOrderDetail> orderDetails, AliPayConfig config){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
// 分账主体参数
AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel();
model.setOutRequestNo(allocOrder.getAllocNo());
@@ -64,11 +67,12 @@ public class AliPayAllocationService {
})
.collect(Collectors.toList());
model.setRoyaltyParameters(royaltyParameters);
AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model);
AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
request.setBizModel(model);
AlipayTradeOrderSettleResponse response = alipayClient.execute(request);
// 需要写入到分账订单中
String settleNo = response.getSettleNo();
PaymentContextLocal.get().getAllocationInfo().setOutAllocationNo(settleNo);
PaymentContextLocal.get().getAllocationInfo().setOutAllocNo(settleNo);
this.verifyErrorMsg(response);
}
@@ -76,7 +80,8 @@ public class AliPayAllocationService {
* 分账完结
*/
@SneakyThrows
public void finish(AllocOrder allocOrder, List<AllocOrderDetail> orderDetails ){
public void finish(AllocOrder allocOrder, List<AllocOrderDetail> orderDetails, AliPayConfig config){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
// 分账主体参数
AlipayTradeOrderSettleModel model = new AlipayTradeOrderSettleModel();
model.setOutRequestNo(String.valueOf(allocOrder.getAllocNo()));
@@ -98,7 +103,9 @@ public class AliPayAllocationService {
})
.collect(Collectors.toList());
model.setRoyaltyParameters(royaltyParameters);
AlipayTradeOrderSettleResponse response = AliPayApi.tradeOrderSettleToResponse(model);
AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest();
request.setBizModel(model);
AlipayTradeOrderSettleResponse response = alipayClient.execute(request);
this.verifyErrorMsg(response);
}
@@ -106,13 +113,14 @@ public class AliPayAllocationService {
* 分账状态同步
*/
@SneakyThrows
public AllocRemoteSyncResult sync(AllocOrder allocOrder, List<AllocOrderDetail> allocOrderDetails){
public AllocRemoteSyncResult sync(AllocOrder allocOrder, List<AllocOrderDetail> allocOrderDetails, AliPayConfig config){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayTradeOrderSettleQueryModel model = new AlipayTradeOrderSettleQueryModel();
model.setTradeNo(allocOrder.getOutOrderNo());
model.setOutRequestNo(allocOrder.getAllocNo());
AlipayTradeOrderSettleQueryRequest request = new AlipayTradeOrderSettleQueryRequest();
request.setBizModel(model);
AlipayTradeOrderSettleQueryResponse response = AliPayApi.execute(request);
AlipayTradeOrderSettleQueryResponse response = alipayClient.execute(request);
// 验证
this.verifyErrorMsg(response);
Map<String, AllocOrderDetail> detailMap = allocOrderDetails.stream()

View File

@@ -50,7 +50,6 @@ public class AliPayCallbackService {
private final RefundCallbackService refundCallbackService;
/**
* 回调处理入口
*/

View File

@@ -3,14 +3,17 @@ package cn.daxpay.single.service.core.channel.alipay.service;
import cn.daxpay.single.code.PaySyncStatusEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.pay.entity.PayOrder;
import cn.daxpay.single.service.core.payment.sync.result.PayRemoteSyncResult;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeCancelModel;
import com.alipay.api.domain.AlipayTradeCloseModel;
import com.alipay.api.request.AlipayTradeCancelRequest;
import com.alipay.api.request.AlipayTradeCloseRequest;
import com.alipay.api.response.AlipayTradeCancelResponse;
import com.alipay.api.response.AlipayTradeCloseResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -29,6 +32,8 @@ import java.util.Objects;
public class AliPayCloseService {
private final AliPaySyncService aliPaySyncService;
private final AliPayConfigService aliPayConfigService;
/**
* 关闭支付 此处使用交易关闭接口
* 交易关闭: 只有订单在未支付的状态下才可以进行关闭, 商户不需要额外申请就有此接口的权限
@@ -37,16 +42,18 @@ public class AliPayCloseService {
* 2. 如果返回"当前交易状态不支持此操作", 同步网关支付状态, 判断网关是否已经被关闭
*
*/
public void close(PayOrder payOrder) {
public void close(PayOrder payOrder, AliPayConfig config) {
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayTradeCloseModel model = new AlipayTradeCloseModel();
model.setOutTradeNo(payOrder.getOrderNo());
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
request.setBizModel(model);
try {
AlipayTradeCloseResponse response = AliPayApi.tradeCloseToResponse(model);
AlipayTradeCloseResponse response = alipayClient.execute(request);
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
// 如果返回"当前交易状态不支持此操作", 同步网关支付状态, 判断网关是否已经被关闭
if (Objects.equals(response.getSubCode(),AliPayCode.ACQ_TRADE_STATUS_ERROR)){
if (this.syncStatus(payOrder)){
if (this.syncStatus(payOrder, config)){
return;
}
}
@@ -67,17 +74,20 @@ public class AliPayCloseService {
* 交易撤销: 如果用户支付成功,会将此订单资金退还给用户. 限制时间为1天过了24小时该接口无法再使用。
* 可以视为一个特殊的接口, 需要专门签约这个接口的权限
*/
public void cancel(PayOrder payOrder) {
public void cancel(PayOrder payOrder, AliPayConfig config) {
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayTradeCancelModel model = new AlipayTradeCancelModel();
model.setOutTradeNo(payOrder.getOrderNo());
AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
request.setBizModel(model);
try {
AlipayTradeCancelResponse response = AliPayApi.tradeCancelToResponse(model);
AlipayTradeCancelResponse response = alipayClient.execute(request);;
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
// 如果返回"当前交易状态不支持此操作", 同步网关支付状态, 判断网关是否已经被关闭
if (Objects.equals(response.getSubCode(),AliPayCode.ACQ_TRADE_STATUS_ERROR)){
if (this.syncStatus(payOrder)){
if (this.syncStatus(payOrder, config)){
return;
}
}
@@ -99,8 +109,8 @@ public class AliPayCloseService {
/**
* 关闭失败后, 获取支付网关的状态, 如果是关闭返回true, 其他情况抛出异常
*/
private boolean syncStatus(PayOrder payOrder){
PayRemoteSyncResult gatewaySyncResult = aliPaySyncService.syncPayStatus(payOrder);
private boolean syncStatus(PayOrder payOrder, AliPayConfig config){
PayRemoteSyncResult gatewaySyncResult = aliPaySyncService.syncPayStatus(payOrder,config);
// 已经关闭
if (Objects.equals(gatewaySyncResult.getSyncStatus(), PaySyncStatusEnum.CLOSED)){
return true;

View File

@@ -1,6 +1,5 @@
package cn.daxpay.single.service.core.channel.alipay.service;
import cn.bootx.platform.common.core.exception.BizException;
import cn.bootx.platform.common.core.exception.DataNotExistException;
import cn.bootx.platform.common.core.rest.dto.LabelValue;
import cn.daxpay.single.exception.pay.PayFailureException;
@@ -12,12 +11,9 @@ import cn.daxpay.single.service.core.system.config.service.PlatformConfigService
import cn.daxpay.single.service.param.channel.alipay.AliPayConfigParam;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.util.CharsetUtil;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.DefaultAlipayClient;
import com.ijpay.alipay.AliPayApiConfig;
import com.ijpay.alipay.AliPayApiConfigKit;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -126,41 +122,4 @@ public class AliPayConfigService {
}
return new DefaultAlipayClient(config);
}
/**
* 初始化IJPay服务
*/
@SneakyThrows
public void initConfig(AliPayConfig alipayConfig) {
AliPayApiConfig aliPayApiConfig;
// 公钥
if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_KEY)) {
aliPayApiConfig = AliPayApiConfig.builder()
.setAppId(alipayConfig.getAppId())
.setPrivateKey(alipayConfig.getPrivateKey())
.setAliPayPublicKey(alipayConfig.getAlipayPublicKey())
.setCharset(CharsetUtil.UTF_8)
.setServiceUrl(alipayConfig.getServerUrl())
.setSignType(alipayConfig.getSignType())
.build();
}
// 证书
else if (Objects.equals(alipayConfig.getAuthType(), AliPayCode.AUTH_TYPE_CART)) {
aliPayApiConfig = AliPayApiConfig.builder()
.setAppId(alipayConfig.getAppId())
.setPrivateKey(alipayConfig.getPrivateKey())
.setAppCertContent(alipayConfig.getAppCert())
.setAliPayCertContent(alipayConfig.getAlipayCert())
.setAliPayRootCertContent(alipayConfig.getAlipayRootCert())
.setCharset(CharsetUtil.UTF_8)
.setServiceUrl(alipayConfig.getServerUrl())
.setSignType(alipayConfig.getSignType())
.buildByCertContent();
}
else {
throw new BizException("支付宝认证方式不可为空");
}
AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
}
}

View File

@@ -29,8 +29,6 @@ import static cn.daxpay.single.service.code.AliPayCode.AUTH_TYPE_KEY;
@RequiredArgsConstructor
public class AliPayNoticeReceiverService {
private final AllocationCallbackService allocationCallbackService;
private final AliPayConfigService aliPayConfigService;
/**

View File

@@ -1,7 +1,6 @@
package cn.daxpay.single.service.core.channel.alipay.service;
import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
import cn.daxpay.single.code.PayChannelEnum;
import cn.daxpay.single.code.ReconcileTradeEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.service.code.AliPayCode;
@@ -9,6 +8,7 @@ import cn.daxpay.single.service.code.ReconcileFileTypeEnum;
import cn.daxpay.single.service.common.local.PaymentContextLocal;
import cn.daxpay.single.service.core.channel.alipay.dao.AliReconcileBillDetailManager;
import cn.daxpay.single.service.core.channel.alipay.dao.AliReconcileBillTotalManager;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.channel.alipay.entity.AliReconcileBillDetail;
import cn.daxpay.single.service.core.channel.alipay.entity.AliReconcileBillTotal;
import cn.daxpay.single.service.core.order.reconcile.dao.ReconcileFileManager;
@@ -23,12 +23,13 @@ import cn.hutool.core.text.csv.CsvUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayDataDataserviceBillDownloadurlQueryModel;
import com.ijpay.alipay.AliPayApi;
import com.alipay.api.request.AlipayDataDataserviceBillDownloadurlQueryRequest;
import com.alipay.api.response.AlipayDataDataserviceBillDownloadurlQueryResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.dromara.x.file.storage.core.FileInfo;
@@ -57,6 +58,8 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class AliPayReconcileService {
private final AliPayConfigService aliPayConfigService;
private final AliReconcileBillDetailManager reconcileBillDetailManager;
private final AliReconcileBillTotalManager reconcileBillTotalManager;
@@ -71,16 +74,19 @@ public class AliPayReconcileService {
*
* @param date 对账日期 yyyy-MM-dd 格式
* @param recordOrder 对账单对象
* @param config
*/
@SneakyThrows
@Transactional(rollbackFor = Exception.class)
public void downAndSave(String date, ReconcileOrder recordOrder){
public void downAndSave(String date, ReconcileOrder recordOrder, AliPayConfig config){
try {
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
AlipayDataDataserviceBillDownloadurlQueryModel model = new AlipayDataDataserviceBillDownloadurlQueryModel();
model.setBillDate(date);
model.setBillType("trade");
val response = AliPayApi.billDownloadUrlQueryToResponse(model);
AlipayDataDataserviceBillDownloadurlQueryRequest request = new AlipayDataDataserviceBillDownloadurlQueryRequest();
request.setBizModel(model);
AlipayDataDataserviceBillDownloadurlQueryResponse response = alipayClient.execute(request);
// 判断返回结果
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
log.error("获取支付宝对账单失败: {}", response.getSubMsg());

View File

@@ -6,12 +6,14 @@ import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.common.context.ErrorInfoLocal;
import cn.daxpay.single.service.common.context.RefundLocal;
import cn.daxpay.single.service.common.local.PaymentContextLocal;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.refund.entity.RefundOrder;
import cn.daxpay.single.util.PayUtil;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeRefundResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -29,22 +31,27 @@ import java.util.Objects;
@RequiredArgsConstructor
public class AliPayRefundService {
private final AliPayConfigService aliPayConfigService;
/**
* 退款, 调用支付宝退款
*/
public void refund(RefundOrder refundOrder) {
public void refund(RefundOrder refundOrder, AliPayConfig config) {
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(config);
RefundLocal refundInfo = PaymentContextLocal.get().getRefundInfo();
ErrorInfoLocal errorInfo = PaymentContextLocal.get().getErrorInfo();
AlipayTradeRefundModel refundModel = new AlipayTradeRefundModel();
refundModel.setOutTradeNo(refundOrder.getOrderNo());
refundModel.setOutRequestNo(refundOrder.getRefundNo());
AlipayTradeRefundModel model = new AlipayTradeRefundModel();
model.setOutTradeNo(refundOrder.getOrderNo());
model.setOutRequestNo(refundOrder.getRefundNo());
// 金额转换
String refundAmount = PayUtil.conversionAmount(refundOrder.getAmount()).toString();
refundModel.setRefundAmount(refundAmount);
model.setRefundAmount(refundAmount);
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizModel(model);
// 设置退款信息
try {
AlipayTradeRefundResponse response = AliPayApi.tradeRefundToResponse(refundModel);
AlipayTradeRefundResponse response = alipayClient.execute(request);
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
errorInfo.setErrorMsg(response.getSubMsg());
errorInfo.setErrorCode(response.getCode());

View File

@@ -21,7 +21,6 @@ import com.alipay.api.AlipayResponse;
import com.alipay.api.domain.*;
import com.alipay.api.request.*;
import com.alipay.api.response.*;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,20 +1,23 @@
package cn.daxpay.single.service.core.channel.alipay.service;
import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
import cn.daxpay.single.code.RefundSyncStatusEnum;
import cn.daxpay.single.code.PaySyncStatusEnum;
import cn.daxpay.single.code.RefundSyncStatusEnum;
import cn.daxpay.single.service.code.AliPayCode;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.order.pay.entity.PayOrder;
import cn.daxpay.single.service.core.order.refund.entity.RefundOrder;
import cn.daxpay.single.service.core.payment.sync.result.PayRemoteSyncResult;
import cn.daxpay.single.service.core.payment.sync.result.RefundRemoteSyncResult;
import cn.hutool.json.JSONUtil;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeFastpayRefundQueryModel;
import com.alipay.api.domain.AlipayTradeQueryModel;
import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -35,6 +38,8 @@ import static cn.daxpay.single.service.code.AliPayCode.GMT_REFUND_PAY;
@Service
@RequiredArgsConstructor
public class AliPaySyncService {
private final AliPayConfigService aliPayConfigService;
/**
* 与支付宝网关同步状态, 退款状态有
* 1 远程支付成功
@@ -43,18 +48,21 @@ public class AliPaySyncService {
* 4 查询不到
* 5 查询失败
*/
public PayRemoteSyncResult syncPayStatus(PayOrder payOrder) {
public PayRemoteSyncResult syncPayStatus(PayOrder payOrder, AliPayConfig aliPayConfig){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
PayRemoteSyncResult syncResult = new PayRemoteSyncResult().setSyncStatus(PaySyncStatusEnum.FAIL);
// 查询
try {
AlipayTradeQueryModel queryModel = new AlipayTradeQueryModel();
queryModel.setOutTradeNo(payOrder.getOrderNo());
AlipayTradeQueryResponse response = AliPayApi.tradeQueryToResponse(queryModel);
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
model.setOutTradeNo(payOrder.getOrderNo());
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
request.setBizModel(model);
AlipayTradeQueryResponse response = alipayClient.execute(request);
String tradeStatus = response.getTradeStatus();
syncResult.setSyncInfo(JSONUtil.toJsonStr(response));
// 设置网关订单号
syncResult.setOutOrderNo(response.getTradeNo());
// 支付完成 TODO 部分退款也在这个地方, 但无法进行区分, 需要借助对账进行处理
// 支付完成 部分退款无法进行区分, 需要借助对账进行处理
if (Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_SUCCESS) || Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_FINISHED)) {
// 支付完成时间
LocalDateTime payTime = LocalDateTimeUtil.of(response.getSendPayDate());
@@ -96,17 +104,20 @@ public class AliPaySyncService {
* 退款同步查询
* 注意: 支付宝退款没有网关订单号, 网关订单号是支付单的
*/
public RefundRemoteSyncResult syncRefundStatus(RefundOrder refundOrder) {
public RefundRemoteSyncResult syncRefundStatus(RefundOrder refundOrder){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient();
RefundRemoteSyncResult syncResult = new RefundRemoteSyncResult().setSyncStatus(RefundSyncStatusEnum.FAIL);
try {
AlipayTradeFastpayRefundQueryModel queryModel = new AlipayTradeFastpayRefundQueryModel();
AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel();
// 退款请求号
queryModel.setOutRequestNo(String.valueOf(refundOrder.getRefundNo()));
model.setOutRequestNo(String.valueOf(refundOrder.getRefundNo()));
// 商户订单号
queryModel.setOutTradeNo(String.valueOf(refundOrder.getOrderNo()));
model.setOutTradeNo(String.valueOf(refundOrder.getOrderNo()));
// 设置返回退款完成时间
queryModel.setQueryOptions(Collections.singletonList(GMT_REFUND_PAY));
AlipayTradeFastpayRefundQueryResponse response = AliPayApi.tradeRefundQueryToResponse(queryModel);
model.setQueryOptions(Collections.singletonList(GMT_REFUND_PAY));
AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
request.setBizModel(model);
AlipayTradeFastpayRefundQueryResponse response = alipayClient.execute(request);
syncResult.setSyncInfo(JSONUtil.toJsonStr(response));
// 失败
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {

View File

@@ -12,11 +12,13 @@ import cn.daxpay.single.util.OrderNoGenerateUtil;
import cn.daxpay.single.util.PayUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.util.StrUtil;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayFundAccountQueryModel;
import com.alipay.api.domain.AlipayFundTransToaccountTransferModel;
import com.alipay.api.request.AlipayFundAccountQueryRequest;
import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.response.AlipayFundAccountQueryResponse;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -32,15 +34,20 @@ import static cn.daxpay.single.service.code.AliPayCode.QUERY_ACCOUNT_TYPE;
@RequiredArgsConstructor
public class AliPayTransferService {
private final AliPayConfigService aliPayConfigService;
/**
* 余额查询接口
*/
@SneakyThrows
public void queryAccountAmount(AliPayConfig config) {
public void queryAccountAmount(AliPayConfig config, AliPayConfig aliPayConfig){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayFundAccountQueryModel model = new AlipayFundAccountQueryModel();
model.setAccountType(QUERY_ACCOUNT_TYPE);
model.setAlipayUserId(config.getAlipayUserId());
AlipayFundAccountQueryResponse response = AliPayApi.accountQueryToResponse(model, null);
AlipayFundAccountQueryRequest request = new AlipayFundAccountQueryRequest();
request.setBizModel(model);
AlipayFundAccountQueryResponse response = alipayClient.execute(request);
System.out.println(response);
}
@@ -48,17 +55,20 @@ public class AliPayTransferService {
* 转账接口
*/
@SneakyThrows
public void transfer(TransferOrder order) {
public void transfer(TransferOrder order, AliPayConfig aliPayConfig){
AlipayClient alipayClient = aliPayConfigService.getAlipayClient(aliPayConfig);
AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
model.setAmount(PayUtil.conversionAmount(order.getAmount()).toString());
model.setOutBizNo(OrderNoGenerateUtil.transfer());
model.setPayeeType(order.getPayeeType());
model.setPayeeAccount(order.getPayeeAccount());
model.setPayerShowName(order.getPayerShowName());
// 标题
// 标题需要用附加方式传输进去
model.setExtParam(StrUtil.format("{order_title: '{}'}", order.getTitle()));
model.setRemark(order.getReason());
AlipayFundTransToaccountTransferResponse response = AliPayApi.transferToResponse(model);
AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
request.setBizModel(model);
AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);
if (!Objects.equals(AliPayCode.SUCCESS, response.getCode())) {
log.error("网关返回退款失败: {}", response.getSubMsg());
throw new PayFailureException(response.getSubMsg());
@@ -70,8 +80,7 @@ public class AliPayTransferService {
String payDate = response.getPayDate();
if (StrUtil.isNotBlank(payDate)){
LocalDateTime time = LocalDateTimeUtil.parse(payDate, DatePattern.NORM_DATETIME_PATTERN);
transferInfo.setFinishTime(time)
.setStatus(TransferStatusEnum.SUCCESS);
transferInfo.setFinishTime(time).setStatus(TransferStatusEnum.SUCCESS);
}
}
}

View File

@@ -49,7 +49,7 @@ public class AllocOrder extends MpBaseEntity implements EntityBaseFunction<Alloc
* 通道分账号
*/
@DbMySqlIndex(comment = "通道分账号索引")
@DbColumn(comment = "通道分账号", length = 150, isNull = false)
@DbColumn(comment = "通道分账号", length = 150)
private String outAllocNo;
/** 支付订单ID */
@@ -99,7 +99,7 @@ public class AllocOrder extends MpBaseEntity implements EntityBaseFunction<Alloc
* 状态
* @see AllocOrderStatusEnum
*/
@DbColumn(comment = "状态", length = 20, isNull = false)
@DbColumn(comment = "状态", length = 30, isNull = false)
private String status;
/**

View File

@@ -1,6 +1,7 @@
package cn.daxpay.single.service.core.order.allocation.service;
import cn.daxpay.single.code.AllocDetailResultEnum;
import cn.daxpay.single.code.AllocOrderResultEnum;
import cn.daxpay.single.code.AllocOrderStatusEnum;
import cn.daxpay.single.code.PayOrderAllocStatusEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
@@ -159,10 +160,11 @@ public class AllocOrderService {
.setOutOrderNo(payOrder.getOutOrderNo())
.setTitle(payOrder.getTitle())
.setAllocNo(OrderNoGenerateUtil.allocation())
.setBizAllocNo(param.getBizAllocationNo())
.setBizAllocNo(param.getBizAllocNo())
.setChannel(payOrder.getChannel())
.setDescription(param.getDescription())
.setStatus(AllocOrderStatusEnum.ALLOCATION_PROCESSING.getCode())
.setResult(AllocOrderResultEnum.ALL_PENDING.getCode())
.setAmount(sumAmount)
.setNotifyUrl(param.getNotifyUrl())
.setAttach(param.getAttach())

View File

@@ -56,7 +56,7 @@ public class ReconcileDiff extends MpBaseEntity implements EntityBaseFunction<Re
private String tradeNo;
/** 通道交易号 */
@DbColumn(comment = "通道交易号", length = 150, isNull = false)
@DbColumn(comment = "通道交易号", length = 150)
private String outTradeNo;
/** 交易时间 */

View File

@@ -29,34 +29,34 @@ public class ReconcileOutTrade extends MpCreateEntity implements EntityBaseFunct
/** 关联对账订单ID */
@DbMySqlIndex(comment = "对账单ID索引")
@DbColumn(comment = "关联对账订单ID")
@DbColumn(comment = "关联对账订单ID", isNull = false)
private Long reconcileId;
/** 商品名称 */
@DbColumn(comment = "商品名称")
@DbColumn(comment = "商品名称", length = 100, isNull = false)
private String title;
/** 交易金额 */
@DbColumn(comment = "交易金额")
@DbColumn(comment = "交易金额", length = 15, isNull = false)
private Integer amount;
/**
* 交易类型
* @see PaymentTypeEnum
*/
@DbColumn(comment = "交易类型")
@DbColumn(comment = "交易类型", length = 20, isNull = false)
private String type;
/** 本地交易号 */
@DbColumn(comment = "本地交易号")
@DbColumn(comment = "本地交易号", length = 32, isNull = false)
private String tradeNo;
/** 通道交易号 - 支付宝/微信的订单号 */
@DbColumn(comment = "通道交易号")
@DbColumn(comment = "通道交易号", length = 150)
private String outTradeNo;
/** 交易时间 */
@DbColumn(comment = "交易时间")
@DbColumn(comment = "交易时间", isNull = false)
private LocalDateTime tradeTime;

View File

@@ -76,7 +76,7 @@ public class AllocationService {
*/
public AllocationResult allocation(AllocationParam param) {
// 判断是否已经有分账订单
AllocOrder allocOrder = allocationOrderManager.findByBizAllocNo(param.getBizAllocationNo())
AllocOrder allocOrder = allocationOrderManager.findByBizAllocNo(param.getBizAllocNo())
.orElse(null);
if (Objects.nonNull(allocOrder)){
// 重复分账
@@ -130,10 +130,10 @@ public class AllocationService {
// TODO 返回异常处理
}
// 网关分账号
String outAllocationNo = PaymentContextLocal.get()
String outAllocNo = PaymentContextLocal.get()
.getAllocationInfo()
.getOutAllocationNo();
order.setOutAllocNo(outAllocationNo);
.getOutAllocNo();
order.setOutAllocNo(outAllocNo);
allocationOrderManager.updateById(order);
return new AllocationResult()
.setAllocNo(order.getAllocNo())

View File

@@ -52,7 +52,6 @@ public class AliPayAllocationStrategy extends AbsAllocationStrategy {
if (Objects.equals(aliPayConfig.getAllocation(),false)){
throw new PayFailureException("支付宝支付配置不支持分账");
}
aliPayConfigService.initConfig(this.aliPayConfig);
}
/**
@@ -60,7 +59,7 @@ public class AliPayAllocationStrategy extends AbsAllocationStrategy {
*/
@Override
public void allocation() {
aliPayAllocationService.allocation(this.getAllocOrder(), this.getAllocOrderDetails());
aliPayAllocationService.allocation(this.getAllocOrder(), this.getAllocOrderDetails(), this.aliPayConfig);
}
/**
@@ -68,7 +67,7 @@ public class AliPayAllocationStrategy extends AbsAllocationStrategy {
*/
@Override
public void finish() {
aliPayAllocationService.finish(this.getAllocOrder(), this.getAllocOrderDetails());
aliPayAllocationService.finish(this.getAllocOrder(), this.getAllocOrderDetails(), this.aliPayConfig);
}
/**
@@ -76,7 +75,7 @@ public class AliPayAllocationStrategy extends AbsAllocationStrategy {
*/
@Override
public AllocRemoteSyncResult doSync() {
return aliPayAllocationService.sync(this.getAllocOrder(), this.getAllocOrderDetails());
return aliPayAllocationService.sync(this.getAllocOrder(), this.getAllocOrderDetails(), this.aliPayConfig);
}
}

View File

@@ -58,7 +58,6 @@ public class AliPayAllocationReceiverStrategy extends AbsAllocationReceiverStrat
if (Objects.equals(aliPayConfig.getAllocation(),false)){
throw new PayFailureException("微信支付配置不支持分账");
}
payConfigService.initConfig(this.aliPayConfig);
}
/**
@@ -69,7 +68,7 @@ public class AliPayAllocationReceiverStrategy extends AbsAllocationReceiverStrat
if (!receiverService.validation(this.getAllocationReceiver())){
throw new PayFailureException("分账接收者参数未通过校验");
}
receiverService.bind(this.getAllocationReceiver());
receiverService.bind(this.getAllocationReceiver(), this.aliPayConfig);
}
/**
@@ -80,6 +79,6 @@ public class AliPayAllocationReceiverStrategy extends AbsAllocationReceiverStrat
if (!receiverService.validation(this.getAllocationReceiver())){
throw new PayFailureException("分账参数未通过校验");
}
receiverService.unbind(this.getAllocationReceiver());
receiverService.unbind(this.getAllocationReceiver(), this.aliPayConfig);
}
}

View File

@@ -27,6 +27,8 @@ public class AliPayCancelStrategy extends AbsPayCancelStrategy {
private final AliPayCloseService aliPayCloseService;
private AliPayConfig config;
@Override
public String getChannel() {
return PayChannelEnum.ALI.getCode();
@@ -37,8 +39,7 @@ public class AliPayCancelStrategy extends AbsPayCancelStrategy {
*/
@Override
public void doBeforeCancelHandler() {
AliPayConfig config = alipayConfigService.getConfig();
alipayConfigService.initConfig(config);
this.config = alipayConfigService.getConfig();
}
/**
@@ -46,6 +47,6 @@ public class AliPayCancelStrategy extends AbsPayCancelStrategy {
*/
@Override
public void doCancelHandler() {
aliPayCloseService.cancel(this.getOrder());
aliPayCloseService.cancel(this.getOrder(),this.config);
}
}

View File

@@ -27,6 +27,8 @@ public class AliPayCloseStrategy extends AbsPayCloseStrategy {
private final AliPayCloseService aliPayCloseService;
private AliPayConfig alipayConfig;
@Override
public String getChannel() {
return PayChannelEnum.ALI.getCode();
@@ -37,8 +39,7 @@ public class AliPayCloseStrategy extends AbsPayCloseStrategy {
*/
@Override
public void doBeforeCloseHandler() {
AliPayConfig config = alipayConfigService.getConfig();
alipayConfigService.initConfig(config);
this.alipayConfig = alipayConfigService.getConfig();
}
/**
@@ -46,6 +47,6 @@ public class AliPayCloseStrategy extends AbsPayCloseStrategy {
*/
@Override
public void doCloseHandler() {
aliPayCloseService.close(this.getOrder());
aliPayCloseService.close(this.getOrder(), this.alipayConfig);
}
}

View File

@@ -61,7 +61,7 @@ public class AliPayStrategy extends AbsPayStrategy {
throw new PayFailureException("支付参数错误");
}
// 检查并获取支付宝支付配置
this.initAlipayConfig();
this.alipayConfig = alipayConfigService.getAndCheckConfig();
// 支付宝相关校验
aliPayService.validation(this.getPayParam(), alipayConfig);
}
@@ -74,13 +74,4 @@ public class AliPayStrategy extends AbsPayStrategy {
aliPayService.pay(this.getOrder(), this.aliPayParam, this.alipayConfig);
}
/**
* 初始化支付宝配置信息
*/
private void initAlipayConfig() {
// 获取并初始化支付宝支付配置
this.alipayConfig = alipayConfigService.getAndCheckConfig();
alipayConfigService.initConfig(this.alipayConfig);
}
}

View File

@@ -32,6 +32,8 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy {
private final AliPayConfigService configService;
private AliPayConfig config;
/**
* 策略标识
*
@@ -47,8 +49,7 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy {
*/
@Override
public void doBeforeHandler() {
AliPayConfig config = configService.getConfig();
configService.initConfig(config);
this.config = configService.getConfig();
}
/**
@@ -66,6 +67,6 @@ public class AlipayReconcileStrategy extends AbsReconcileStrategy {
@Override
public void downAndSave() {
String date = LocalDateTimeUtil.format(this.getRecordOrder().getDate(), DatePattern.NORM_DATE_PATTERN);
reconcileService.downAndSave(date,this.getRecordOrder());
reconcileService.downAndSave(date,this.getRecordOrder(),this.config);
}
}

View File

@@ -22,10 +22,13 @@ import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROT
public class AliRefundStrategy extends AbsRefundStrategy {
private final AliPayConfigService alipayConfigService;
private final AliPayRefundService aliRefundService;
private AliPayConfig config;
/**
* 策略标识
*
* @see PayChannelEnum
*/
@Override
@@ -39,8 +42,7 @@ public class AliRefundStrategy extends AbsRefundStrategy {
*/
@Override
public void doBeforeRefundHandler() {
AliPayConfig config = alipayConfigService.getAndCheckConfig();
alipayConfigService.initConfig(config);
this.config = alipayConfigService.getAndCheckConfig();
}
/**
@@ -48,6 +50,6 @@ public class AliRefundStrategy extends AbsRefundStrategy {
*/
@Override
public void doRefundHandler() {
aliRefundService.refund(this.getRefundOrder());
aliRefundService.refund(this.getRefundOrder(),this.config);
}
}

View File

@@ -213,6 +213,7 @@ public class RefundRepairService {
.setTradeId(refundOrder.getId())
.setRepairNo(repairResult.getRepairNo())
.setTradeNo(refundOrder.getRefundNo())
.setChannel(refundOrder.getChannel())
.setRepairType(PaymentTypeEnum.REFUND.getCode())
.setBeforeStatus(repairResult.getBeforeRefundStatus().getCode())
.setAfterStatus(afterStatus)

View File

@@ -26,6 +26,8 @@ public class AliPayRepairStrategy extends AbsPayRepairStrategy {
private final AliPayConfigService aliPayConfigService;
private AliPayConfig config;
/**
* 策略标识
*/
@@ -39,8 +41,7 @@ public class AliPayRepairStrategy extends AbsPayRepairStrategy {
*/
@Override
public void doBeforeHandler() {
AliPayConfig config = aliPayConfigService.getConfig();
aliPayConfigService.initConfig(config);
this.config = aliPayConfigService.getConfig();
}
@@ -49,6 +50,6 @@ public class AliPayRepairStrategy extends AbsPayRepairStrategy {
*/
@Override
public void doCloseRemoteHandler() {
closeService.close(this.getOrder());
closeService.close(this.getOrder(), this.config);
}
}

View File

@@ -2,7 +2,6 @@ package cn.daxpay.single.service.core.payment.sync.strategy.Refund;
import cn.daxpay.single.code.PayChannelEnum;
import cn.daxpay.single.code.PaySyncStatusEnum;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.channel.alipay.service.AliPayConfigService;
import cn.daxpay.single.service.core.channel.alipay.service.AliPaySyncService;
import cn.daxpay.single.service.core.payment.sync.result.RefundRemoteSyncResult;
@@ -42,8 +41,6 @@ public class AliRefundSyncStrategy extends AbsRefundSyncStrategy {
*/
@Override
public RefundRemoteSyncResult doSyncStatus() {
AliPayConfig config = alipayConfigService.getConfig();
alipayConfigService.initConfig(config);
return aliPaySyncService.syncRefundStatus(this.getRefundOrder());
}
}

View File

@@ -40,16 +40,7 @@ public class AliPaySyncStrategy extends AbsPaySyncStrategy {
*/
@Override
public PayRemoteSyncResult doSyncStatus() {
this.initAlipayConfig();
return alipaySyncService.syncPayStatus(this.getOrder());
}
/**
* 初始化支付宝配置信息
*/
private void initAlipayConfig() {
// 检查并获取支付宝支付配置
AliPayConfig config = alipayConfigService.getConfig();
alipayConfigService.initConfig(config);
return alipaySyncService.syncPayStatus(this.getOrder(),config);
}
}

View File

@@ -3,6 +3,7 @@ package cn.daxpay.single.service.core.payment.transfer.strategy;
import cn.daxpay.single.code.PayChannelEnum;
import cn.daxpay.single.exception.pay.PayFailureException;
import cn.daxpay.single.param.payment.transfer.TransferParam;
import cn.daxpay.single.service.core.channel.alipay.entity.AliPayConfig;
import cn.daxpay.single.service.core.channel.alipay.service.AliPayConfigService;
import cn.daxpay.single.service.core.channel.alipay.service.AliPayTransferService;
import cn.daxpay.single.service.func.AbsTransferStrategy;
@@ -31,6 +32,7 @@ public class AliPayTransferStrategy extends AbsTransferStrategy {
private final AliPayTransferService aliPayTransferService;
private AliPayConfig config;
/**
* 策略标识
@@ -54,7 +56,7 @@ public class AliPayTransferStrategy extends AbsTransferStrategy {
*/
@Override
public void doBeforeHandler() {
payConfigService.initConfig(payConfigService.getAndCheckConfig());
this.config = payConfigService.getAndCheckConfig();
}
/**
@@ -62,6 +64,6 @@ public class AliPayTransferStrategy extends AbsTransferStrategy {
*/
@Override
public void doTransferHandler() {
aliPayTransferService.transfer(this.getTransferOrder());
aliPayTransferService.transfer(this.getTransferOrder(), this.config);
}
}

View File

@@ -60,7 +60,7 @@ public class TradeFlowRecord extends MpCreateEntity implements EntityBaseFunctio
/** 通道交易号 */
@DbMySqlIndex(comment = "通道交易号索引")
@DbColumn(comment = "通道交易号", length = 150, isNull = false)
@DbColumn(comment = "通道交易号", length = 150)
private String outTradeNo;
@Override

View File

@@ -42,19 +42,19 @@ public class PaySyncRecord extends MpCreateEntity implements EntityBaseFunction<
/** 通道交易号 */
@DbMySqlIndex(comment = "通道交易号索引")
@DbColumn(comment = "通道交易号", length = 150, isNull = false)
@DbColumn(comment = "通道交易号", length = 150)
private String outTradeNo;
/**
* 三方支付返回状态
* 三方支付返回状态, 分账无返回状态
* @see PaySyncStatusEnum
* @see RefundSyncStatusEnum
*/
@DbColumn(comment = "网关返回状态", length = 20, isNull = false)
@DbColumn(comment = "网关返回状态", length = 30)
private String outTradeStatus;
/**
* 同步类型 支付/退款
* 同步类型 支付/退款/分账/转账
* @see PaymentTypeEnum
*/
@DbColumn(comment = "同步类型", length = 20, isNull = false)

View File

@@ -28,7 +28,7 @@ public class AllocationAutoStartTask implements Job {
public void execute(JobExecutionContext jobExecutionContext) {
for (PayOrder payOrder : payOrderManager.findAutoAllocation()) {
AllocationParam param = new AllocationParam();
param.setBizAllocationNo(OrderNoGenerateUtil.allocation());
param.setBizAllocNo(OrderNoGenerateUtil.allocation());
try {
allocationService.allocation(param, payOrder);
} catch (Exception e) {