inquiryPayment

POS 调用 inquiryPayment 接口来查询支付状态,通常在 POS 未从支付终端收到交易响应时使用。

方法签名

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

copy
fun inquiryPayment(
    queryPaymentRequest: QueryPaymentRequest,
    options: RequestOptions? = null,
    callBack: QueryPayResultListener? = null
)

参数

参数名称

类型

是否必需

描述

queryPaymentRequest

QueryPaymentRequest

包含查询支付结果参数的对象。

options

RequestOptions

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

callback

QueryPayResultListener

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

callback

参数名称

类型

是否必需

描述

result

QueryPayResultData

表示查询支付结果的结果。 

返回值

参数名称

类型

是否必需

描述

result

Result

接口调用的结果。

paymentRequestId

String

由 POS 提供商定义的用于标识支付请求的唯一 ID。

  • 最大长度:64 个字符。
  • 仅允许字母(a-z、A-Z)、数字(0-9)和下划线(_)。

注意:此参数对每个门店是唯一的。使用 paymentRequestId 调用 inquiryPayment 接口查询支付状态。每次调用将返回最新的支付结果。

paymentId

String

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

paymentCreateTime

String

创建支付的日期和时间。该值遵循 ISO 8601 标准格式,例如,"2019-11-27T12:01:01+08:00"。

paymentTime

String

支付达到成功最终状态的日期和时间。该值遵循 ISO 8601 标准格式,例如,"2019-11-27T12:01:01+08:00"。

paymentStatus

String

表示支付的最终状态。有效值为:

  • SUCCESS:交易成功。
  • FAIL:交易失败。
  • PROCESSING:交易处理中。
  • CANCELLED:交易已取消。

paymentAmount

Amount

商户请求以订单币种接收的支付金额。

paymentMethod

String

商户或收单机构用于收取付款的支付方式。请参阅支持的支付方式了解更多信息。

结果码

结果码

状态码

结果信息

后续操作

SUCCESS

S

成功

无需后续操作。

PROCESS_FAIL

F

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

联系 Antom 技术支持。

PROCESS_FAIL

F

数据格式无效。

联系 Antom 技术支持。

PROCESS_FAIL

F

公钥配对失败。

联系 Antom 技术支持。

PARAM_ILLEGAL

F

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

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

TERMINAL_NOT_LOGIN

F

支付终端未登录。

登录支付终端。

TERMINAL_BUSY

F

支付终端繁忙。

稍后重试。

PAYMENT_NOT_EXIST

F

支付不存在。

联系 Antom 技术支持。

DEVICE_NOT_CONNECT

F

USB 连接失败。

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

TIMEOUT_EXCEPTION

U

响应超时。

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

UNKNOWN_EXCEPTION

U

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

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

UNKNOWN_EXCEPTION

U

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

联系 Antom 技术支持。

UNKNOWN_EXCEPTION

U

消息格式无效。

联系 Antom 技术支持。

示例

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

copy
PaymentManager.inquiryPayment(
    request,
    null,
    object : QueryPayResultListener {
        override fun result(result: QueryPayResultData) {
            runOnUiThread {
                findViewById<TextView>(R.id.tv_response).text = result.toString()
            }
        }
    }
)

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

copy
{
  "result":{
    "resultCode": "SUCCESS",
    "resultStatus": "S",
    "resultMessage": "Success."
  },
  "paymentRequestId": "pay_1089760038715669_1027757450XXXXX",
  "paymentId": "202502081140108001001888202003XXXXX",
  "paymentCreateTime": "2025-02-08T12:01:01+08:00",
  "paymentTime": "2025-02-08T12:01:01+08:00",
  "paymentStatus": "Success",
  "paymentAmount":{
    "currency": "SGD",
    "value": "50000"
  },
  "paymentMethod":"CARD"
}