支付接入

USDT / USDC 支付接口,接入您的业务

通过服务端创建 USDT / USDC 订单,展示收银台,再接收签名付款通知。把收款结果接入您的业务,资金直接进入您配置的钱包。

支持的支付网络

TRON 暂不支持 USDC。支付组合需要后台启用并配置有效的收款钱包。USDbC、USDC.e 及其他合约不能替代此处列出的币种。

Ethereum、Polygon、Solana 和 Base 使用 Circle 发行的原生 USDC。 BNB Smart Chain 使用 Binance-Peg USDC,精度为 18 位,并非 Circle 发行的原生 USDC。 Base 主网支持原生 USDC 与桥接 USDT。是否可收款取决于后台启用状态和有效的收款钱包。

操作步骤

从收款订单,到业务处理

适合自定义网站、SaaS 与数字商品后端。示例使用 USDC / Base;网络与币种需要同时匹配启用配置。

  1. 01

    配置启用网络和币种对应的钱包,私钥由商户保管。

  2. 02

    后端保存商户订单号,创建订单并展示返回的收银台与完整应付金额。

  3. 03

    BoltUtil 按网络、币种、地址与金额核对转账,等待满足确认条件。

  4. 04

    商户验证签名回调、核对订单并去重后,再开通、交付或入账。

BoltUtil 核对付款并发送签名回调。您的服务端验签、核对订单状态并去重后,再交付商品、开通服务或入账。

接入要点

把关键步骤,做准确

原文签名,服务端调用

API Key 与签名密钥保留在后端,对时间戳、点号和实际发送的 JSON 原文计算 HMAC-SHA256。

超时后,查询原订单

请求超时不代表创建失败。保留 externalOrderId,先查询状态,再决定重试,避免盲目生成新编号。

付款确认后,只处理一次

BoltUtil 核对付款并发送签名回调。您的服务端需要验签、核对本地订单和付款信息、去重,再执行开通、发货或入账。

Node.js 20+ · USDC / Base
import crypto from 'node:crypto'

// Node.js 20+ server module. Call only after authenticating the buyer.
// order must come from your database, with ownership and price checked.
// Never pass req.body directly; persist externalOrderId before calling.
export async function createStablecoinCheckout(order) {
  const key = process.env.BOLTUTIL_API_KEY
  const secret = process.env.BOLTUTIL_API_SECRET
  if (!key || !secret) throw new Error('Missing server credentials')

  const payload = JSON.stringify({
    externalOrderId: order.externalOrderId,
    amount: order.amount,
    currency: 'USDC',
    network: 'BASE',
    notifyUrl: 'https://merchant.com/webhooks/boltutil',
    returnUrl: 'https://merchant.com/orders/complete'
  })
  const timestamp = Date.now().toString()
  const signature = crypto.createHmac('sha256', secret)
    .update(`${timestamp}.${payload}`).digest('hex')

  // A timeout does not prove creation failed. Query order/status using
  // the SAME externalOrderId before deciding whether to retry.
  const response = await fetch('https://api.boltutil.com/api/v1/order/create', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-Bolt-Key': key,
      'X-Bolt-Timestamp': timestamp,
      'X-Bolt-Signature': signature
    },
    body: payload,
    signal: AbortSignal.timeout(10000)
  })
  const result = await response.json()
  if (!response.ok || result.code !== 200 || !result.data?.checkoutUrl) {
    throw new Error('Create order failed; reconcile the saved order')
  }
  // Save result.data on the server. Return only checkout data to the buyer.
  return result.data
}

此处为服务端接入示例,不会发送请求。实际调用需 API Key、时间戳与请求原文签名,并校验本地订单和价格。

查看开发文档

支付接入

常见问题

同一个商户订单号可以重复创建吗?

同一商户下的 externalOrderId 必须唯一,重复创建会被拒绝。请求超时后先查询原订单,不要直接生成新编号。

资金会经过 BoltUtil 平台吗?

不会。客户直接转入您配置的收款钱包。BoltUtil 负责订单与链上付款核对,不托管资金,不需要私钥、助记词或提现权限。

所有网络都支持 USDT 和 USDC 吗?

TRON 仅支持 USDT。其他网络支持配置的 USDT / USDC 版本,实际可用组合取决于渠道启用状态与商户钱包。请以接口和收银台返回为准。

客户返回网站后可以发货吗?

returnUrl 只是页面跳转。请以已验证的签名回调或可信的服务端查询为依据,核对订单后幂等处理。

少付或多付如何处理?

免费商户可查看自己的待核对记录。符合规则且候选唯一的差额付款可进入核对流程;接受或拒绝关联及快捷处理需要有效会员,不会自动按近似金额完成订单。

客户可以连接钱包,自动填写金额吗?

可以。支持的网络与设备可使用钱包快捷支付,自动填写收款地址、代币和完整应付金额,客户在钱包中核对并确认。首次使用可能需要解锁、授权连接或切换网络;也可扫码或复制地址手动转账,付款后仍需链上确认。

为您的业务,接上稳定币收款

创建订单、核对付款,确认后通知您的系统。