비수탁형 정산
USDT / USDC는 가맹점 지갑으로 직접 전송되며 BoltUtil은 자금이나 개인 키를 보관하지 않습니다.
결제 연동
서버에서 주문을 생성하고 결제 상태를 조회하며 Webhook 서명을 검증하세요. USDT와 USDC의 지갑 결제 또는 수동 이체를 서비스에 연동할 수 있습니다.
TRON의 USDC는 지원하지 않습니다. 결제 경로를 활성화하고 수신 지갑을 설정해야 합니다. USDbC, USDC.e 및 다른 계약은 표시된 자산을 대신할 수 없습니다.
Ethereum, Polygon, Solana, Base의 Circle 발행 USDC입니다. BNB Smart Chain은 소수점 18자리의 Binance-Peg USDC를 사용합니다. Circle이 발행한 네이티브 USDC가 아닙니다. Base 메인넷의 네이티브 USDC와 브리지 USDT를 지원합니다. 사용 가능 여부는 결제 경로 활성화 및 수신 지갑 상태에 따라 달라집니다.
절차
스테이블코인 체크아웃을 위해 구축된 암호화폐 결제 API
백엔드에서 금액, 네트워크, 외부 주문 ID를 지정해 결제 주문을 생성합니다.
구매자에게 결제 URL, 네트워크, 수신 주소, QR 코드와 정확한 USDT / USDC 금액을 표시합니다.
BoltUtil이 네트워크, 토큰 컨트랙트, 주소, 금액, 주문 만료와 컨펌 수를 확인합니다.
결제 확인 후 Webhook 서명을 검증하고 멱등하게 상품 또는 서비스를 제공합니다.
BoltUtil은 결제를 확인하고 서명된 콜백을 보냅니다. 판매자 서버가 서명과 주문 상태를 확인하고 중복을 제거한 후 상품 제공, 서비스 활성화 또는 잔액 반영을 처리합니다.
통합 참고사항
USDT / USDC는 가맹점 지갑으로 직접 전송되며 BoltUtil은 자금이나 개인 키를 보관하지 않습니다.
TRON, Ethereum, BNB Smart Chain, Polygon, Solana, Base를 지원합니다. TRON은 USDT / USDC만 가능하며 다른 USDT / USDC 경로도 자산 활성화와 유효한 수신 지갑이 필요합니다.
HMAC 서명, 타임스탬프와 재전송 로그로 결제 후 처리를 안전하게 자동화합니다.
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 문서를 확인하세요.
API 문서 읽기API 키를 브라우저에 노출하지 말고 checkout을 표시하기 전에 외부 주문 ID를 저장하세요.
주소와 함께 TRC20, ERC20, BEP20, Polygon 또는 Solana 네트워크를 분명히 안내하세요.
return URL은 결제 증명이 아닙니다. 서명된 Webhook이나 서버 상태 조회를 사용하세요.
결제 연동
아니요. 자금은 가맹점 지갑으로 직접 이동하고 BoltUtil은 전송을 모니터링해 알립니다.
네트워크, 토큰, 수신 주소, 정확한 금액, 주문 상태와 만료 시간을 확인합니다.
TRON은 USDT만 지원합니다. Ethereum, BNB Smart Chain, Polygon, Solana, Base는 설정된 USDT / USDC를 지원합니다. 사용 가능 여부는 활성 채널과 판매자 지갑에 따릅니다.