取消交易

下单后您可以在一定时间窗口期内通过使用 取消支付 接口主动关闭某笔交易。支持取消的窗口期、手续费等以您与收单机构的合约为准。目前不支持部分取消,只支持整单取消。

针对 Antom 收单机构,取消交易规则请参见取消交易

取消交易步骤

  1. 发起取消交易请求
  2. 获取取消交易结果

步骤 1:发起取消交易请求服务端

您可以通过 取消支付 接口发起对单笔交易的取消,以下示例代码展示了如何调用 取消支付 接口:

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

OPTIONAL

下单时由 APO 侧返回的唯一交易号。

paymentRequestId

OPTIONAL

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

表 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

信息

下一步操作

S

表示取消交易成功。

注意若调用 取消支付 接口时买家未提交支付,买家还是可以继续支付。

F

表示取消交易失败。

您可以根据错误码信息进行相关处理

U

表示取消结果未知。

请使用相同的 paymentId 或 paymentRequestId 发起取消重试。如果问题仍未解决,请联系 APO 技术支持。

注意:如果您未收到响应报文,可能是网络超时所致。请使用相同的 paymentId 或 paymentRequestId 发起取消重试。如果问题仍未解决,请联系 APO 技术支持。

表 2. 取消结果解释

注意

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