웹훅
웹훅은 스토어에서 이벤트가 발생할 때 애플리케이션에 알림을 보냅니다 — 주문 확인, 결제 완료, 재고 부족 알림 등.설정 방법
Admin API를 통해 웹훅을 생성합니다:secret이 포함됩니다.
모든 이벤트를 구독하려면 와일드카드 *를 사용하세요:
이벤트 유형
페이로드 형식
서명 검증
모든 웹훅 전송에는X-Webhook-Signature 헤더(HMAC-SHA256)가 포함됩니다. 처리하기 전에 반드시 이를 검증하세요.
SDK 헬퍼 사용
수동 검증
SDK를 사용하지 않는 경우 직접 서명을 계산합니다:멱등성
HTTP 멱등성 키
멱등성 키를 사용하면 중복 리소스를 생성하지 않고 POST 요청을 안전하게 재시도할 수 있습니다. 고유한 값(UUID 권장)으로Idempotency-Key 헤더를 포함하세요.
주요 규칙:
- 키는 요청마다 고유해야 합니다 — UUID를 사용하세요
- 키는 스토어(API 키) 범위로 제한됩니다
- 캐시된 응답은 24시간 후 만료됩니다
- 성공 응답(2xx)만 캐시됩니다
Idempotency-Key헤더는 선택 사항입니다. 생략하면 요청이 정상적으로 처리됩니다
멱등적 웹훅 처리
웹훅은 재시도, 네트워크 문제 또는 인프라 장애 조치로 인해 두 번 이상 전달될 수 있습니다. 핸들러는 반드시 멱등적이어야 합니다.재시도 정책
실패한 전송은 지수 백오프로 재시도됩니다:
5회 연속 실패 후 웹훅 엔드포인트는 비활성 상태로 표시되며 대시보드에 알림이 전송됩니다.
빠른 응답 모범 사례
이벤트 순서
이벤트는 순서가 뒤바뀌어 도착할 수 있습니다. 예를 들어, 네트워크 상태에 따라order.paid가 order.created보다 먼저 도착할 수 있습니다.
전략: 도착 순서가 아닌 타임스탬프 사용
- 이벤트를 대기 큐에 저장합니다
- 선행 이벤트(예:
order.created)가 도착하면 먼저 처리합니다 - 그런 다음 해당 리소스에 대한 대기 중인 이벤트를 재처리합니다
큐 기반 처리
프로덕션 워크로드의 경우 웹훅을 큐에 수신하고 비동기로 처리합니다.Inngest 사용
BullMQ 사용
테스트
테스트 이벤트 전송
Admin API를 사용하여 웹훅 엔드포인트에 테스트 이벤트를 전송합니다:"test": true가 포함된 합성 이벤트를 전송하므로 테스트 이벤트와 실제 이벤트를 구분할 수 있습니다.
ngrok을 사용한 로컬 개발
개발 중 로컬 머신에서 웹훅을 수신하려면:다음 단계
Stripe 연동
웹훅 기반 결제 확인으로 Stripe 결제를 설정합니다.
TossPayments 연동
웹훅 기반 결제 확인으로 TossPayments를 설정합니다.
레시피
일반적인 커머스 흐름을 다루는 실용적인 코드 레시피.
오류 처리
API 오류 코드 및 권장 처리 전략.