认证与 API Key
在哪里找到 API 凭证(x-client-id 和 x-api-key)?
在哪里找到 API 凭证(x-client-id 和 x-api-key)?
x-client-id 和 x-api-key 的分步流程。如果看不到 Create 按钮,说明你账户的 API 功能尚未开通 —— 请联系客户经理为你启用。创建 API Key 时提示 API functionality is not activated, please contact the administrator。
创建 API Key 时提示 API functionality is not activated, please contact the administrator。
调用 Token 接口时返回 403 Forbidden,怎么回事?
调用 Token 接口时返回 403 Forbidden,怎么回事?
- Base URL 错误 —— 确认使用正确的环境地址。沙盒:
https://api-sandbox.uqpaytech.com;生产:https://api.uqpay.com。 - 凭证错误 —— 沙盒凭证无法在生产使用,反之亦然。确认你的
x-client-id和x-api-key是在哪个环境创建的。 - IP 白名单 —— 如果你在创建 API Key 时配置了 IP 限制,来自其他 IP 的请求会被拦截。你可以在控制台的 API Key 设置中移除或更新该 IP 限制。
调用沙盒时返回 Access to this resource is forbidden from UAT。
调用沙盒时返回 Access to this resource is forbidden from UAT。
"error": "Forbidden", "message": "Access to this resource is forbidden from UAT")表示你使用的是生产环境创建的凭证,但调用了沙盒 URL;或账户尚未开通沙盒访问权限。请联系客户经理为你的账户开通沙盒访问,并提供沙盒专用的凭证。Access Token 有效期多久?何时应该刷新?
Access Token 有效期多久?何时应该刷新?
x-client-id 的多个 Token 同时有效:签发新 Token 不会使先前尚未过期的 Token 失效。请缓存并复用 Token,并根据 Token 响应中的 expired_at 字段在过期前获取新 Token。参见 Request Access Token。子账户与账户结构
House Account、Sub-Account 和 Virtual Account(VA)有什么区别?
House Account、Sub-Account 和 Virtual Account(VA)有什么区别?
- House Account(也称 Master Account,主账户):你的 UQPAY 主账户。所有 API 凭证都归属于该账户。
- Sub-Account(子账户):在主账户下创建的子账户,代表你的某个终端客户或业务单元。子账户可以持有余额,并可拥有自己的虚拟账户。
- Virtual Account(VA,虚拟账户):分配给某个子账户的银行账号(例如 IBAN,或附带 Sort Code 的账号)。打入 VA 的资金会进入对应子账户的余额。
x-on-behalf-of,其值为该子账户的 account_id(长 UUID 格式)。参见 Virtual Account, Global Account, and Local Account。子账户可以通过 API 创建,还是只能通过控制台?
子账户可以通过 API 创建,还是只能通过控制台?
x-on-behalf-of 通过 API 管理该账户。x-on-behalf-of 是如何工作的?可以用父账户 ID 查询子账户的数据吗?
x-on-behalf-of 是如何工作的?可以用父账户 ID 查询子账户的数据吗?
x-on-behalf-of 设为子账户的 account_id(长 UUID)。必须使用子账户自己的 ID —— 传入父账户/主账户 ID 的话,任何接口都不会返回该子账户的数据。Deposit 查询的情况:Webhook 通知里的 deposit account_id 就是子账户的 UUID。调用 deposit 详情接口时,可直接把该值作为 x-on-behalf-of 传入。account_id 应该使用短的 CB 前缀 ID,还是长 UUID?
account_id 应该使用短的 CB 前缀 ID,还是长 UUID?
- 短的
CB前缀 ID(例如CB4316632576)用于控制台界面以及部分 Webhook 字段short_entity_id。 - 长 UUID 用于 API 请求头(
x-on-behalf-of)、接口响应体,以及调用大部分接口时的标准标识。
创建的子账户只有一个 VA,也没有 Add VA 按钮,为什么?
创建的子账户只有一个 VA,也没有 Add VA 按钮,为什么?
虚拟账户创建
用 x-on-behalf-of 调用 Create VA 接口时,返回结果为空(total_items: 0),为什么?
用 x-on-behalf-of 调用 Create VA 接口时,返回结果为空(total_items: 0),为什么?
x-on-behalf-of的值虽然是子账户 ID,但该 VA 是在另一个账户下创建的。- 子账户尚未审批/激活。
- 调用时使用的 Token 是父账户签发的,而
x-on-behalf-of设置为一个不相关的子账户 ID。
x-on-behalf-of 的值是否与该 VA 所属的子账户 account_id 匹配,并确认该账户已完成 KYC。Webhook 中的 deposit_id 如何关联到具体是哪个 VA?
Webhook 中的 deposit_id 如何关联到具体是哪个 VA?
account_id 字段,值为收款子账户的 UUID。使用该 UUID 作为 x-on-behalf-of 调用 GET /api/v1/deposits/{deposit_id},即可获取入金的完整详情,包括收款账号。建议在你自己的系统中维护 account_id → VA 账号 的映射,避免每次收到通知都查询。出款(POBO)
提交出款时返回 beneficiary account not exists,但 beneficiary ID 看起来是正确的。
提交出款时返回 beneficiary account not exists,但 beneficiary ID 看起来是正确的。
beneficiary_id 在你当前操作的子账户上下文中不存在。请检查:x-on-behalf-of请求头是否与创建该受益人的子账户匹配。- 受益人是否已被删除。一旦删除,该 beneficiary ID 即失效。
- 是否混用了沙盒和生产环境的 beneficiary ID。
南非(ZAR)出款的 clearing_system 应填什么?
南非(ZAR)出款的 clearing_system 应填什么?
clearing_system 取决于支付类型。通过本地通道为 ZAR 创建受益人时,请在 bank_details 中包含 "clearing_system": "LOCAL",同时务必包含 routing_code_type1 字段。API 报错 'bank_details.clearing_system' is required 即表明请求体中缺失该字段。哥伦比亚(COP)出款失败,提示 Field additional_info.msisdn failed on e164 validation。正确格式是什么?
哥伦比亚(COP)出款失败,提示 Field additional_info.msisdn failed on e164 validation。正确格式是什么?
msisdn 字段必须使用 E.164 格式,需要带国际区号前缀。哥伦比亚需在本地号码前加 +57。例如本地号码 3122885049 应填为 +573122885049。请根据实际使用的清算网络确认该格式是否被接受。外汇换汇
调用 Quote 接口并指定日期时返回 conversion date is invalid。
调用 Quote 接口并指定日期时返回 conversion date is invalid。
GET /api/v1/conversion/conversion_dates?currency_to=X¤cy_from=Y 获取该币种对的可用结算日期列表。conversion_date 字段只能使用该接口返回的日期。周末和公共假日通常会被排除在外。调用换汇 Quote 接口时返回 account not config fx product。
调用换汇 Quote 接口时返回 account not config fx product。
Webhooks
如何在沙盒中手动触发 Deposit Webhook 以便测试?
如何在沙盒中手动触发 Deposit Webhook 以便测试?
收不到 deposit.pending 或 deposit.completed Webhook,如何配置 Webhook 端点?
收不到 deposit.pending 或 deposit.completed Webhook,如何配置 Webhook 端点?
deposit.pending 和 deposit.completed 事件类型。参见 Webhooks Setup 和 Webhook Delivery Troubleshooting。Deposit Webhook 的 payload 里没有 VA 账号(IBAN/账号),我如何知道是哪个账户收款?
Deposit Webhook 的 payload 里没有 VA 账号(IBAN/账号),我如何知道是哪个账户收款?
account_id(子账户 UUID)和 deposit_id。若要获取完整的入金详情(包括收款账号),请使用 Webhook 中的 account_id 作为 x-on-behalf-of,调用 GET /api/v1/deposits/{deposit_id}。响应体中会包含收款方的账号。建议在客户入驻时就缓存 account_id → VA 账号 的映射,避免每次都查询。沙盒测试
如何获取沙盒访问权限和凭证?
如何获取沙盒访问权限和凭证?
- 为你开通沙盒账户并发送登录凭证,或
- 引导你在
https://app-sandbox.uqpaytech.com自助注册,然后为你的账户启用沙盒 banking 产品。
https://api-sandbox.uqpaytech.com 作为 base URL。我在沙盒通过 KYC API 创建了子账户,但一直卡在非审批通过状态,如何让它通过测试?
我在沙盒通过 KYC API 创建了子账户,但一直卡在非审批通过状态,如何让它通过测试?
account_id(CB 前缀短 ID 或 UUID),并指明目标终态(例如 Active)。同理,若需测试 RFI 流程,可请他们把账户置为 Returned 状态,以便测试补件重新提交流程。如何为沙盒账户充值余额,用于测试出款和换汇?
如何为沙盒账户充值余额,用于测试出款和换汇?
余额与转账
如何查询某个币种的余额?
如何查询某个币种的余额?
如何把资金从子账户转回主账户?
如何把资金从子账户转回主账户?
POST /api/v1/transfer)。在请求体中将子账户设置为 source_account_id,将主账户设置为 target_account_id。当前认证账户必须是转账双方之一,且系统不支持子账户到子账户的直接转账。参见账户间转账。
