Authorization Decision API 让你能对卡交易做出实时的通过/拒绝决定。当一笔交易通过 UQPAY 的内部风控后,交易详情会被转发到你的 endpoint,由你做出最终决定。Documentation Index
Fetch the complete documentation index at: https://developers-sandbox.uqpaytech.com/llms.txt
Use this file to discover all available pages before exploring further.
前置条件
- 通过 UQPAY 风控审核以启用此功能
- 一个可公开访问的 HTTPS endpoint,用于接收授权请求
- 用于请求/响应加密的 PGP 密钥对
工作原理
核心原则:- 你只会收到已经通过 UQPAY 风控的交易的授权请求。
- 被 UQPAY 拒绝的交易不会发送到你的 endpoint —— 你只会收到
issuing.transaction.authorizationwebhook 通知。 - 你必须在配置的超时时间内响应(1 到 5 秒,按你与 UQPAY 的约定设置)。如果未收到有效响应,交易结果由你配置的默认超时动作决定(通过或拒绝)。
安全:PGP 加密
整个请求和响应体都使用 PGP 加密。接入前,你和 UQPAY 需要交换 PGP 公钥:| 方向 | 加密方式 |
|---|---|
| UQPAY → 你(请求) | 使用你的公钥加密。用你的私钥解密。 |
| 你 → UQPAY(响应) | 发送前使用 UQPAY 的公钥加密。 |
UQPAY PGP 公钥
UQPAY PGP 公钥
API 规格
请求
UQPAY 向你配置的 endpoint 发送POST 请求,请求头包含:
| Header | 说明 |
|---|---|
Content-Type | application/json; charset=utf-8 |
x-request-id | 每个请求的唯一 UUID |
| 字段 | 类型 | 说明 |
|---|---|---|
transaction_id | string (UUID) | 交易唯一标识符 |
transaction_type | integer | 1000 授权、1100 转出、1200 取现、2000 退款 |
card_id | string (UUID) | 卡标识符 |
processing_code | string | 卡组织处理码 |
billing_amount | float | 账单金额 |
transaction_amount | float | 交易金额 |
auth_amount | float | 授权金额 |
date_of_transaction | string | 格式:YYYY-MM-DD HH:MM:SS |
billing_currency_code | string | 3 位 ISO 货币代码 |
transaction_currency_code | string | 3 位 ISO 货币代码 |
auth_currency_code | string | 3 位 ISO 货币代码 |
card_balance | float | 卡片可用余额 |
merchant_id | string | 商户标识符 |
merchant_name | string | 商户名称 |
merchant_category_code | string | MCC |
merchant_city | string | 商户所在城市 |
merchant_country | string | 2 位 ISO 国家代码 |
terminal_id | string | 终端标识符 |
pos_entry_mode | string | POS 录入方式(见下方) |
pos_condition_code | string | 交易条件码(见下方) |
pin_entry_capability | string | 0 未知、1 可接受 PIN、2 不可接受 PIN、8 PIN 键盘故障 |
retrieval_reference_number | string | RRN,12 位 |
system_trace_audit_number | string | STAN,6 位 |
acquiring_institution_country_code | string | 2 位 ISO 国家代码 |
acquiring_institution_id | string | 收单机构标识符 |
wallet_type | string | APPLE、SAMSUNG、GOOGLE、GOOGLE ECOMMERCE、GOOGLE PAY、MI PAY、Garmin Pay、ECOMMERCE |
POS entry mode 取值
POS entry mode 取值
| Code | 说明 |
|---|---|
00 | 未知或未使用终端 |
01 | 手动(键盘输入) |
02 | 磁条读取;可能无法进行 CVV 校验 |
03 | 光学码 |
05 | 按 VSDC 芯片数据规则接触式读取 IC 卡 |
07 | 按 qVSDC 芯片数据规则非接触式读取 |
10 | 存档凭证 |
90 | 磁条读取,精确 Track 1/2 内容(可进行 CVV 校验) |
91 | 按磁条数据规则非接触式读取 |
95 | IC 卡读取;可能无法进行 CVV 或 iCVV 校验 |
POS condition code 取值
POS condition code 取值
| Code | 说明 |
|---|---|
00 | 正常交易 |
01 | 客户不在场 |
02 | 无人值守的持卡人自助环境,有 PIN 数据 |
03 | 商户对交易(或卡片)存疑 |
05 | 客户在场,卡片不在场 |
06 | 预授权请求 |
08 | 邮件、电话、定期、预付或分期订单 |
51 | 地址/CVV2/账户验证,无授权 |
59 | 通过公共网络发起的电商请求 |
响应
以 HTTP200 返回以下 JSON 响应体,使用 UQPAY 的 PGP 公钥加密:
| 字段 | 类型 | 说明 |
|---|---|---|
transaction_id | string (UUID) | 必须与请求的 transaction_id 一致,否则该笔交易会被拒绝 |
response_code | string | 授权响应码(见下表) |
partner_reference_id | string | 你内部的对账参考 ID(选填,可为空) |
响应码
| Code | 说明 |
|---|---|
00 | 通过 |
04 | 吞卡 |
05 | 不予授权 |
06 | 错误 |
13 | 金额无效 |
14 | 账号无效 |
43 | 失卡 |
51 | 余额不足 |
59 | 疑似欺诈 |
65 | 超出活动次数限制 |
- HTTP 状态码为
200 response_code为"00"transaction_id与请求匹配
接入步骤
- 联系 UQPAY —— 联系 UQPAY 为你的账户启用 Authorization Decision API 功能。
-
交换配置 —— 向 UQPAY 提供以下内容:
- 你的 PGP 公钥(RSA 2048 位)
- 你的授权决策 endpoint URL(HTTPS)
- 决策超时时间(1 到 5 秒,默认 2 秒)
- 默认超时动作:
decline(超时自动拒绝)或delegate(由 UQPAY 代为决定)
18.139.246.78。 - 实现你的 endpoint —— 构建一个 POST endpoint,使用你的 PGP 私钥解密请求体,按业务逻辑评估交易,使用 UQPAY 的公钥加密响应,并在配置的超时时间内返回加密后的响应。
- 测试集成 —— 与 UQPAY 协作在沙盒环境运行测试交易,验证加解密和响应处理的正确性。

