개발자 문서

USDC 결제 연동 가이드

5개 네트워크의 USDC 버전, 컨트랙트 또는 Mint, 소수 자릿수를 확인하세요. 지원과 실시간 가용성은 다릅니다.

메인넷 지원 토큰 식별 정보

컨트랙트와 Mint는 기본 설정이며 실시간 채널 상태가 아닙니다. 주문 생성에는 활성 네트워크와 자산, 유효한 판매자 지갑이 필요합니다. API의 payment.address로 보내고 컨트랙트나 Mint에는 송금하지 마세요.

메인넷 지원 토큰 식별 정보
네트워크통화컨트랙트 / Mint토큰 소수 자릿수
ERC20 network logoERC20USDC0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB486
BEP20 network logoBEP20USDC0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d18
POLYGON network logoPOLYGONUSDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c33596
SOLANA network logoSOLANAUSDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v6
BASE network logoBASEUSDC0x833589fcd6edb6e08f4c7c32d4f71b54bda029136

판매자 설정

  1. 해당 네트워크의 수신 지갑과 활성 Webhook URL 및 키를 설정하세요. API Key와 HMAC 키는 서버에만 보관하세요.
  2. network / currency 조합의 사용 가능 여부를 확인하세요. 관리자가 RPC, 네트워크, 자산을 관리하므로 판매자는 스캐너를 배포할 필요가 없습니다.
  3. 응답의 payment.amount, payment.address, currency, network 및 만료 시간을 표시하세요. QR 데이터는 이미지가 아닙니다.
  4. 서명을 검증하고 중복을 제거한 후 이벤트를 영구 저장하고 HTTP 2xx를 반환하세요. 주문 처리는 멱등성을 유지하세요.

네트워크 및 자산 유의 사항

Ethereum, Polygon, Solana, Base는 네이티브 USDC를 사용합니다. BNB Smart Chain은 18자리 Binance-Peg USDC를 사용합니다. TRC20은 USDC를 지원하지 않습니다. USDbC, USDC.e 및 다른 컨트랙트로 대체할 수 없습니다.

  • 여기서 ERC20은 Ethereum 메인넷이며 해당 표준을 쓰는 모든 네트워크가 아닙니다. 같은 0x 주소가 여러 EVM 네트워크에 있을 수 있으므로 주문의 네트워크와 토큰 버전을 사용하세요. USDC는 Circle 네이티브 버전으로 브리지 버전으로 대체할 수 없습니다.

서명된 요청 및 응답 예시

25.00은 형식 예시입니다. 실제 주문 금액을 사용하고 자산의 최소 금액을 충족하세요. 주소, 주문, 해시는 가상입니다. 복사한 cURL / Java는 요청을 전송하므로 실행 전에 본인의 키를 설정하세요.

create / cURL
# Run against your account only when ready; this sends an API request.
: "${BOLTUTIL_API_KEY:?Set your complete API Key}"
: "${BOLTUTIL_WEBHOOK_SECRET:?Set your Webhook secret}"
timestamp=$(python3 -c 'import time; print(int(time.time()*1000))')
body='{"amount":"25.00","currency":"USDC","network":"ERC20","externalOrderId":"INV-20260209-99281"}'
signature=$(printf '%s.%s' "$timestamp" "$body" | openssl dgst -sha256 -hmac "$BOLTUTIL_WEBHOOK_SECRET" | awk '{print $NF}')

curl --request POST "https://api.boltutil.com/api/v1/order/create" \
  --header 'Content-Type: application/json' \
  --header "X-Bolt-Key: $BOLTUTIL_API_KEY" \
  --header "X-Bolt-Timestamp: $timestamp" \
  --header "X-Bolt-Signature: $signature" \
  --data-binary "$body"

주소, 거래 해시 및 주문은 예시입니다. 이를 자신만의 테스트 data로 바꾸세요.

Base URL

PROD
https://api.boltutil.com
전체 주문 매개변수 →

확인 및 콜백 처리

감지와 확인은 다릅니다. 상태와 검증된 콜백으로 판단하세요. PAID는 확인 대기 중입니다. CONFIRMED / COMPLETED는 수동 수락 결과일 수도 있으므로 paidAmount, shortfallAmount, settlementType을 확인하세요. COMPLETED는 상품 제공을 증명하지 않습니다.

연동 관련 질문

지원 통화는 지금 바로 사용할 수 있나요?

항상 그렇지는 않습니다. 네트워크와 자산이 활성화되고 지갑 및 Webhook이 유효해야 합니다. 정적 표는 실시간 가용성을 표시하지 않습니다.

고객이 금액을 반올림해도 되나요?

payment.amount를 전액 결제하세요. 시스템은 같은 지갑의 주문을 구분하기 위해 올림하고 소액을 추가할 수 있습니다. 임의로 반올림하거나 잘라내지 마세요.

지갑 잔액이 늘면 상품을 제공해도 되나요?

확인된 주문 결과와 알림의 진위를 검증하세요. 잘못된 네트워크, 토큰 버전, 금액 및 중복 이벤트는 처리해야 합니다. 잔액 증가만으로는 결제 결과를 판단할 수 없습니다.