1테스트 이벤트 발송
설정한 URL 로 더미 이벤트를 1건 보내요. 실제 이벤트와 같은 경로(큐·서명·재시도)를 타기 때문에 연동 전체를 검증할 수 있어요.
실제 HTTP 요청이 나가요
설정된 수신 URL 로 진짜 요청이 갑니다. 구독 여부와 무관하고, 웹훅이 꺼져 있어도(enabled: false, 연속 실패로 자동 비활성된 경우 포함) 보내요.
코드 예제
curl -X POST "https://message.bootapi.com/alimtalk/webhook/test" \
-H "Authorization: Basic {base64(client_key:secret_key)}"bashrequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
response = commerce.alimtalk_webhook_test
puts response.dataruby응답
{
"delivery_id": "68b0f2a1c3d4e5f6a7b8c9e1",
"url": "https://example.com/hooks/alimtalk",
"queued": true
}jsondelivery_id 로 전송 이력에서 결과를 확인할 수 있어요. payload 는 발송 성공(301) 이벤트 모양의 더미 카드이고 tags 에 test 가 들어 있어요. 실제 카드와 달리 created_at 이 없으니, 파서가 이 필드를 필수로 보면 테스트에서만 실패할 수 있어요.
2서명 시크릿 재발급
코드 예제
curl -X POST "https://message.bootapi.com/alimtalk/webhook/secret" \
-H "Authorization: Basic {base64(client_key:secret_key)}"bashresponse = commerce.alimtalk_webhook_rotate_secret
puts response.data[:secret]ruby응답
{
"configured": true,
"url": "https://example.com/hooks/alimtalk",
"events": [301, 302, 303, 310, 311],
"enabled": true,
"secret": "whsec_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b",
"last_sent_at": "2026-08-27T10:00:05+09:00",
"last_status": 200,
"consecutive_failures": 0,
"auto_disabled_at": null,
"retry_count": 10
}json시각 필드 형식은 응답의 시각 형식을 봐요.
원문은 이 응답에서만 보여요
재발급 응답에서만 secret 이 마스킹 없이 내려와요. 이후 설정 조회에서는 앞 12자만 보이니 바로 안전한 곳에 저장해요.
큐에 있는 건은 예전 시크릿으로 서명돼요
재발급 시점에 이미 큐에 들어간 전송 건은 발송 당시 시크릿으로 서명돼요. 교체 직후 잠깐은 두 시크릿을 모두 허용하도록 수신 서버를 만들어 두면 검증 실패를 피할 수 있어요.
수신 URL 을 저장하지 않아도 발급받을 수 있어요
발송마다 webhook_url 을 실어 보내는 경우 프로젝트 수신 URL 이 필요 없어요. 그때도 이 API 로 서명 검증용 시크릿만 받아 둘 수 있고, 설정 조회는 configured: false 로 나와요. 반대로 위의 테스트 발송은 보낼 곳이 있어야 하므로 수신 URL 을 먼저 저장해야 해요.
에러 코드
| 코드 | error_code | 메시지 | 대처 방법 |
|---|---|---|---|
3029 |
WEBHOOK_NOT_CONFIGURED |
웹훅 미설정 | 테스트 발송에만 나요. 웹훅 설정에서 URL 을 먼저 저장해요. 시크릿 재발급은 설정 없이도 돼요 |
