> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cbpayapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 生成结账支付选项（公开）

> 延迟创建付款人在通用收款链接上选择的支付选项并返回其指引 — 银行卡/托管方式的支付 URL、二维码方式的二维码、银行转账的申报参考码，或带精确报价金额和可扫描二维码的专属加密货币 充值地址（`qr_payload` + `qr_png_base64` — 始终为 BTC/TRON/ETH 的裸地址， 钱包与交易所可直接读取；Binance 等会拒绝 BIP-21/EIP-681 URI）。法币方式必须传 `?country=XX`；本地金额在此刻报价并冻结。当国家以多种 币种提供同一方式时（见报价的 `options[]` — 例如 BOB 和 USD 的二维码，或银行卡通道）还须传 `&currency=YYY`；每种币种是独立的支付选项。墨西哥的银行转账会为该链接签发一个专属 CLABE （`destination` 中 `dedicated: true`）：付款人只需转账精确金额，无需填写参考码 — 入账自动路由到该链接。若无法签发专属账户，payload 会降级为传统方式（商户账户 + 转账附言中必填 `reference`）。拉取式方式（报价中 `collect: true`，例如委内瑞拉的 `c2p` 和 `debito_inmediato`）冻结报价并返回付款人需填写的表单定义（`banks[]` 目录、 `requires_otp_request`）；实际扣款通过 `POST /pay/{token}/collect` 执行。对同一 国家+币种+方式重复 POST 返回相同的结果；在无人支付前，选择某个方式不会锁定其他方式。 无需凭证；按 IP 限流。



## OpenAPI

````yaml /openapi.zh.yaml post /pay/{token}/methods/{method}
openapi: 3.1.0
info:
  title: CBPay API
  version: '1.89'
  description: >
    CBPay 是一个多币种支付平台:覆盖拉美的法币付款(payout)与收款(payin)、内部转账、链上充值与提现,以及 KYC
    筛查。每个账户持有四个相互独立的虚拟余额——USDT(运营货币)、USDC、BTC 和 GOLD(纯金克数)——它们绝不混合也不会自动兑换。

    payout 和服务费可从四个余额中的任意一个支付:

    用 `PUT /v1/settlement` 设置默认值,或在单笔 payout 中用

    `settlement_asset` 覆盖。


    所有金额均为十进制字符串,遵循各货币的精度(USDT/USDC/GOLD 为 6 位小数,BTC 为 8 位)。错误始终返回

    `{"error": "<code>", "message": "<detail>"}`。
servers:
  - url: https://api.qbank.cl/platform
    description: Live（生产环境，真实资金）
  - url: https://cryptobank.qbank.cl/platform
    description: Test（沙盒，模拟资金 — pk_test_ 密钥）
security:
  - bearerAuth: []
