取消交易
下单后您可以在一定时间窗口期内通过使用 取消支付 接口主动关闭某笔交易。支持取消的窗口期、手续费等以您与收单机构的合约为准。目前不支持部分取消,只支持整单取消。
针对 Antom 收单机构,取消交易规则请参见取消交易。
取消交易步骤
- 发起取消交易请求
- 获取取消交易结果
步骤 1:发起取消交易请求
您可以通过 取消支付 接口发起对单笔交易的取消,以下示例代码展示了如何调用 取消支付 接口:
通过 paymentId 调用取消支付接口
通过 paymentRequestId 调用取消支付接口
copy
public static void payCancel() {
AlipayPayCancelRequest alipayPayCancelRequest = new AlipayPayCancelRequest();
// 替换为您的 paymentId
alipayPayCancelRequest.setPaymentId("yourPaymentId");
AlipayPayCancelResponse alipayPayCancelResponse = null;
try {
alipayPayCancelResponse = CLIENT.execute(alipayPayCancelRequest);
} catch (AlipayApiException e) {
String errorMsg = e.getMessage();
// 处理错误情况
}
}
在请求参数中,您需要传入以下两种 ID 中的一个:
参数名 | 是否必需 | 描述 |
paymentId |
| 下单时由 APO 侧返回的唯一交易号。 |
paymentRequestId |
| 下单时由商家分配的唯一请求号。 |
表 1. 取消支付接口传参说明
以下是一个取消交易请求的示例代码:
copy
{
"paymentId": "2019061218401080010018882020035XXXX"
}
{
"paymentRequestId": "paymentRequestIdXXXX"
}
步骤 2:获取取消交易结果
copy
{
"cancelTime": "2019-06-12T19:07:11+08:00",
"paymentId": "2019061218401080010018882020035XXXX",
"paymentRequestId": "pay_2089760038715669_20277574507XXXX",
"result": {
"resultCode": "SUCCESS",
"resultMessage": "Success",
"resultStatus": "S"
}
}
在您调用 取消支付 接口后,APO 会通过相应报文的 result.resultStatus 字段同步返回该次交易的取消结果:
result.resultStatus | 信息 | 下一步操作 |
| 表示取消交易成功。 | 注意若调用 取消支付 接口时买家未提交支付,买家还是可以继续支付。 |
| 表示取消交易失败。 | 您可以根据错误码信息进行相关处理。 |
| 表示取消结果未知。 | 请使用相同的 paymentId 或 paymentRequestId 发起取消重试。如果问题仍未解决,请联系 APO 技术支持。 |
注意:如果您未收到响应报文,可能是网络超时所致。请使用相同的 paymentId 或 paymentRequestId 发起取消重试。如果问题仍未解决,请联系 APO 技术支持。
表 2. 取消结果解释
注意:
- 已发生过退款的交易(包括全额退款和部分退款)不支持取消, 取消已退款的交易将返回错误码
PROCESS_FAIL
。- 即使交易取消后收到支付成功的异步通知,您系统中的交易状态仍然应会保持
CANCELLED
。- 卡支付不支持请款中、请款成功后取消交易。