웹훅 signature 검증부분 질문드립니다!

payout.changed, seller.changed 웹훅 헤더에만 포함되는 웹훅 서명입니다. 토스페이먼츠가 보낸 웹훅인지 검증할 수 있는 값입니다. 검증하는 방법은 아래와 같습니다.

{WEBHOOK_PAYLOAD}:{tosspayments-webhook-transmission-time} 값을 보안 키로 HMAC SHA-256 해싱하세요.

웹훅 헤더에서 v1: 뒤에오는 2개의 값을 모두 base64로 디코딩하세요.

1번에서 해시값과 2번에서 디코딩한 값 중 하나가 일치하면 토스페이먼츠에서 보낸 올바른 웹훅이 맞습니다. 일치하지 않으면 토스페이먼츠에서 보낸 웹훅이 아니고 웹훅 데이터를 신뢰할 수 없습니다. 위에 있는 헤더를 예시로 들면, 아래 둘 중 하나의 값이 true이어야 합니다.

HMACSHA256({WEBHOOK_PAYLOAD}:2024-09-05T12:19:21+09:00) == base64.decode(TvgZ2rrdPJvzhDBOej8UMybv0SHufgwdiv6+OzANJd4=)
HMACSHA256({WEBHOOK_PAYLOAD}:2024-09-05T12:19:21+09:00) == base64.decode(/CSvw0DpqBaCVxUAEbzG2Q/7O9V6epYWyKzwavm4MU4=)

, .

1. 여 hmac?
2. {WEBHOOK_PAYLOAD}:{tosspayments-webhook-transmission-time} 이 request는 body"dict : " 서 hmac?
) body = {'a':23}, header= {'time':'0000-00-00'} need_to_encode = "{'a':23}:0000-00-00"

.
Was this page helpful?