tags:
  - name: 凭证
    description: >-
      每笔操作的品牌化 PDF 凭证,附带公开的签名 QR 真伪校验、每个响应/webhook 中的
      receipt_url,以及最终状态时的自动邮件发送。
  - name: 身份认证
    description: 注册与登录账户成员。会话有效期 24 小时。
  - name: 账户
    description: 调用账户的档案、成员与 API key。
  - name: 余额
    description: 余额、流水历史与外汇汇率。
  - name: 付款(Payouts)
    description: 从你选择的结算余额扣款的法币派发(默认 USDT)。
  - name: 收款(Payins)
    description: 入账到 USDT 余额的法币充值。
  - name: 转账
  - name: 联系人
  - name: 兑换(Swaps)
    description: CBPay 账户之间的免费内部转账(个人或企业,任意组合)。
  - name: 加密货币
    description: 链上充值与提现(TRON、Ethereum 和 Bitcoin)。
  - name: 隔离钱包
    description: 拥有自身余额的链上钱包(企业不限数量;个人每个网络+资产组合 1 个)——创建、导入、发送、导出私钥与自动转发。余额存在于链上,从不进入账本。
  - name: QR Crypto POS
    description: >-
      面向拥有实体 POS 终端的处理商（企业账户）的定额加密货币二维码收款：已验证商户、每笔收款专属地址 +
      二维码、支付早期检测、按商户对账，以及经加密货币提现通道的退款。
  - name: KYC / KYB
  - name: AML 筛查
    description: 身份验证:个人 KYC、企业 KYB,含 AML 筛查、重新筛查与持续监控。
  - name: 钱包筛查
    description: 区块链地址的 AML 风险评估(制裁、非法资金暴露),按次收费;另附提现与充值的免费自动防护。
  - name: 分析
  - name: Webhooks
    description: 接收签名事件通知的订阅。
  - name: 状态
    description: 服务可用性。
  - name: 银行服务
    description: 真实银行账户:通过国际银行通道接收、持有与发送资金。
  - name: 卡片
    description: 以 Just-In-Time 方式从账户 USDT 余额消费的虚拟卡与实体卡,支持按卡设置消费限额。
  - name: 安全(OTP)
    description: >-
      通过 SMS/WhatsApp/email 发送的一次性验证码,保护敏感操作;并提供自助 2FA 偏好设置。仅适用于用户会话——API key
      豁免。
  - name: 通行密钥
    description: >-
      通过 WebAuthn 使用设备生物识别(Face ID、Touch ID、Windows
      Hello、安全密钥)的无密码登录、带备份码的验证器应用(TOTP),以及会话/设备管理。
  - name: 社交登录
    description: >-
      通过令牌交换以 Google、Apple、Microsoft 和 Facebook 实现无密码注册与登录。前端获取提供方凭证;API 验证后签发
      CBPay 会话。
