原文签名,服务端调用
API Key 与签名密钥保留在后端,对时间戳、点号和实际发送的 JSON 原文计算 HMAC-SHA256。
支付接入
通过服务端创建 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;网络与币种需要同时匹配启用配置。
配置启用网络和币种对应的钱包,私钥由商户保管。
后端保存商户订单号,创建订单并展示返回的收银台与完整应付金额。
BoltUtil 按网络、币种、地址与金额核对转账,等待满足确认条件。
商户验证签名回调、核对订单并去重后,再开通、交付或入账。
BoltUtil 核对付款并发送签名回调。您的服务端验签、核对订单状态并去重后,再交付商品、开通服务或入账。
接入要点
API Key 与签名密钥保留在后端,对时间戳、点号和实际发送的 JSON 原文计算 HMAC-SHA256。
请求超时不代表创建失败。保留 externalOrderId,先查询状态,再决定重试,避免盲目生成新编号。
BoltUtil 核对付款并发送签名回调。您的服务端需要验签、核对本地订单和付款信息、去重,再执行开通、发货或入账。
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 负责订单与链上付款核对,不托管资金,不需要私钥、助记词或提现权限。
TRON 仅支持 USDT。其他网络支持配置的 USDT / USDC 版本,实际可用组合取决于渠道启用状态与商户钱包。请以接口和收银台返回为准。
returnUrl 只是页面跳转。请以已验证的签名回调或可信的服务端查询为依据,核对订单后幂等处理。
免费商户可查看自己的待核对记录。符合规则且候选唯一的差额付款可进入核对流程;接受或拒绝关联及快捷处理需要有效会员,不会自动按近似金额完成订单。
可以。支持的网络与设备可使用钱包快捷支付,自动填写收款地址、代币和完整应付金额,客户在钱包中核对并确认。首次使用可能需要解锁、授权连接或切换网络;也可扫码或复制地址手动转账,付款后仍需链上确认。