토스페이먼츠 v2 webhook을 Node.js Express로 수신 중인데 5% 정도 요청에서 signature 검증이 실패합니다.
app.post('/webhooks/toss', express.json(), (req, res) => {
const signature = req.headers['x-tosspayments-signature']
const body = JSON.stringify(req.body)
const expected = crypto
.createHmac('sha256', SECRET)
.update(body)
.digest('base64')
if (signature !== expected) {
return res.status(401).send('Invalid signature')
}
// 처리
})
증상
- 대부분 요청 검증 OK
- 약 5% (특히 한글 메모 포함 요청) 검증 실패
- 실패한 요청을 토스 콘솔에서 재시도하면 또 실패
UTF-8 인코딩 문제일까요? 어떻게 처리하시나요?
댓글 0