Webhook 이벤트 처리 코드 예시가 있나요?
Webhook을 수신하여 처리하는 코드 예시입니다.
Express.js (Node.js) Webhook 처리
const express = require('express')
const crypto = require('crypto')
const app = express()
app.post('/webhook/pactery', express.raw({ type: 'application/json' }), (req, res) => {
// 1. 서명 검증
const signature = req.headers['x-pactery-signature']
const expected = crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(req.body)
.digest('hex')
if (signature !== `sha256=${expected}`) {
return res.status(401).send('Unauthorized')
}
// 2. 이벤트 처리
const event = JSON.parse(req.body)
switch (event.type) {
case 'document.completed':
handleDocumentCompleted(event.data)
break
case 'signature.declined':
handleDeclined(event.data)
break
}
res.status(200).send('OK')
})
Webhook 서명 검증의 중요성
- 외부에서 가짜 Webhook 요청을 보낼 수 있음
- 반드시 서명(HMAC-SHA256) 검증 후 처리