取消交易

下单后您可以在一定时间窗口期内通过使用 cancel 接口主动关闭某笔交易,支持取消的时间窗口期以合约划定为准。

取消交易的关键业务信息如下:

  • 在支付成功之前发起取消的交易,买家将无法继续支付。
  • 买家支付成功后发起取消的交易,资金会原路退回用户账户。
  • 手续费:被取消的交易不会产生手续费。
  • 是否允许部分取消:不允许。取消会对整个订单进行取消。
  • 取消窗口期:不同支付方式的窗口期有差异。具体请查看以下表格:

支付方式

取消窗口期

印尼本地支付方式及 JKOPay

不支持取消。

泰国网上银行、移动银行 APP 和银行转账类支付方式

  • 下单时间至支付成功前可以取消交易。
  • 支付成功后无法取消交易。

卡支付

  • 支付成功后七天内可以取消交易。
  • 请款成功的交易无法取消。

Mercado Pago(巴西、智利、墨西哥和秘鲁)

支付成功后七天内可以取消交易。

其他支付方式

支付成功后可在 T+1日的00:15(UTC+8:00)之前取消。

表 1. 支付方式取消窗口期

使用场景

如果您有明确的主动关单场景,如闪购、酒店预订、机票购买等,则需要集成 cancel 接口。可以针对以下情况之一发起交易取消,交易取消后,交易状态变为 CANCELLED即使交易取消后收到支付成功的异步通知,您系统中的交易状态仍然应保持 CANCELLED。针对不同场景进行的交易取消,Antom 会相应进行处理:

场景

调用接口后返回 result.resultStatus=S

交易已支付,在取消时限内发起取消。

全额退款,不收取消交易手续费。

交易已支付,交易结果无法通过 Antom 异步通知和调用 inquiryPayment 接口获取,发起取消。

关闭交易,若后续收到支付成功异步通知则全额退款,不收取消交易手续费。

买家未提交支付:例如在 AlipayHK 卖家未点击确认按钮。

买家仍然可以授权和支付。

买家已提交支付,在付款时限内(10 分钟)发起取消。

买家无法支付,但是可以继续授权。

表 2. 取消交易场景及处理

注意

  • 已发生过退款的交易(包括全额退款和部分退款)不支持取消, 取消已退款的交易将返回错误码 PROCESS_FAIL
  • 即使交易取消后收到支付成功的异步通知,您系统中的交易状态仍然应保持 CANCELLED

取消交易

步骤 1:调用接口

当您关闭订单后又收到了 Antom 的支付成功异步通知时,需要调用 cancel 接口取消交易。在请求中传入以下 2 种 ID 中的一个:

参数

是否必填

说明

paymentId

下单时由 Antom 端返回的唯一交易 ID。

paymentRequestId

下单时由商家分配的唯一请求 ID

表 3. 接口传参说明

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
{
  "paymentId": "2019061218401080010018882020035XXXX"
}

{
  "paymentRequestId": "paymentRequestIdXXXX"
}

取消支付响应代码示例:

copy
{
  "cancelTime": "2019-06-12T19:07:11+08:00",
  "paymentId": "2019061218401080010018882020035XXXX",
  "paymentRequestId": "pay_2089760038715669_20277574507XXXX",
  "result": {
    "resultCode": "SUCCESS",
    "resultMessage": "Success",
    "resultStatus": "S"
  }
}

步骤 2:获取取消结果

在您调用 cancel 接口后,Antom 会通过 result.resultStatus 字段同步返回该次交易的取消结果。

下表展示了取消支付的响应中 result.resultStatus 字段可能返回的值,请您根据指引进行处理:

result.resultStatus

信息处理建议
S表示取消成功。

无需进一步操作。

注意:若接口调用时买家未完成支付提交,支付流程仍可持续进行。

F

取消失败。

您可以根据 resultCode 进行相关处理。

U

因未知原因取消失败。

保持原请求不变重新调用接口以解决问题。如果问题未解决,请联系 Antom 技术支持

表 4. result.resultStatus 字段可能返回的值

注意:如果您未收到响应报文,可能是网络超时所致。保持原请求不变重新调用接口以解决问题。如果问题未解决,请联系 Antom 技术支持。