paths:
  /pay/{token}/methods/{method}:
    post:
      tags:
        - Payins
      summary: 生成结账支付选项（公开）
      description: >-
        延迟创建付款人在通用收款链接上选择的支付选项并返回其指引 — 银行卡/托管方式的支付
        URL、二维码方式的二维码、银行转账的申报参考码，或带精确报价金额和可扫描二维码的专属加密货币 充值地址（`qr_payload` +
        `qr_png_base64` — 始终为 BTC/TRON/ETH 的裸地址， 钱包与交易所可直接读取；Binance 等会拒绝
        BIP-21/EIP-681 URI）。法币方式必须传 `?country=XX`；本地金额在此刻报价并冻结。当国家以多种
        币种提供同一方式时（见报价的 `options[]` — 例如 BOB 和 USD 的二维码，或银行卡通道）还须传
        `&currency=YYY`；每种币种是独立的支付选项。墨西哥的银行转账会为该链接签发一个专属 CLABE （`destination` 中
        `dedicated: true`）：付款人只需转账精确金额，无需填写参考码 — 入账自动路由到该链接。若无法签发专属账户，payload
        会降级为传统方式（商户账户 + 转账附言中必填 `reference`）。拉取式方式（报价中 `collect: true`，例如委内瑞拉的
        `c2p` 和 `debito_inmediato`）冻结报价并返回付款人需填写的表单定义（`banks[]` 目录、
        `requires_otp_request`）；实际扣款通过 `POST /pay/{token}/collect` 执行。对同一
        国家+币种+方式重复 POST 返回相同的结果；在无人支付前，选择某个方式不会锁定其他方式。 无需凭证；按 IP 限流。
      operationId: checkoutMaterialize
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
          description: 嵌入在 `checkout_url` 中的不透明结账令牌。
        - name: method
          in: path
          required: true
          schema:
            type: string
          description: >-
            要生成的方式 — 多国目录中的法币方式（`qr`、`card`、`fintoc`、`bank_transfer`、
            `c2p`、`debito_inmediato`，必须传
            `?country=XX`）或加密货币选项（`crypto:tron:usdt`、
            `crypto:eth:usdt`、`crypto:eth:usdc`、`crypto:btc:btc`，不带国家）。
        - name: country
          in: query
          required: false
          schema:
            type: string
          description: 要生成的法币方式的 ISO-3166 alpha-2 国家代码。法币方式必填，加密货币忽略。
        - name: currency
          in: query
          required: false
          schema:
            type: string
          description: >-
            本次支付选项的扣款币种，从报价的 `options[]`（或 `cards[]`）目录中选取 （例如 `BOB` 或
            `USD`）。当国家以多种币种提供该方式时必填；只有一种币种时忽略 （其币种由国家决定）。
      responses:
        '200':
          description: 所选支付方式的指引。
          content:
            application/json:
              examples:
                crypto:
                  summary: 加密货币 — 专属充值地址与可扫描二维码
                  value:
                    method: crypto:btc:btc
                    payload:
                      chain: btc
                      asset: BTC
                      address: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                      due: '0.00046120'
                      received: '0.00000000'
                      qr_payload: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                      qr_png_base64: iVBORw0KGgo…
                      quote_expires_at: '2026-07-16T18:15:00Z'
                      note: >-
                        send the exact amount to the address; the payment is
                        confirmed on-chain automatically
                bank_transfer:
                  summary: 银行转账 — 申报参考码（报价已冻结）
                  value:
                    method: bank_transfer
                    country: CL
                    currency: CLP
                    local_amount: '47180'
                    payload:
                      reference: CB68JZCT46QE
                      note: >-
                        include the reference in the transfer description so the
                        payment is detected automatically
                bank_transfer_dedicated_account:
                  summary: 银行转账 — 链接专属 CLABE（墨西哥）
                  value:
                    method: bank_transfer
                    country: MX
                    currency: MXN
                    local_amount: '941.00'
                    payload:
                      destination:
                        type: clabe
                        account: '710969000012345678'
                        beneficiary: Acme Store S.A.
                        dedicated: true
                      note: >-
                        transfer the exact amount to this dedicated account; no
                        reference is needed — the payment is detected
                        automatically
                collect:
                  summary: 拉取式方式（委内瑞拉 C2P）— 冻结报价 + 付款人表单定义
                  value:
                    method: c2p
                    country: VE
                    currency: VES
                    local_amount: '4266.77'
                    payload:
                      collect: true
                      currency: VES
                      amount: '4266.77'
                      requires_otp_request: false
                      banks:
                        - code: '0102'
                          name: Banco de Venezuela
                        - code: '0134'
                          name: Banesco
                card:
                  summary: 银行卡 — 所选币种的托管支付页面
                  value:
                    method: card
                    country: BO
                    currency: USD
                    local_amount: '50.75'
                    payload:
                      charge_id: 8f6a2c1e-4b7d-4a1e-9c3f-2d5e6f7a8b9c
                      payment_url: https://api.qbank.cl/pay/cards/9f3XkT2m…
                      expires_at: '2026-07-17T18:15:00Z'
        '400':
          description: 法币方式缺少必填的国家参数，或银行卡缺少扣款币种。
          content:
            application/json:
              examples:
                country_required:
                  summary: 法币方式缺少国家
                  value:
                    error: country_required
                    message: send ?country=XX to choose the payment corridor
                currency_required:
                  summary: 方式提供多种币种但未选择
                  value:
                    error: currency_required
                    message: >-
                      this country accepts this method in more than one
                      currency; send ?currency=XXX
        '404':
          description: 令牌无效或收款链接不存在。
          content:
            application/json:
              example:
                error: not_found
                message: payment link not found
        '409':
          description: 该链接已通过其他方式支付。
          content:
            application/json:
              example:
                error: already_paid
                message: this payment link was already paid
        '410':
          description: 该链接已过期且未支付。
          content:
            application/json:
              example:
                error: checkout_expired
                message: this payment link expired
        '422':
          description: 该方式对此链接或国家不可用。
          content:
            application/json:
              examples:
                method_unavailable:
                  summary: 未提供的方式
                  value:
                    error: method_unavailable
                    message: this payment method is not available for this link
                country_unavailable:
                  summary: 国家没有可用方式
                  value:
                    error: country_unavailable
                    message: no payment methods are available for that country
        '429':
          description: 来自此 IP 的请求过多。
          content:
            application/json:
              example:
                error: too_many_attempts
                message: too many requests; wait a moment and retry
        '503':
          description: 报价暂时不可用。
          content:
            application/json:
              example:
                error: pricing_unavailable
                message: pricing is temporarily unavailable; retry in a moment
      security: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: |
        会话 JWT(来自注册/登录)或 API key(`pk_...`)。
        也接受 `X-API-Key: <token>` 作为替代请求头。

````