瀏覽代碼

ats支付宝接口,创建订单,查询订单,订单退款,退款查询完成

master
huminghao 1 周之前
父節點
當前提交
9b279095c0

+ 1
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/ali/AliServiceCmd.java 查看文件

@@ -9,6 +9,7 @@ public enum AliServiceCmd implements SignServiceCommand {
ORDERAPPLY("支付宝支付订单申请","orderApply", AtsAliOrderApplyRequest.class),
QUERYORDERAPPLY("查询支付宝支付订单申请结果","queryOrderApply", AtsAliQueryOrderApplyRequest.class),
ORDERREFUND("支付宝支付订单退费","orderRefund", AtsAliOrderRefundRequest.class),
QUERYORDERREFUND("支付宝支付订单退费","queryOrderRefund", AtsAliQueryOrderRefundRequest.class),

;


+ 15
- 7
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/ali/AtsAliOrderApplyResponse.java 查看文件

@@ -14,16 +14,24 @@ import lombok.Setter;
@Setter
public class AtsAliOrderApplyResponse extends AbstractAtsResponse {

//商户订单号
/**
*商户订单号
* */
private String outTradeNo;

//支付宝交易号
private String tradeNo;

// Native参数,支付二维码内容(需转换成二维码展示)
/**
* Native,支付二维码内容(需转换成二维码展示)
* */
private String qrCode;

//手机网站支付接口2.0 响应表单
private String form;
/**
* APP获取的 签名字符串
* */
private String orderStr;

/**
* H5返回的 跳转页面数据
* */
private String pageRedirectionData;

}

+ 7
- 6
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/ali/AtsAliOrderRefundResponse.java 查看文件

@@ -14,14 +14,15 @@ import lombok.Setter;
@Setter
public class AtsAliOrderRefundResponse extends AbstractAtsResponse {

//商户订单号
/**
*商户订单号
* */
private String outTradeNo;

//交易状态,WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
private String tradeStatus;

//交易的订单金额,单位为元,两位小数
private String totalAmount;
/**
*交易的订单金额,单位为元,两位小数
* */
private String refundFee;


}

+ 10
- 3
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/ali/AtsAliQueryOrderApplyResponse.java 查看文件

@@ -14,14 +14,21 @@ import lombok.Setter;
@Setter
public class AtsAliQueryOrderApplyResponse extends AbstractAtsResponse {

//商户订单号
/**
* 商户订单号
* */
private String outTradeNo;

//交易状态,WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
/**
*交易状态,WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
* */
private String tradeStatus;

//交易的订单金额,单位为元,两位小数
/**
*交易的订单金额,单位为元,两位小数
* */
private String totalAmount;



}

+ 46
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/ali/AtsAliQueryOrderRefundRequest.java 查看文件

@@ -0,0 +1,46 @@
package cn.com.taiji.core.model.comm.protocol.ats.ali;

import cn.com.taiji.core.model.comm.protocol.ats.AbstractAtsRequest;
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder;
import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotBlank;


/**
* @Author:ChenChao
* @Date:2025/5/10 14:17
* @Filename:AtsCreatPayOrder
* @description:
*/
@Getter
@Setter
public class AtsAliQueryOrderRefundRequest extends AbstractAtsRequest<AtsAliQueryOrderRefundResponse> {


@NotBlank
private String privateKey;// 你的商户私钥

@NotBlank
private String publicKey;//商户公钥

@NotBlank
private String appid;//应用ID spAppid;服务商应用ID

@NotBlank
private String outTradeNo;//商户订单号

@NotBlank
private String outRequestNo;//退款请求号。 请求退款接口时,传入的退款请求号,如果在退款请求时未传入,则该值为创建交易时的商户订单号。


public AtsAliQueryOrderRefundRequest() {
super(AliServiceCmd.QUERYORDERAPPLY);
}

@Override
protected void validate(ErrorMsgBuilder builder) {

}
}

+ 41
- 0
gly-base-core/src/main/java/cn/com/taiji/core/model/comm/protocol/ats/ali/AtsAliQueryOrderRefundResponse.java 查看文件

@@ -0,0 +1,41 @@
package cn.com.taiji.core.model.comm.protocol.ats.ali;

import cn.com.taiji.core.model.comm.protocol.ats.AbstractAtsResponse;
import lombok.Getter;
import lombok.Setter;

/**
* @Author:ChenChao
* @Date:2025/5/10 14:17
* @Filename:AtsCreatPayOrder
* @description:
*/
@Getter
@Setter
public class AtsAliQueryOrderRefundResponse extends AbstractAtsResponse {

/**
* 商户订单号
* */
private String outTradeNo;

/**
* 退款状态。枚举值: REFUND_SUCCESS 退款处理成功; 未返回该字段表示退款请求未收到或者退款失败;
* 注:如果退款查询发起时间早于退款时间,或者间隔退款发起时间太短,
* 可能出现退款查询时还没处理成功,后面又处理成功的情况,建议商户在退款发起后间隔10秒以上再发起退款查询请求。
* */
private String refundStatus;

/**
* 该笔退款所对应的交易的订单金额。单位:元。
* */
private String totalAmount;

/**
* 本次退款请求,对应的退款金额,单位:元。
* */
private String refundAmount;



}

+ 3
- 4
zhywpt-service-ats/src/main/java/cn/com/taiji/ats/manager/ali/AliCreatePayOrderManager.java 查看文件

@@ -113,7 +113,7 @@ public class AliCreatePayOrderManager extends AbstractCommManager {
}
AtsAliOrderApplyResponse response = new AtsAliOrderApplyResponse();
response.setOutTradeNo(createResponse.getOutTradeNo());
response.setForm(createResponse.getBody());
response.setPageRedirectionData(createResponse.getPageRedirectionData());
return response;
} catch (AlipayApiException e) {
logger.error("调用支付宝手机网站支付接口2.0失败", e);
@@ -160,7 +160,6 @@ public class AliCreatePayOrderManager extends AbstractCommManager {
}
AtsAliOrderApplyResponse response = new AtsAliOrderApplyResponse();
response.setOutTradeNo(createResponse.getOutTradeNo());
response.setTradeNo(createResponse.getTradeNo());
return response;
} catch (AlipayApiException e) {
logger.error("调用支付宝统一收单线下交易预创建接口失败", e);
@@ -196,8 +195,8 @@ public class AliCreatePayOrderManager extends AbstractCommManager {
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("下单失败:" + createResponse.getMsg() + "-" + createResponse.getSubMsg());
}
AtsAliOrderApplyResponse response = new AtsAliOrderApplyResponse();
response.setOutTradeNo(request.getOutTradeNo());
response.setForm(createResponse.getBody());
response.setOutTradeNo(createResponse.getOutTradeNo());
response.setOrderStr(createResponse.getOrderStr());
return response;
} catch (AlipayApiException e) {
logger.error("调用支付宝统一收单下单并支付页面接口失败", e);

+ 17
- 9
zhywpt-service-ats/src/main/java/cn/com/taiji/ats/manager/ali/AliOrderRefundManager.java 查看文件

@@ -3,18 +3,13 @@ package cn.com.taiji.ats.manager.ali;
import cn.com.taiji.ats.manager.AbstractCommManager;
import cn.com.taiji.ats.manager.tools.ali.AlipayConfigUtils;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliOrderApplyResponse;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliOrderRefundRequest;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliQueryOrderApplyRequest;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliQueryOrderApplyResponse;
import cn.com.taiji.core.model.comm.protocol.ats.ali.*;
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeQueryModel;
import com.alipay.api.domain.AlipayTradeRefundModel;
import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.request.AlipayTradeRefundRequest;
import com.alipay.api.response.AlipayTradeQueryResponse;
import com.alipay.api.response.AlipayTradeRefundResponse;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

@@ -31,7 +26,7 @@ import java.time.LocalDateTime;
@Service
public class AliOrderRefundManager extends AbstractCommManager {

public AtsAliOrderApplyResponse serviceHandle(AtsAliOrderRefundRequest request) throws ServiceHandleException {
public AtsAliOrderRefundResponse serviceHandle(AtsAliOrderRefundRequest request) throws ServiceHandleException {
logger.info("支付宝退款接口开始{},参数{}", LocalDateTime.now(), request.toJson());
if (!StringUtils.isEmpty(request.getRefundAmount())){
if (StringUtils.isEmpty(request.getOutRequestNo())){
@@ -64,7 +59,20 @@ public class AliOrderRefundManager extends AbstractCommManager {

refundRequest.setBizModel(model);

return null;
try {
AlipayTradeRefundResponse refundResponse = alipayClient.execute(refundRequest);
if (!refundResponse.isSuccess()) {
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("退款失败:" + refundResponse.getMsg() + "-" + refundResponse.getSubMsg());
}
AtsAliOrderRefundResponse response = new AtsAliOrderRefundResponse();
response.setOutTradeNo(refundResponse.getOutTradeNo());
response.setRefundFee(refundResponse.getRefundFee());
return response;
} catch (AlipayApiException e) {
logger.error("调用支付宝统一收单线下交易退款接口失败", e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("调用支付宝统一收单线下交易退款接口失败:" + e.getErrMsg());
}

}

}

+ 62
- 0
zhywpt-service-ats/src/main/java/cn/com/taiji/ats/manager/ali/AliQueryOrderRefundManager.java 查看文件

@@ -0,0 +1,62 @@
package cn.com.taiji.ats.manager.ali;

import cn.com.taiji.ats.manager.AbstractCommManager;
import cn.com.taiji.ats.manager.tools.ali.AlipayConfigUtils;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliQueryOrderRefundRequest;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliQueryOrderRefundResponse;
import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.domain.AlipayTradeFastpayRefundQueryModel;
import com.alipay.api.request.AlipayTradeFastpayRefundQueryRequest;
import com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse;
import org.springframework.stereotype.Service;

/**
* @Auther: humh
* @Description:
* @Date: 2025/8/20 11:05
* @email: huminghao@mail.taiji.com.cn
* @version: 1.0
*/
@Service
public class AliQueryOrderRefundManager extends AbstractCommManager {


public AtsAliQueryOrderRefundResponse serviceHandle(AtsAliQueryOrderRefundRequest request) throws ServiceHandleException {
AlipayClient alipayClient = null;
try {
alipayClient = AlipayConfigUtils.createAlipayClient(request.getAppid(), request.getPrivateKey(), request.getPublicKey());
} catch (AlipayApiException e) {
logger.error("支付宝初始化SDK异常:"+e.getMessage());
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("支付宝初始化SDK异常:"+e.getMessage());
}
// 构造请求参数以调用接口
AlipayTradeFastpayRefundQueryRequest queryRequest = new AlipayTradeFastpayRefundQueryRequest();
AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel();

model.setOutRequestNo(request.getOutRequestNo());

// 设置商户订单号
model.setOutTradeNo(request.getOutTradeNo());

queryRequest.setBizModel(model);

try {
AlipayTradeFastpayRefundQueryResponse queryResponse = alipayClient.execute(queryRequest);
if (!queryResponse.isSuccess()) {
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单查询失败:" + queryResponse.getMsg() + "-" + queryResponse.getSubMsg());
}
AtsAliQueryOrderRefundResponse response = new AtsAliQueryOrderRefundResponse();
response.setOutTradeNo(queryResponse.getOutTradeNo());
response.setRefundStatus(queryResponse.getRefundStatus());
response.setTotalAmount(queryResponse.getTotalAmount());
response.setRefundAmount(queryResponse.getRefundAmount());
return response;
} catch (AlipayApiException e) {
logger.error("调用支付宝统一收单线下交易查询接口失败", e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("调用支付宝统一收单线下交易查询接口失败:" + e.getErrMsg());
}
}
}

+ 3
- 3
zhywpt-service-ats/src/main/java/cn/com/taiji/ats/manager/ali/AliQueryPayOrderManager.java 查看文件

@@ -45,7 +45,7 @@ public class AliQueryPayOrderManager extends AbstractCommManager {
try {
AlipayTradeQueryResponse queryResponse = alipayClient.execute(queryRequest);
if (!queryResponse.isSuccess()) {
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("下单失败:" + queryResponse.getMsg() + "-" + queryResponse.getSubMsg());
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("订单查询失败:" + queryResponse.getMsg() + "-" + queryResponse.getSubMsg());
}
AtsAliQueryOrderApplyResponse response = new AtsAliQueryOrderApplyResponse();
response.setOutTradeNo(queryResponse.getOutTradeNo());
@@ -53,8 +53,8 @@ public class AliQueryPayOrderManager extends AbstractCommManager {
response.setTotalAmount(queryResponse.getTotalAmount());
return response;
} catch (AlipayApiException e) {
logger.error("调用支付宝统一收单线下交易预创建接口失败", e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("调用支付宝统一收单线下交易预创建接口失败:" + e.getErrMsg());
logger.error("调用支付宝统一收单线下交易查询接口失败", e);
throw GlyServiceError.BUSINESS_VALIDATE_ERR.toHandleException("调用支付宝统一收单线下交易查询接口失败:" + e.getErrMsg());
}
}


+ 7
- 4
zhywpt-service-ats/src/main/java/cn/com/taiji/ats/manager/handler/AliServiceHandler.java 查看文件

@@ -2,6 +2,7 @@ package cn.com.taiji.ats.manager.handler;

import cn.com.taiji.ats.manager.ali.AliCreatePayOrderManager;
import cn.com.taiji.ats.manager.ali.AliOrderRefundManager;
import cn.com.taiji.ats.manager.ali.AliQueryOrderRefundManager;
import cn.com.taiji.ats.manager.ali.AliQueryPayOrderManager;
import cn.com.taiji.common.manager.net.http.ServiceHandleException;
import cn.com.taiji.common.model.file.FileProtocolSystemError;
@@ -9,12 +10,10 @@ import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse;
import cn.com.taiji.core.model.comm.protocol.SignJsonRequest;
import cn.com.taiji.core.model.comm.protocol.ats.AtsServiceType;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AliServiceCmd;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliOrderApplyRequest;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliOrderRefundRequest;
import cn.com.taiji.core.model.comm.protocol.ats.ali.AtsAliQueryOrderApplyRequest;
import cn.com.taiji.core.model.comm.protocol.ats.ali.*;
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.*;
import com.zgglyun.common.model.AbstractHttpRequestInfo;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@@ -40,6 +39,8 @@ public class AliServiceHandler extends AbstractAtsServiceHandler<WeiXinServiceCm
private AliQueryPayOrderManager aliQueryPayOrderManager;
@Autowired
private AliOrderRefundManager aliOrderRefundManager;
@Autowired
private AliQueryOrderRefundManager aliQueryOrderRefundManager;


@Override
@@ -53,6 +54,8 @@ public class AliServiceHandler extends AbstractAtsServiceHandler<WeiXinServiceCm
return aliQueryPayOrderManager.serviceHandle((AtsAliQueryOrderApplyRequest) request);
case ORDERREFUND:
return aliOrderRefundManager.serviceHandle((AtsAliOrderRefundRequest) request);
case QUERYORDERREFUND:
return aliQueryOrderRefundManager.serviceHandle((AtsAliQueryOrderRefundRequest) request);
default:
throw FileProtocolSystemError.NOT_SUPPORT.toHandleException(jsonReq.getIfCode());
}

Loading…
取消
儲存