pay

pay 接口由您的 POS 调用以创建支付请求。在调用此接口前,请确保支付终端已准备就绪可接收支付请求。

方法签名

调用此方法时,请使用以下标准方法签名格式:

copy
fun pay(
    payRequest: PayRequest,
    options: RequestOptions? = null,
    callBack: PayResultListener? = null
)

参数

参数名称

类型

是否必需

描述

payRequest

PayRequest

是

包含创建支付请求参数的对象。

options

RequestOptions

否

包含接口请求中可选参数的对象。

callBack

PayResultListener

否

用于返回查询结果的回调。详细信息请参阅 callback。

callback

参数名称

类型

是否必需

描述

result

PayResultData

否

表示支付结果。 

返回值

参数名称

类型

是否必需

描述

result

Result

是

接口调用的结果。

paymentId

String

是

由 POS 提供商定义的用于标识支付的唯一 ID,与交易报告中的 paymentId 一致。

paymentReceipt

Receipt

否

支付成功后提供给商户和买家的收据信息。

  • 信息以键值结构提供。在卡支付场景中,通过 customerReceipt 和 cashierReceipt 返回值。
  • 在扫码支付场景中,paymentReceipt 返回空值。
copy
{
    "cashierReceipt": "{\"acquirerMerchantId\":\"0000000001XXXXX\",\"acquirerProcessTime\":\"2025-05-13T13:19:51Z\",\"acquirerTerminalId\":\"911XXXXX\",\"aid\":\"A00000000XXXXX\",\"applicationCryptogram\":\"5AC388057A1XXXXX\",\"applicationLabel\":\"VISA CREDIT\",\"approvalCode\":\"0XXXXX\",\"cardBrand\":\"VISA\",\"cardNo\":\"47617300000XXXXX\",\"cvm\":\"NO_CVM\",\"posEntryMode\":\"CONTACTLESS\",\"rrn\":\"2827948XXXXX\",\"tvr\":\"00000XXXXX\"}",
    "customerReceipt": "{\"acquirerMerchantId\":\"0000000001XXXXX\",\"acquirerProcessTime\":\"2025-05-13T13:19:51Z\",\"acquirerTerminalId\":\"911XXXXX\",\"aid\":\"A00000000XXXXX\",\"applicationCryptogram\":\"5AC388057A1XXXXX\",\"applicationLabel\":\"VISA CREDIT\",\"approvalCode\":\"0XXXXX\",\"cardBrand\":\"VISA\",\"cardNo\":\"47617300000XXXXX\",\"cvm\":\"NO_CVM\",\"posEntryMode\":\"CONTACTLESS\",\"rrn\":\"2827948XXXXX\",\"tvr\":\"00000XXXXX\"}"

结果码

结果码

状态码

结果信息

后续操作

SUCCESS

S

成功

无需后续操作。

PROCESS_FAIL

F

发生常规业务故障。请勿重试。

联系 Antom 技术支持。

PROCESS_FAIL

F

数据格式无效。

联系 Antom 技术支持。

PROCESS_FAIL

F

公钥配对失败。

联系 Antom 技术支持。

PARAM_ILLEGAL

F

参数名称或值不符合指定要求。结果消息会根据具体错误而有所不同。

检查请求参数(包括头部参数和主体参数)是否正确有效。

TERMINAL_NOT_LOGIN

F

支付终端未登录。

登录支付终端。

PAYMENT_METHOD_NOT_SUPPORT

F

不支持该支付方式。

选择其他支付方式。

TERMINAL_BUSY

F

支付终端繁忙。

稍后重试。

PAYMENT_FAIL

F

支付失败。

调用 inquiryPayment 接口查询最终支付状态,或在支付终端上手动检查支付状态并在 POS 上手动更新支付状态。如果上述方法无效,请联系 Antom 技术支持以排查问题。

DEVICE_NOT_CONNECT

F

USB 连接失败。

  • 检查代码中是否已完成初始化连接。如果未完成,请执行初始化连接。
  • 检查 USB 连接两端是否已在代码中安全连接。如果未连接,请重新连接两个设备。

TIMEOUT_EXCEPTION

U

响应超时。

检查支付终端应用程序是否处于活动状态。如果未激活,请重新激活。

UNKNOWN_EXCEPTION

U

未知原因引起的接口调用失败。

使用 paymentRequestId 调用 inquiryPayment 接口查询最终支付结果。

UNKNOWN_EXCEPTION

U

解密支付终端返回的数据失败。

联系 Antom 技术支持。

UNKNOWN_EXCEPTION

U

消息格式无效。

联系 Antom 技术支持。

示例

以下代码展示了如何调用 pay 接口:

copy
PaymentManager.pay(
    request,
    RequestOptions(120000L),
    object : PayResultListener {
        override fun result(result: PayResultData) {
            findViewById<TextView>(R.id.tv_response).post {
                findViewById<TextView>(R.id.tv_response).text = result.toString()
            }
        }


    }
)

以下代码展示了一个响应示例:

copy
{
    "result":{
        "resultCode": "SUCCESS",
        "resultStatus": "S",
        "resultMessage": "Success."
    },
    "paymentId": "201906081140108001001888202003XXXXX",
    "paymentReceipt":{
        "cashierReceipt": "{\"acquirerMerchantId\":\"0000000001XXXXX\",\"acquirerProcessTime\":\"2025-05-13T13:19:51Z\",\"acquirerTerminalId\":\"911XXXXX\",\"aid\":\"A00000000XXXXX\",\"applicationCryptogram\":\"5AC388057A1XXXXX\",\"applicationLabel\":\"VISA CREDIT\",\"approvalCode\":\"0XXXXX\",\"cardBrand\":\"VISA\",\"cardNo\":\"47617300000XXXXX\",\"cvm\":\"NO_CVM\",\"posEntryMode\":\"CONTACTLESS\",\"rrn\":\"2827948XXXXX\",\"tvr\":\"00000XXXXX\"}",
        "customerReceipt": "{\"acquirerMerchantId\":\"0000000001XXXXX\",\"acquirerProcessTime\":\"2025-05-13T13:19:51Z\",\"acquirerTerminalId\":\"911XXXXX\",\"aid\":\"A00000000XXXXX\",\"applicationCryptogram\":\"5AC388057A1XXXXX\",\"applicationLabel\":\"VISA CREDIT\",\"approvalCode\":\"0XXXXX\",\"cardBrand\":\"VISA\",\"cardNo\":\"47617300000XXXXX\",\"cvm\":\"NO_CVM\",\"posEntryMode\":\"CONTACTLESS\",\"rrn\":\"2827948XXXXX\",\"tvr\":\"00000XXXXX\"}"
    }
}