Skip to main content
平台的人工界面(托管页面、PDF、CSV 表头)会解析 locale:eneszh默认语言为英语。无论 locale 如何,JSON API 响应和 webhook 始终使用英语(标签、错误码和 message)。
账户上的 locale 是人工偏好,不会翻译 JSON 契约。若需要西班牙语 PDF,请传 ?lang=es 或设置账户 locale —— GET /v1/payouts/{id} 的响应体仍为英语。

解析链

已认证 API 调用(resolveRequestLocale)按下列顺序取值,停在第一个 有效值。无效的 ?lang= / ?locale= 会被忽略(绝不会返回 400),由下一步决定。 公开页面(checkout、跟踪页、回单、状态页、卡片托管页)会在查询参数与账户 之间插入一步:付款人 cookie cbpay_pay_locale(见两个 cookie)。 后台任务、回单邮件以及无请求上下文生成的 PDF 使用账户 locale,然后是组织 默认值,最后是英语。

设置账户 locale

GET /v1/me 会暴露 localeen | es | zh)。缺失或无效的存储值 返回为 en PATCH /v1/me 接受 locale(字符串)。KYC/KYB 获批后仍可修改 —— 与 display_nametax_idcountry 不同。
注册(POST /v1/auth/register)和管理员创建的账户在开户时盖章 locale: 请求体中的显式 locale > Accept-Language > 组织 default_locale > 英语。注册时非空且无效的 locale 同样返回 400 invalid_locale

现有账户与新账户

一次性部署迁移(db/platform/092_account_locale_es_preconfig.sql)会为 尚无 locale 的账户设置 locale=es。这不是 API。该部署之后:
  • 现有账户保持西班牙语,直到持有人 PATCH locale
  • 账户默认英语,除非请求体、Accept-Language 或组织默认值另有指定。

组织默认值

平台管理员通过 PUT /v1/admin/orgs/{orgID}/settings 设置 default_localekey: default_locale,值为 "en""es""zh")。"" 会清除覆盖,组织回退为英语。无效值返回 400 invalid_value(不是 invalid_locale)。cbpay 组织不携带此设置 —— 该组织下的账户使用解析链的其余步骤。

公开页面、checkout 与跟踪页

托管页面按以下顺序取值:?lang= / ?locale= → cookie cbpay_pay_locale →(若有会话)账户 locale → 组织默认 → Accept-Languageen。HTML 带有 <html lang="..."> 无效查询参数绝不会变成 400:忽略并继续解析链。 回单与对账单 PDF 接受 ?lang=en|es|zh(默认英语)。文件名随 locale 变化:statement_… / receipt_…(en)、cartola_… / comprobante_… (es)、对账单_… / 收据_…(zh)。 面向人工的 HTTP 响应会盖章 Content-LanguageVary: Accept-Language 请勿发送 cb_locale cookie —— 它不属于本 API。

CSV 导出

平台 CSV 下载(资金流水、出款、入款、转账、收入、审计日志、Qscore 批次 结果、卡片调查、防火墙导出)会按调用方 locale 本地化表头标签。单元格 保持原始值(ID、金额、状态码)。本版本不改费用 CSV。 英语 Qscore 批次表头示例:

不在范围内

Telegram 通知、发卡行的 3-D Secure 挑战页,以及从右到左的文字方向, 均不由本解析链本地化。

错误

完整目录:错误。档案字段:您的档案

常见问题

此前已存在的账户由一次性部署迁移预配置为 locale=es。新账户默认为英语。 请用 PATCH /v1/me 切换 locale。
不会。JSON 响应体和 webhook 仍为英语。locale 适用于托管 HTML、PDF、CSV 表头以及类似的人工文档。
查询参数 locale 是尽力而为。不支持的值会被忽略,解析链进入下一步。只有 PATCH /v1/me / 注册会持久化 locale,并以 invalid_locale 拒绝非法值。
最后修改于 2026年8月18日