取消交易
下单后您可以在一定时间窗口期内通过使用 cancel 接口主动关闭某笔交易,支付成功后可在 T+1日的 00:15(UTC+8:00)之前取消(T 为交易日)。
取消交易的注意事项如下:
- 在支付成功之前发起取消的交易,买家将无法继续支付。
- 买家支付成功后发起取消的交易,资金会原路退回用户账户。
- 不支持部分取消交易情况,发起取消交易请求时会对整个订单进行取消。
集成步骤
步骤1: 发起取消交易请求
您可以通过 cancel 接口发起单笔交易的撤销。在请求中,传入以下 2 种 ID 中的一个:
参数名称 | 是否必填? | 描述 |
paymentId | 否 | 下单时由 Antom 端返回的唯一交易 ID。 |
paymentRequestId | 否 | 下单时由商户分配的唯一请求 ID。 |
以下是调用 取消支付 接口的示例代码:
- 通过 paymentRequestId 发起取消请求:
copy
public static void payCancel() {
AlipayPayCancelRequest alipayPayCancelRequest = new AlipayPayCancelRequest();
// replace with your paymentRequestId
alipayPayCancelRequest.setPaymentRequestId("yourPaymentRequestId");
AlipayPayCancelResponse alipayPayCancelResponse = null;
try {
alipayPayCancelResponse = CLIENT.execute(alipayPayCancelRequest);
} catch (AlipayApiException e) {
String errorMsg = e.getMessage();
// handle error condition
}
}- 通过 paymentId 发起取消请求:
copy
public static void payCancel() {
AlipayPayCancelRequest alipayPayCancelRequest = new AlipayPayCancelRequest();
// replace with your paymentId
alipayPayCancelRequest.setPaymentId("yourPaymentId");
AlipayPayCancelResponse alipayPayCancelResponse = null;
try {
alipayPayCancelResponse = CLIENT.execute(alipayPayCancelRequest);
} catch (AlipayApiException e) {
String errorMsg = e.getMessage();
// handle error condition
}
}以下为请求的代码示例:
copy
{
"paymentId": "2019061218401080010018882020035XXXX"
}
{
"paymentRequestId": "paymentRequestIdXXXX"
}步骤2: 获取取消结果
在您调用 cancel 接口后,Antom 会通过 result.resultStatus 字段同步返回该次交易的取消结果:
copy
{
"cancelTime": "2019-06-12T19:07:11+08:00",
"paymentId": "2019061218401080010018882020035XXXX",
"paymentRequestId": "pay_2089760038715669_20277574507XXXX",
"result": {
"resultCode": "SUCCESS",
"resultMessage": "Success",
"resultStatus": "S"
}
}以下为取消支付响应中 result.resultStatus 可能返回的值,您可以根据指引进行处理:
result.resultStatus | 信息 | 后续操作 |
| 取消成功。 | 无需进一步操作。 |
| 取消结果未知。 | 建议保持原请求不变重新调用接口以解决问题。如果问题未解决,请联系 Antom 技术支持。 |
| 取消失败。 | 您可以根据结果码进行相关处理。 |
注意:
- 如果您未收到响应报文,可能是网络超时所致。建议保持原请求不变重新调用接口以解决问题。如果问题未解决,请联系 Antom 技术支持。
- 已发生过退款的交易(包括全额退款和部分退款)不支持取消, 取消已退款的交易将返回错误码
PROCESS_FAIL。- 取消交易后,即使收到支付成功的异步通知,系统中的交易状态仍应保持为
CANCELLED。您需要合理处理调用撤销接口和支付成功通知的并发处理逻辑,建议您控制加锁逻辑,避免商户侧支付成功和撤销同时生效。