以下是从真实集成经验中整理出的常见问题和解决方案。若未找到对应答案,请联系你的 UQPAY 客户经理。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.
沙盒测试
模拟 API 返回 'Card does not exists'
模拟 API 返回 'Card does not exists'
40963608。其他 BIN 的卡片会返回此错误。同时请检查:- 卡片未被注销。已注销的卡片无法处理授权。
- 使用了正确的沙盒 base URL:
https://api-sandbox.uqpaytech.com/api
沙盒中无法创建卡片:'insufficient_sub_bin'
沙盒中无法创建卡片:'insufficient_sub_bin'
沙盒入金需要人工审核
沙盒入金需要人工审核
沙盒测试如何获取实体卡号?
沙盒测试如何获取实体卡号?
认证与 API 接入
Access Token 有效期
Access Token 有效期
expired_at 字段判断何时刷新。参见 Request Access Token。错误:'x-on-behalf-of' 校验失败
错误:'x-on-behalf-of' 校验失败
x-on-behalf-of 请求头需要严格校验:- 必须为有效的 UUID 格式(例如
18523f72-f4de-4f9c-bb8e-ec7d1c4f32be) - 必须对应一个有效的 Issuing 子账户 ID
- 空值或格式错误会返回错误
sub_account_not_found,请确认该账户 ID 属于 Issuing 业务线(而非 Banking),并且该子账户已激活。API Key IP 白名单
API Key IP 白名单
192.168.x.x)不可路由,校验必定失败。x-idempotency-key 是怎么工作的?
x-idempotency-key 是怎么工作的?
x-idempotency-key 会返回原请求的缓存结果 —— 不会创建新的操作。重要行为:- 缓存的响应保留 24 小时
- 如果原请求失败(例如余额不足),使用相同的 key 重试会返回同样的失败 —— 即使条件已改变。在修复根本原因后重试时请使用新的 key。
- 如果收到 504 超时,请使用相同的 key 重试 —— 服务器可能已经处理了该请求
上传 KYC 文件时出现 'Parse file failed'
上传 KYC 文件时出现 'Parse file failed'
- 缺少 Content-Type:上传文件时始终带上
Content-Type: multipart/form-data - 重复使用幂等 key:
x-idempotency-key必须是有效的 UUID,且每次新请求都要唯一
持卡人
持卡人姓名必须使用英文
持卡人姓名必须使用英文
first_name 和 last_name 必须使用英文(拉丁字符)。中文或其他非拉丁字符不被接受。delivery_address 内的地址字段可以接受中文。错误:'invalid_phone_number'
错误:'invalid_phone_number'
country_code 的格式。请按号码的拨号区域传入 country_code,而不是持卡人的国籍。号码应为国际格式,不带开头的 0。详情参见手机号校验规则。多个持卡人可以使用相同邮箱或手机号吗?
多个持卡人可以使用相同邮箱或手机号吗?
account_id 下,邮箱和手机号必须各自唯一 —— 该账户下的任意两位持卡人不得共享其中任一值。同一邮箱或手机号可以在不同 account_id 下复用。持卡人可以被删除吗?
持卡人可以被删除吗?
创建卡片与配置
错误:'risk_control_not_allowed'
错误:'risk_control_not_allowed'
risk_controls 参数(包括 allow_3ds_transactions)仅在特定 BIN 上支持。对不支持的 BIN 传入此参数会返回错误。同样的限制也适用于 no_pin_payment_amount。完整列表参见支持风控配置的 BIN 列表。错误:'card quota of account exceeds limit'
错误:'card quota of account exceeds limit'
错误:'card bin not config'
错误:'card bin not config'
卡片创建后一直处于 Pending 状态
卡片创建后一直处于 Pending 状态
PENDING,发卡完成后会转为 ACTIVE。要检测激活状态,可以监听 card.create.succeeded webhook,或轮询 Retrieve Card 接口 —— 两种方式均可。单笔消费限额的最大值是多少?
单笔消费限额的最大值是多少?
子账户创建数量限制
子账户创建数量限制
卡状态与生命周期
card_status 可能的取值有哪些?
card_status 可能的取值有哪些?
| 状态 | 说明 | 控制方 |
|---|---|---|
ACTIVE | 卡已激活,可处理交易 | 商户 |
FROZEN | 卡已临时冻结 —— 可通过 API 解除冻结 | 商户 |
BLOCKED | 卡被风控锁定 —— 需 UQPAY 解除锁定 | 系统 |
PRE_CANCEL | 卡已预注销(30 天等待期) | — |
CANCELLED | 卡已永久注销 | — |
FROZEN 和 BLOCKED 有什么区别?
FROZEN 和 BLOCKED 有什么区别?
[email protected],附上持卡人姓名、卡 ID、当前状态和解锁原因。退款和冲正仍可入账到 FROZEN 和 BLOCKED 状态的卡。可以直接从 FROZEN 转到 CANCELLED 吗?
可以直接从 FROZEN 转到 CANCELLED 吗?
FROZEN 直接转为 CANCELLED,无需先恢复到 ACTIVE。卡片注销之后会发生什么?
卡片注销之后会发生什么?
PRE_CANCEL 状态,等待期为 30 天,之后自动转为 CANCELLED。在 PRE_CANCEL 期间:- 卡片无法处理新交易
- 已授权但未请款的交易可能仍会结算
- 对于 Single 卡,等待期结束后 UQPAY 会自动将剩余余额退回商户账户
能否修改 FROZEN 卡的限额?
能否修改 FROZEN 卡的限额?
ACTIVE)才能绑定或修改其限额。虚拟卡与实体卡的激活
虚拟卡与实体卡的激活
/api/v1/issuing/cards/activate 激活,使用绑定后由 card.activation.code webhook 下发的激活码。参见签发实体卡。卡片充值与限额
Single 卡与 Share 卡:限额与资金差异
Single 卡与 Share 卡:限额与资金差异
错误:'The single card not support changing card limits'
错误:'The single card not support changing card limits'
card_limit。要调整 Single 卡的可消费金额,请改用 recharge 和 withdraw 接口。有从 Banking 向 Issuing 划款的接口吗?
有从 Banking 向 Issuing 划款的接口吗?
错误:账户间划款时出现 'product_not_found'
错误:账户间划款时出现 'product_not_found'
交易与结算
transaction_status 可能的取值有哪些?
transaction_status 可能的取值有哪些?
| 状态 | 说明 |
|---|---|
APPROVED | 交易通过 |
DECLINED | 交易拒绝 |
PENDING 是仅在处理过程中短暂存在的中间状态 —— 请勿据此做业务判断。请等待 issuing.transaction.authorization webhook,它始终携带最终状态。REFUNDED 状态已于 2025 年 5 月 29 日移除。交易响应中 'failure_reason' 字段为空
交易响应中 'failure_reason' 字段为空
failure_reason 字段已于 2025 年 5 月 29 日重命名为 description。请更新你的集成,改读 description 字段。此变更影响:- List Cards Transactions 接口
- Retrieve Cards Transaction 接口
card.transaction.*webhook 事件- 导出的交易报表
如何区分 ATM 取现和普通消费?
如何区分 ATM 取现和普通消费?
transaction_type 都是 AUTHORIZATION。要区分,请查看 merchant_data.category_code:- MCC
6011= ATM 取现 - MCC
6011且billing_amount == 0= ATM 查询余额 - 其他 MCC 值 = 普通消费
错误:'card credit limit greater than max Limit'
错误:'card credit limit greater than max Limit'
card_limit 超过了平台为你账户配置的单笔交易最大上限。请联系你的 UQPAY 客户经理通过 VIP 白名单提升上限,或将单卡限额保持在已配置上限之内。错误:'Exceed Pin Free Amount'
错误:'Exceed Pin Free Amount'
recharge / withdraw 返回 200 能作为业务成功的凭据吗?
recharge / withdraw 返回 200 能作为业务成功的凭据吗?
Webhooks
收不到 webhook 通知
收不到 webhook 通知
- 事件订阅:确认你订阅了对应事件类型。例如,钱包绑卡的 OTP 需要订阅
card.verification.otp;交易校验需要订阅issuing.transaction.validation。 - HTTP 200 响应:你的 endpoint 必须在超时时间内返回 HTTP
200。 - URL 可访问性:确保你的 webhook URL 可从 UQPAY 源 IP 公网访问。
Webhook 的重试策略是什么?
Webhook 的重试策略是什么?
UQPAY 的 webhook 源 IP 地址是哪些?
UQPAY 的 webhook 源 IP 地址是哪些?
失败的 webhook 可以重发吗?
失败的 webhook 可以重发吗?
3D Secure 与钱包支付
为什么 allow_3ds_transactions 设为 N 时仍然产生 3DS 费用?
为什么 allow_3ds_transactions 设为 N 时仍然产生 3DS 费用?
allow_3ds_transactions 只控制 3DS 被触发后持卡人如何完成身份验证 —— 具体来说,是允许无摩擦(无交互)流程,还是必须走需要手动输入 OTP 的挑战流程。由于触发发生在收单侧,即使 allow_3ds_transactions 为 N,交易也可能进入 3DS 流程,因此仍可能产生 3DS 验证费用。如果要完全跳过 3DS(避免相关验证费用),将卡片的 enable_3ds 设为 N。这会让卡片不注册 3DS,收单侧也就无法对该卡触发 3DS 身份验证。完整两字段模型参见 3D Secure。钱包绑卡没有收到 OTP webhook
钱包绑卡没有收到 OTP webhook
card.verification.otp 事件类型。标准的 ISSUING webhook 订阅不包含该事件。能否关闭发给持卡人的邮件通知?
能否关闭发给持卡人的邮件通知?
Secure iFrame 与 PCI
Retrieve Card Secure 要求卡片处于 ACTIVE 状态
Retrieve Card Secure 要求卡片处于 ACTIVE 状态
/cards/:id/secure endpoint 要求卡片处于 ACTIVE 状态。对 PENDING 状态的卡片调用会返回 Card does not exists。请先等待卡片激活。实体卡
重复绑定时的错误:'card has been assigned'
重复绑定时的错误:'card has been assigned'
错误:'card number not available for this account'
错误:'card number not available for this account'

