How to handler Razorpay Webhooks with signature validation
Firstly create a webhook, for local testing make use of ngrok port forwaring.
![razorpay webhook fastify tutorial](https://smartcodehelper.com/wp-content/uploads/2024/01/image-1-1024x390.png)
Fastify Backend Code – Razorpay webhook
import { validateWebhookSignature } from 'razorpay/dist/utils/razorpay-utils'; export async function verificationHandler( request: FastifyRequest, reply: FastifyReply, ) { const webhookSignature = request.headers['x-razorpay-signature'] as string; const webhookBody = request.body; const webhookSecret = 'YOUR_WEBHOOK_SECRET' const isValidSignature = validateWebhookSignature(JSON.stringify(webhookBody), webhookSignature, webhookSecret) if (!isValidSignature) { console.log("invalid signature ....") reply.code(400).send('Invalid signature'); return; } console.log("signature validated....") //DO rest of actions }
Node js example of using razorpay webhook handing with razorpay header signature. Given example fastify controller code for Razorpay webhook