mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-02 02:34:34 +00:00
feat 支付宝同步查询接口调试
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
package cn.bootx.platform.daxpay.service.core.channel.alipay.service;
|
||||
|
||||
import cn.bootx.platform.common.core.util.LocalDateTimeUtil;
|
||||
import cn.bootx.platform.daxpay.code.PayStatusEnum;
|
||||
import cn.bootx.platform.daxpay.code.PaySyncStatusEnum;
|
||||
import cn.bootx.platform.daxpay.service.code.AliPayCode;
|
||||
import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal;
|
||||
import cn.bootx.platform.daxpay.service.core.payment.sync.result.GatewaySyncResult;
|
||||
import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder;
|
||||
import cn.bootx.platform.daxpay.service.core.payment.sync.result.GatewaySyncResult;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alipay.api.AlipayApiException;
|
||||
import com.alipay.api.domain.AlipayTradeQueryModel;
|
||||
@@ -17,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -43,11 +43,12 @@ public class AliPaySyncService {
|
||||
try {
|
||||
AlipayTradeQueryModel queryModel = new AlipayTradeQueryModel();
|
||||
queryModel.setOutTradeNo(String.valueOf(payOrder.getId()));
|
||||
// 查询退款参数
|
||||
queryModel.setQueryOptions(Collections.singletonList("trade_settle_info"));
|
||||
// 查询参数
|
||||
AlipayTradeQueryResponse response = AliPayApi.tradeQueryToResponse(queryModel);
|
||||
String tradeStatus = response.getTradeStatus();
|
||||
syncResult.setSyncInfo(JSONUtil.toJsonStr(response));
|
||||
// 支付完成
|
||||
// 支付完成 TODO 部分退款也在这个地方, 但无法区分
|
||||
if (Objects.equals(tradeStatus, AliPayCode.PAYMENT_TRADE_SUCCESS) || Objects.equals(tradeStatus, AliPayCode.PAYMENT_TRADE_FINISHED)) {
|
||||
PaymentContextLocal.get().getAsyncPayInfo().setTradeNo(response.getTradeNo());
|
||||
// 支付完成时间
|
||||
@@ -61,12 +62,13 @@ public class AliPaySyncService {
|
||||
}
|
||||
// 已关闭或支付完成后全额退款
|
||||
if (Objects.equals(tradeStatus, AliPayCode.PAYMENT_TRADE_CLOSED)) {
|
||||
// 根据支付订单区分退款的情况, TODO 后期添加查询退款信息的逻辑
|
||||
if (Objects.equals(payOrder.getStatus(), PayStatusEnum.REFUNDED.getCode())){
|
||||
// 判断是否有支付时间, 有支付时间说明是退款
|
||||
if (Objects.nonNull(response.getSendPayDate())){
|
||||
return syncResult.setSyncStatus(PaySyncStatusEnum.REFUND);
|
||||
} else {
|
||||
return syncResult.setSyncStatus(PaySyncStatusEnum.CLOSED);
|
||||
}
|
||||
|
||||
}
|
||||
// 支付宝支付后, 客户未进行操作将不会创建出订单, 所以交易不存在约等于未查询订单
|
||||
if (Objects.equals(response.getSubCode(), AliPayCode.ACQ_TRADE_NOT_EXIST)) {
|
||||
|
@@ -27,7 +27,7 @@ public abstract class AbsPaySyncStrategy implements PayStrategy{
|
||||
|
||||
|
||||
/**
|
||||
* 异步支付单与支付网关进行状态比对
|
||||
* 异步支付单与支付网关进行状态比对后的结果
|
||||
* @see PaySyncStatusEnum
|
||||
*/
|
||||
public abstract GatewaySyncResult doSyncStatus();
|
||||
|
Reference in New Issue
Block a user