재시도와 재전송
재시도 일정
최초 발송을 포함해 최대 8회 전송하며, 모두 실패하면 약 45시간 뒤 최종 실패로 끝나고 셀러에게 이메일을 보내요.
| 시도 | 직전 실패 후 대기 |
|---|---|
| 1회차 | 즉시 |
| 2회차 | 1분 |
| 3회차 | 5분 |
| 4회차 | 30분 |
| 5회차 | 2시간 |
| 6회차 | 6시간 |
| 7회차 | 12시간 |
| 8회차 | 24시간 |
발송 이력과 다시 보내기
- 셀러 콘솔의 외부 연동에서 엔드포인트별 발송 이력(요청 본문·응답 코드·응답 본문 앞 1KB)을 확인하고 재전송해요.
- 재전송 API는 없으며, 같은
webhook-id와 새webhook-timestamp를 사용해 서명을 다시 계산해요.
멱등 처리
const eventId = req.get('webhook-id')
if (await store.hasProcessed(eventId)) {
return res.sendStatus(202)
}
await store.markProcessed(eventId)
// 오래 걸리는 업무는 큐에 넣고 빠르게 응답해요.
await queue.publish({ event: req.body, eventId })
return res.sendStatus(202)웹훅 개요의 응답·처리 규칙에 따라 webhook-id로 멱등 처리하고, 같은 결제·환불의 별도 이벤트는 이벤트 종류와 리소스 ID도 확인해요.
Last updated on