跳转到主要内容
CBPay 运行在两个环境上:test(沙盒,模拟资金)和 live (生产,真实资金)。两者完全隔离 —— URL 独立、API 密钥独立、数据独立 —— 并暴露完全相同的 API:基于 test 构建的集成只需更换 base URL 和 密钥即可在 live 运行。
密钥绝不跨环境:pk_test_ 密钥会被 live 拒绝,live 的 pk_ 密钥也会 被 test 拒绝。没有任何开关需要切换 —— 环境由您请求的地址决定。

测试环境的行为

测试环境完全自包含:所有通道(付款、收款、转账、加密货币、银行 账户、卡片、身份验证)均由内部模拟器提供服务,因此永远不依赖任何第三 方的可用性。操作以确定性方式解析:
  • 您创建的任何操作都会被接受,并在几秒后(默认约 10 秒)达到 completed,触发与 live 相同的 webhook。
  • 特定的魔法值可以强制触发其他所有结果,让您无需猜测即可测试 失败处理逻辑。

魔法值

测试环境中的加密货币充值通过控制台(或您的平台管理员)入账 —— 没有真实链可供转入。提现、余额、冻结与 webhook 的行为与 live 完全 一致。

PIX 二维码示例(巴西 QR 出金)

测试环境的扫码与生产一致地校验 BR Code,因此需要真实的 PIX payload。可直接使用以下示例(或用任意静态 PIX 二维码生成器自行 生成):
固定金额 75.00 BRL(正常流程)
开放金额(在确认步骤由您指定金额)
固定金额 80.99 BRL(确认失败 —— 魔法值 .99)

与 live 的差异

  • 任何真实的资金、卡片、邮件或短信都不会离开测试环境。
  • 账户生而已验证:每个新的测试账户都以 kyc_status: approved 开始,因此您可以立即演练所有产品 —— 没有入驻闸门。在 live 中, 账户生而未验证,必须先完成 KYC/KYB 才能转出资金。
  • 账户生而带有数据:每个新的测试账户都自带约 6 个月的真实感演示 历史,覆盖所有产品(payouts、payins、转账、加密、兑换、卡片、 banking、联系人……),余额、对账单和分析报表开箱即用 —— 您可以在 创建任何操作之前就构建仪表盘和报表。
  • 银行目录是虚构的(Simulated National Bank 等)。
  • 汇率是真实的(与 live 同源),因此金额看起来真实。
  • 测试数据与 live 完全独立:不从生产复制任何内容。请将测试数据视为 可丢弃的。

从控制台使用测试模式

控制台的 test/live 开关一键切换您的会话所在环境 —— 无需单独注册, 也无需再次登录。如果您的账户尚不存在于 test,首次切换时会自动创建 —— 与所有测试账户一样,生而已验证并带有演示历史。 API 密钥按环境管理:在测试模式下创建您的 pk_test_ 密钥。

在本地开发中测试 webhook

回调 URL 必须是公网 HTTPS:创建订阅时会拒绝 localhost、私有 IP 和 .local 域名。在本机开发时请使用 HTTPS 隧道:
然后使用该公网 URL 创建订阅(注意测试环境的 base URL):
失败的投递最多重试 5 次(递增退避),即使隧道中断几分钟也不会丢失 事件。请始终验证 HMAC 签名 —— 完整方法见 webhooks

在测试环境演练每个流程

上线前检查清单

在将集成指向 live 环境之前:
  • 将 base URL 换成 https://api.qbank.cl/platform,密钥换成您在 live 模式签发的 pk_...
  • API 密钥保存在密钥管理器中(绝不放在前端或代码仓库)。
  • 每个资金操作都发送由您内部 id 派生的 idempotency_key(不是每次尝试随机生成的 UUID)。
  • 遇到超时或 5xx不要换新密钥重试:使用相同密钥重试,或用 GET 查询状态。
  • 验证每个 webhook 的 HMAC 签名并快速返回 2xx(异步处理)。
  • 正确处理非终态(pendingprocessing),不要假设成功 —— live 的清算时间比模拟的 10 秒更长。
  • 在 live 重新创建了 webhook 订阅(test 的订阅不会迁移)。
  • 查询 GET /v1/services 只展示已启用的产品 —— 见服务
  • 每天通过 GET /v1/movements对账单对账。
  • 与 CBPay 团队保持沟通渠道,处理 unassigned 充值或事故。
live 中,每个操作一旦完成即真实且不可逆。completed 的付款 已经到达收款人账户;唯一的冲正途径在 API 之外(联系 CBPay 团队)。
不收费。手续费从模拟余额中扣除,您可以在不花真钱的情况下演练完整 的计费逻辑。
不可以。每个环境只接受自己的密钥(test 用 pk_test_,live 用 pk_)。另一个环境的密钥会返回 401
每个响应都带有 CBPay-Environment 头(testlive), GET /healthz 也返回 livemode
它在账户创建时生成:约 6 个月确定性、账务一致的演示操作,覆盖 所有产品。它不是真实数据,也不是从生产复制的 —— 两个环境不共享 任何内容。请将测试数据视为可丢弃的。
会 —— 完全相同的事件,使用您 test 订阅的密钥签名。请将其指向您的 开发隧道。
最后修改于 2026年7月17日