From 101531a05bb8224101e2f06037cf7aa9e1c17744 Mon Sep 17 00:00:00 2001 From: goncy Date: Thu, 7 Nov 2024 11:52:46 -0300 Subject: [PATCH] Add webhook type check --- integraciones/suscripciones/README.md | 21 +++++++++++-------- .../src/app/api/mercadopago/route.ts | 17 ++++++++------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/integraciones/suscripciones/README.md b/integraciones/suscripciones/README.md index 2855e19..7052efb 100644 --- a/integraciones/suscripciones/README.md +++ b/integraciones/suscripciones/README.md @@ -142,15 +142,18 @@ import api, {mercadopago} from "@/api"; export async function POST(request: Request) { // Obtenemos el cuerpo de la petición que incluye el tipo de notificación - const body: {data: {id: string}} = await request.json(); - - // Obtenemos la suscripción - const preapproval = await new PreApproval(mercadopago).get({id: body.data.id}); - - // Si se aprueba, actualizamos el usuario con el id de la suscripción - if (preapproval.status === "authorized") { - // Actualizamos el usuario con el id de la suscripción - await api.user.update({suscription: preapproval.id}); + const body: {data: {id: string}; type: string} = await request.json(); + + // Solo nos interesan las notificaciones de suscripciones + if (body.type === "subscription_preapproval") { + // Obtenemos la suscripción + const preapproval = await new PreApproval(mercadopago).get({id: body.data.id}); + + // Si se aprueba, actualizamos el usuario con el id de la suscripción + if (preapproval.status === "authorized") { + // Actualizamos el usuario con el id de la suscripción + await api.user.update({suscription: preapproval.id}); + } } // Respondemos con un estado 200 para indicarle que la notificación fue recibida diff --git a/integraciones/suscripciones/src/app/api/mercadopago/route.ts b/integraciones/suscripciones/src/app/api/mercadopago/route.ts index 25e26cd..e046d69 100644 --- a/integraciones/suscripciones/src/app/api/mercadopago/route.ts +++ b/integraciones/suscripciones/src/app/api/mercadopago/route.ts @@ -4,15 +4,18 @@ import api, {mercadopago} from "@/api"; export async function POST(request: Request) { // Obtenemos el cuerpo de la petición que incluye el tipo de notificación - const body: {data: {id: string}} = await request.json(); + const body: {data: {id: string}; type: string} = await request.json(); - // Obtenemos la suscripción - const preapproval = await new PreApproval(mercadopago).get({id: body.data.id}); + // Solo nos interesan las notificaciones de suscripciones + if (body.type === "subscription_preapproval") { + // Obtenemos la suscripción + const preapproval = await new PreApproval(mercadopago).get({id: body.data.id}); - // Si se aprueba, actualizamos el usuario con el id de la suscripción - if (preapproval.status === "authorized") { - // Actualizamos el usuario con el id de la suscripción - await api.user.update({suscription: preapproval.id}); + // Si se aprueba, actualizamos el usuario con el id de la suscripción + if (preapproval.status === "authorized") { + // Actualizamos el usuario con el id de la suscripción + await api.user.update({suscription: preapproval.id}); + } } // Respondemos con un estado 200 para indicarle que la notificación fue recibida