개발자 문서

확인된 결제 알림 재전송

수신 측 수정 후 CONFIRMED / COMPLETED 알림을 재전송합니다. 대기열 등록은 전달 완료가 아닙니다.

POST /api/v1/webhooks/resend

인증 요청

X-Bolt-Key, X-Bolt-Timestamp 및 X-Bolt-Signature를 포함합니다. 현재 밀리초 timestamp를 사용하고 정확한 요청 본문과 함께 서명하세요.

재전송 시기

시스템에서 결제 확인에 대한 또 다른 알림이 필요할 때 이 엔드포인트를 사용하세요. 재전송으로는 결제 금액을 징수하거나 이체를 조정하거나 주문을 생성하지 않습니다.

자신의 CONFIRMED 또는 COMPLETED 주문만 재전송할 수 있습니다. PENDING, PAID 및 기타 주는 해당되지 않습니다.

사용 가능한 활성 Webhook 구성이 필요합니다. 전달 작업이 지속되지 않으면 엔드포인트는 QUEUED 대신 오류를 반환합니다.

01. 요청 매개변수

application/json
externalOrderId필수
String

orderToken가 아닌 주문 생성 시 제공된 판매자 externalOrderId를 보냅니다. 현재 API 키에 속한 주문에 대해서만 알림을 다시 보낼 수 있습니다.

예시 값

{"externalOrderId": "INV-20260209-99281"}

필수 문자열, 6~64자. 문자, 숫자, 밑줄(_), 하이픈(-)이 허용됩니다.

Body

02. 응답 필드(data)

application/json
notifyUrlString
주문에 기록된 콜백 주소. null일 수 있습니다. 배송은 이 주소를 선호하며 주소가 없는 이전 주문의 경우 연결된 Webhook 구성으로 대체됩니다.
externalOrderIdString
이 재전송과 연결된 판매자 주문 ID는 요청 externalOrderId와 일치합니다.
triggerTypeEnum
이 엔드포인트의 응답에는 항상 MANUAL가 표시되어 판매자가 요청한 재전송을 나타냅니다. 결제 정산 유형이 아닙니다.
statusEnum
재전송 요청 상태입니다. QUEUED는 작업이 지속되었음을 의미합니다. 결제 상태나 배송 증명이 아닙니다.

QUEUED는 비동기 전송 작업이 저장되었다는 뜻이며, 알림이 전달되었다는 뜻은 아닙니다. 가맹점 대시보드의 전송 기록과 수신 측의 HTTP 2xx 응답을 확인하세요.

🚀
수신자 처리

X-Bolt-Webhook-Timestamp 및 X-Bolt-Webhook-Signature를 확인한 다음 처리 전에 eventId 또는 판매자 주문 ID로 중복을 제거합니다. 이미 성공적으로 처리된 중복 알림에 대해서는 HTTP 2xx를 반환합니다.

  • triggerType: MANUAL는 재전송 응답 및 대시보드 전송 기록에 나타납니다. 현재 Webhook 요청 본문에는 triggerType가 포함되어 있지 않습니다. 재전송 여부를 확인하는 데 의존하지 마세요.
  • 각 호출이 성공할 때마다 독립적인 전달 작업이 생성됩니다. 반복되는 요청으로 인해 여러 알림이 전송될 수 있습니다. 다시 보내기 전에 배송 로그를 확인하세요. 재생은 논리적 eventId를 유지합니다.
  • 이 엔드포인트는 주문의 콜백 대상을 재사용하고 새로운 URL를 허용하지 않습니다. 대시보드 기본값을 변경해도 주문에 이미 저장된 주소는 대체되지 않습니다.
Safe

일반적인 오류

이러한 경우는 일반적인 경우입니다. 실제 HTTP 상태와 응답 코드/메시지를 사용하여 실패를 진단합니다. 오류 응답은 결제 결과가 아닙니다.

  • 401: API 키, 원시 본문 서명 및 현재 밀리초 timestamp(서버 시계 5분 이내)를 확인하세요.
  • 404: 주문이 누락되었거나, 다른 판매자에게 속해 있거나, 요금제에서 허용하는 내역을 벗어났습니다.
  • 400: 주문이 CONFIRMED / COMPLETED가 아니거나 사용 가능한 Webhook 구성이 아니며 성공적으로 저장된 배달 작업이 누락되었습니다.
resend / 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='{"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/webhooks/resend" \
  --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