取消交易
下单后您可以在限定的窗口期内使用 取消支付 接口主动关闭某笔交易,支持取消的窗口期以合约规定为准。
取消交易的关键业务信息如下:
- 在支付成功之前发起取消的交易,买家将无法继续支付。
- 买家支付成功后发起取消的交易,资金会原路退回买家账户。
- 是否允许部分取消:不允许。取消会对整个订单进行取消。
- 取消窗口期:不同支付方式的窗口期有差异。具体请查看以下表格:
支付方式 | 取消窗口期 |
泰国网上银行 | 下单至支付成功前可以取消交易。支付成功后无法取消交易。 |
其他支付方式 | 下单时间至东八区 T+1 日的 00:15 之前可以取消交易。 |
取消交易步骤
在以下情况下,您可以调用 取消支付 接口发起单笔交易的取消:
- 您需要关闭某笔订单时,Antom 侧的交易状态仍为处理中
- 其他需要取消交易的场景
步骤 1:发起取消请求
调用 取消支付 接口发起单笔交易的撤销,需要传入以下 2 种 ID 中的一个:
参数 | 是否必需 | 描述 |
paymentId | 否 | 下单时由 Antom 端返回的唯一交易 ID。 |
paymentRequestId | 否 | 下单时由商户分配的唯一请求 ID。 |
以下是调用 取消支付 接口的示例代码:
传入 paymentRequestId
传入 paymentId
通过 paymentRequestId 发起取消请求:
copy
public static void payCancel() {
AlipayPayCancelRequest alipayPayCancelRequest = new AlipayPayCancelRequest();
// 替换为您的 paymentRequestId
alipayPayCancelRequest.setPaymentRequestId("yourPaymentRequestId");
AlipayPayCancelResponse alipayPayCancelResponse = null;
try {
alipayPayCancelResponse = CLIENT.execute(alipayPayCancelRequest);
} catch (AlipayApiException e) {
String errorMsg = e.getMessage();
// 处理错误情况
}
}
以下是请求报文的代码示例:
copy
{
"paymentRequestId": "paymentRequestIdXXXX"
}
步骤 2:获取取消结果
您调用 取消支付 接口后,Antom 会返回取消响应:
copy
{
"cancelTime": "2019-06-12T19:07:11+08:00",
"paymentId": "2019061218401080010018882020035XXXX",
"paymentRequestId": "paymentRequestIdXXXX",
"result": {
"resultCode": "SUCCESS",
"resultMessage": "Success",
"resultStatus": "S"
}
}
下表展示了取消支付响应中 result.resultStatus 可能返回的值,请您根据指引进行处理:
注意:
- 如果您未收到响应报文,可能是网络超时所致。建议保持原请求不变重新调用接口以解决问题。如果问题未解决,请联系 Antom 技术支持。
- 已发生过退款的交易(包括全额退款和部分退款)不支持取消, 取消已退款的交易将返回错误码
PROCESS_FAIL
。- 交易取消后,即使收到支付成功的异步通知,您系统中的交易状态仍应保持为
CANCELLED
。