取消交易

下单后您可以在一定时间窗口期内通过使用 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

信息

后续操作

S

取消成功。

无需进一步操作。

U

取消结果未知。

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

F

取消失败。

您可以根据结果码进行相关处理。

注意

  • 如果您未收到响应报文,可能是网络超时所致。建议保持原请求不变重新调用接口以解决问题。如果问题未解决,请联系 Antom 技术支持。
  • 已发生过退款的交易(包括全额退款和部分退款)不支持取消, 取消已退款的交易将返回错误码 PROCESS_FAIL
  • 取消交易后,即使收到支付成功的异步通知,系统中的交易状态仍应保持为 CANCELLED。您需要合理处理调用撤销接口和支付成功通知的并发处理逻辑,建议您控制加锁逻辑,避免商户侧支付成功和撤销同时生效。