Notificaciones
Webhooks
Webhook (también conocido como devolución de llamada web) es un método simple que facilita que una aplicación o sistema proporcione información en tiempo real cada vez que ocurre un evento, es decir, es una forma de recibir datos pasivamente entre dos sistemas a través de un HTTP POST.
Una vez configurado, el Webhook se enviarĂĄ siempre que se produzcan uno o mĂĄs eventos registrados, evitando un trabajo de bĂșsqueda innecesarios de una respuesta y, en consecuencia, una sobrecarga del sistema y pĂ©rdida de datos siempre que se presente alguna situaciĂłn.
Luego de recibir una notificaciĂłn en su plataforma, Mercado Pago esperarĂĄ una respuesta para validar si la recibiĂł correctamente.
Requisitos previos
Antes de configurar las notificaciones de Webhooks para Wallet Connect, considere los requisitos enumerados a continuaciĂłn.
Requisito | DescripciĂłn |
Certificado SSL | Protocolo que permite establecer comunicaciones seguras en Internet para actividades como navegaciĂłn, correo electrĂłnico y otras transferencias de datos. |
Respuesta al request | El endpoint debe devolver un cĂłdigo de respuesta 2XX para reconocer la recepciĂłn del request. Todos los cĂłdigos de respuesta fuera de 2XX activarĂĄn reintentos exponenciales de Mercado Pago. |
Timeout | Para evitar problemas de timeout, la aplicaciĂłn debe devolver una respuesta antes de activar una lĂłgica compleja. |
Solicitud de permiso | Para poder incluir solicitudes en la lista de permisos a través de DNS, las solicitudes llegarån a través del endpoint api.mercadopago.com. El integrador deberå deshabilitar el CSRF (Cross-site request forgery) para api.mercadopago.com, lo que permitirå las solicitudes de Mercado Pago. |
Tipos de eventos
Hay tres tipos diferentes de eventos que le permiten recibir notificaciones. Estos eventos se refieren a la actualizaciĂłn y/o cancelaciĂłn de un contrato.
ConfirmaciĂłn de la vinculaciĂłn por parte del usuario.
A partir de este evento, el integrador es notificado cuando un usuario confirma la vinculaciĂłn.
Para esto, envĂe un GET al endpoint /v2/wallet_connect/agreements/{agreement_id} para obtener el agreement_code
y external_flow_id
. Esto permitirĂĄ seguir con la creaciĂłn del token de pago para la creaciĂłn de los pagos.
A continuaciĂłn se muestra un ejemplo de cĂłdigo con la informaciĂłn enviada en el momento del request.
curl -X POST 'https://api.integrator.com/wallet_connect/events' \
-H 'Content-Type: application/json' \
-d '{
"id": "22abcd1235ed497f945f755fcaba3c6c",
"type": "wallet_connect",
"entity": "agreement",
"action": "status.updated",
"date": "2021-09-30T23:24:44Z",
"model_version": 1,
"version": 0,
"data": {
"id": "22abcd1235ed497f945f755fcaba3c6c",
"status": "confirmed_by_user"
}
}'
CancelaciĂłn de una vinculaciĂłn entre integrador y Mercado Pago
En este caso, el usuario tiene la posibilidad de darse de baja de una vinculaciĂłn, lo que provoca la cancelaciĂłn del contrato existente. Cuando esto sucede, el payer_token
se invalida y no se realizan mĂĄs cargos al usuario.
Observa a continuaciĂłn un ejemplo de cĂłdigo con la informaciĂłn enviada en el momento del request.
curl -X POST 'https://api.integrator.com/wallet_connect/events' \
-H 'Content-Type: application/json' \
-d '{
"id": "22abcd1235ed497f945f755fcaba3c6c",
"type": "wallet_connect",
"entity": "agreement",
"action": "status.updated",
"date": "2021-09-30T23:24:44Z",
"model_version": 1,
"version": 0,
"data": {
"id": "22abcd1235ed497f945f755fcaba3c6c",
"status": "cancelled"
}
}'
ActualizaciĂłn del medio de pago de una vinculaciĂłn
En este caso, el usuario puede agregar o actualizar un medio de pago secundario (por defecto, dinero en cuenta de Mercado Pago es el primer medio de pago).
En funciĂłn de los estados de pago, es posible detectar pagos rechazados y notificar al usuario para que realice la actualizaciĂłn o agregue un medio de pago secundario.
Observa a continuaciĂłn un ejemplo de cĂłdigo con la informaciĂłn enviada en el momento del request.
curl -X POST 'https://api.integrator.com/wallet_connect/events' \
-H 'Content-Type: application/json' \
-d '{
"id": "22abcd1235ed497f945f755fcaba3c6c",
"type": "wallet_connect",
"entity": "agreement",
"action": "payment_method.updated",
"date": "2021-09-30T23:24:44Z",
"model_version": 1,
"version": 0,
"data": {
"id": "22abcd1235ed497f945f755fcaba3c6c"
}
}'
En la siguiente tabla mostramos con mĂĄs detalle los posibles valores que se envĂan en el cuerpo del request de cancelaciĂłn y actualizaciĂłn del medio de pago de una vinculaciĂłn.
Campo | Valor | Tipo | DescripciĂłn |
id | UUID/Number | String | ID exclusivo del evento. Este ID evita mensajes duplicados del lado del integrador. |
type | wallet_connect | String | Representa eventos sobre la vinculaciĂłn entre el integrador y el usuario de Mercado Pago. Este valor siempre serĂĄ wallet_connect . |
entity | agreement | String | Entidad relacionada con el vinculaciĂłn. El valor siempre serĂĄ agreement . |
action | payment_method.updated | String | - Indica que se ha actualizado el medio de pago secundario asociado a la vinculaciĂłn. - Puede ser utilizado por el vendedor como una forma de saber si se debe realizar un nuevo cargo. |
action | status.updated | String | - Indica que la vinculaciĂłn fue cancelada o confirmada por el usuario. - Puede ser usado por el integrador para saber si el usuario confirmĂł la vinculaciĂłn o si fue cancelada y no se deben realizar nuevos cobros. |
date | {{action_date}} | Date | Una fecha aproximada (en formato Zulu) asociada con el evento. |
data | { id: {{agreement_id}}, status: {{agreement_status}} } | id: String status: String | Este campo puede proporcionar detalles adicionales sobre el evento segĂșn el tipo y la acciĂłn. |
model_version | 1 | Integer | VersiĂłn del modelo del body del Webhook. Siempre serĂĄ 1 . |
version | 0 | Integer | VersiĂłn para identificar duplicados dentro del mismo id. |
ConfiguraciĂłn
La configuración de los webhooks se realiza a través del Panel del desarrollador. A continuación explicaremos cómo indicar las URLs que serån notificadas y cómo configurar los eventos para los que se recibirån notificaciones.
- Si aĂșn no tienes una aplicaciĂłn creada, accede a tu Panel del desarrollador y haz clic en Entrar para iniciar sesiĂłn si aĂșn no estĂĄ conectado.
- Con la aplicación creada, ve a la pestaña Notificaciones de Webhooks en tu Panel de control y configura las URLs de producción y prueba de las que se recibirån notificaciones.
- También podrås experimentar y probar si la URL indicada estå recibiendo notificaciones correctamente, pudiendo verificar la solicitud, la respuesta dada por el servidor y la descripción del evento.
- Si necesitas identificar varias cuentas, al final de la URL indicada puedes indicar el parĂĄmetro
?customer=(sellername) endpoint
para identificar a los vendedores. - Luego seleccione el evento Wallet Connect del que recibirĂĄ notificaciones en formato
json
a través de unHTTP POST
a la URL especificada anteriormente. Un evento es cualquier tipo de actualizaciĂłn del objeto informado, incluidos los cambios de estado o atributos. Vea los eventos que se pueden configurar en la siguiente tabla.
Tipo de notificaciĂłn | AcciĂłn | DescripciĂłn |
ConfirmaciĂłn de la vinculaciĂłn | status.updated | El usuario ha confirmado una vinculaciĂłn. |
CancelaciĂłn de la vinculaciĂłn | status.updated | VinculaciĂłn entre el integrador y el usuario de Mercado Pago fue cancelada por el usuario. |
Actualización de método de pago | payment_method.updated | El usuario ha actualizado el método de pago de una vinculación. |