diff --git a/guides/additional-content/your-integrations/ipn.en.md b/guides/additional-content/your-integrations/ipn.en.md index f267ca7cde..27ce57e7b3 100644 --- a/guides/additional-content/your-integrations/ipn.en.md +++ b/guides/additional-content/your-integrations/ipn.en.md @@ -1,28 +1,84 @@ # IPN -The **IPN** (Instant Payment Notification) is a mechanism that allows your application to receive notifications from Mercado Pago informing the status of a certain payment, chargeback and `merchant_order`, through a call HTTP POST to inform about your transactions. +Instant Payment Notification (IPN) is a mechanism that allows your application to receive notifications from Mercado Pago informing about the status of a specific payment, chargeback, or `merchant_order`, through an `HTTP POST` call to report on your transactions. -In IPN notifications, only one notification URL can be configured per account (depending on the application, more than one application can use this URL). In addition, there is also the possibility of using this type of notification from the object's `notification_url` field, so the URL can be different for each object or application. +> WARNING +> +> Important +> +> IPN notifications will be discontinued. Additionally, despite receiving the `x-Signature` header, they do not allow validation through the secret key to confirm they were sent by Mercado Pago. If you wish to perform this origin validation, we recommend migrating to [Webhooks notifications](/developers/en/docs/your-integrations/notifications/webhooks). + +IPN notifications can be configured in two ways: + +| Configuration mode | Description | +|---|---| +| [Description configuration through Your integrations](/developers/en/docs/your-integrations/notifications/ipn#bookmark_configuration_through_your_integrations) | Only **one notification URL** can be configured per account (depending on the application, more than one application can use this URL). | +| [Configuration during the creation of a payment, preference or order](/developers/en/docs/your-integrations/notifications/ipn#bookmark_configuration_during_payment_creation) | This can be done using the `notification_url` field. The URL can be different for each object. | + +In this documentation, we will explain the necessary configurations for receiving IPN notifications, as well as the required actions to ensure that Mercado Pago validates that the messages were properly received. -In this documentation, we will explain the necessary settings for receiving IPN notifications (through the Dashboard or when creating payments), as well as showing the necessary actions that you must take for Mercado Pago to validate that the messages were properly received. +## Configuration through Your integrations -## URLs and events configuration +Configure notifications directly in Your integrations efficiently and securely. + +### Specify URLs and configure events + +To configure IPN notifications via Your integrations, it is necessary to specify the URLs where they will be received and specify the events for which you wish to receive notifications. + +> WARNING +> +> Important +> +> When configuring IPN notifications via Your integrations, you are setting up the URL and Events for **all applications within your Mercado Pago account**. -Below we will explain how to indicate the URLs that will be notified and how to configure the events for which notification will be received. +To configure URLs and events, follow these steps: -![ipn](/images/notifications/ipn__pt.png) +1. Access [Your integrations](/developers/panel/app) and select the application to enable notifications for your account. If you haven't created an application yet, access the [Developer Dashboard documentation](/developers/en/docs/your-integrations/dashboard) and follow the instructions to do so. +2. In the left menu, click on **IPN** and configure the **production URL** that will be used to receive notifications. Keep in mind that you can also experiment and test whether the indicated URL is correctly receiving notifications, allowing you to verify the request, server response, and event description. -1. If you haven't done so already, create an application in the [developer Dashboard](/developers/panel/app). -2. Once the application is created, navigate to the IPN section on the **Application Details** page. -3. Next, configure the **production URL** where the notifications will be received. -4. If you need to identify multiple accounts, at the end of the indicated URL you can specify the parameter `?customer=(sellername) endpoint` to identify the sellers. -5. Select the **events** from which you will receive notifications in `json` format using `HTTP POST` to the URL specified above. We notify you of events related to your orders (`merchant_orders`), chargebacks received (`chargebacks`), payments received (`payment`), payment attempts (`point_integration_ipn`) ou fraud alerts (`delivery_cancellation`). +![ipn](/images/dashboard/ipn_es_.png) + +> NOTE +> +> Note +> +> If you need to identify multiple accounts, you can add the parameter `?cliente=(sellersname)` to the endpoint URL to identify the sellers. + +3. Select the **events** from which you want to receive notifications in JSON format via an HTTP POST to the URL specified earlier. An event can be any type of update on the reported object, including status changes or attributes. Refer to the table below to see the events that can be configured, considering the integrated Mercado Pago solution and its business specifics. + + +| Events | Name in Your Integrations | Topic | Associated products | +|---|---|---|---| +| Creation and update of payments | Payments | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Subscriptions
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +----[mla, mlm, mlb]----| Completion and cancellation of payment attempt, or error processing payment attempt from Mercado Pago Point devices. | Point Integrations | `point_integration_ipn` | Mercado Pago Point |------------ +| Fraud alerts after order processing | Fraud alerts | `delivery_cancellation` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro | +| Creation, closure, or expiration of commercial orders | Commercial orders | `merchant_order` | Checkout Pro
QR Code | +| Opening of chargebacks, status changes, and modifications related to the release of funds | Chargebacks | `chargebacks` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | + +> WARNING +> +> Important +> +> If you have any questions about the topics to activate or the events that will be notified, consult the documentation [Additional information about notifications](/developers/en/docs/your-integrations/notifications/additional-info). -## Configuration while creating payments +4. Finally, click on **Save**. -It is possible to configure the notification URL more specifically for each payment using the `notification_url` field. See below how to do this using the SDKs. +## Configuration during payment creation -1. In the `notification_url` field, indicate the URL from which notifications will be received, as shown below. +During the process of creating a payment, preference or order, it's possible to configure the notification URL more specifically for each payment using the `notification_url` field and implementing the necessary notification receiver. + +----[mlm, mlb, mla]---- + +> WARNING +> +> Important +> +> It's not possible to configure notifications for the `point_integration_wh` topic using this method. To activate these topics, use [Your integrations settings](/developers/en/docs/your-integrations/notifications/ipn#bookmark_configuration_through_your_integrations). +------------ + +Next, we explain how to do this with the help of the SDKs. + +1. In the `notification_url` field, specify the URL where notifications will be received, as shown in the example below. To receive notifications exclusively via Webhooks and not via IPN, you can add the parameter `source_news=ipn` to the `notification_url`. For example: `https://www.yourserver.com/notifications?source_news=ipn`. [[[ @@ -245,7 +301,7 @@ curl -X POST \ ``` ]]] -2. Implement the notifications receiver using the following code as an example: +2. Implement the notification receiver using the following code as an example: ```php ``` -3. After the configurations are completed, Mercado Pago will notify this URL with two parameters every time a resource is created or updated: +3. Once the configurations are done, Mercado Pago will notify that URL with two parameters every time a resource is created or updated. For example, if you set up the URL `https://www.yoursite.com/notifications`, you will receive payment notifications like this: `https://www.yoursite.com/notifications?topic=payment&id=123456789`. | Field | Description | | --- | --- | -| `topic` | Identifies what the resource is, it can be `payment`, `chargebacks`, `merchant_order ` or `point_integration_ipn`. | +| `topic` | Identifies what the resource is, which could be `payment`, `chargebacks`, `merchant_order ` o `point_integration_ipn`. | | `id` | It is a unique identifier of the notified resource. | -> For example, if you set the URL: `https://www.yoursite.com/notifications`, you will receive payment notifications like this: `https://www.yoursite.com/notifications?topic=payment&id=123456789`. +## Necessary actions after receiving a notification -4. If you want to receive notifications only from IPN and not from Webhooks, you can add in the `notification_url` the parameter `source_news=ipn`. For example: `https://www.yourserver.com/notifications?source_news=ipn`. +When you receive a notification on your platform, Mercado Pago expects a response to validate that you received it correctly. To do this, you need to return an `HTTP STATUS 200 (OK)` or `201 (CREATED)` status. -## After receiving the notification +The **waiting time** for that confirmation is **22 seconds**. If this confirmation is not sent, the system will understand that the notification was not received and will **retry sending every 15 minutes** until a response is received. After the third attempt, the interval will be extended, but the attempts will continue. -[TXTSNIPPET][/guides/snippets/test-integration/notification-response] +After responding to the notification and confirming its receipt, you can obtain the complete information of the notified resource by making a request to the corresponding API endpoint. To identify which endpoint to use, check the table below: -After returning the notification, you will get the full information of the notified resource by going to the corresponding API endpoint: - -| Type | URL | Documentation | +| Topic | URL | Documentation | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/payments/_payments_id/get) | -| chargebacks | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/chargebacks/_chargebacks_id/get) | -| merchant_orders | `https://api.mercadopago.com/merchant_orders/[ID]` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/merchant_orders/_merchant_orders_id/get) | - -Also, specifically in fraud alerts, the order must not be delivered and the cancellation needs to be done through the [cancellations API](/developers/en/reference/chargebacks/_payments_payment_id/put). - -In the notification, you will receive a `JSON` with the following information containing the payment id to cancel. - -[[[ -```Json - - - "description": ".....", - "merchant_order": 4945357007, - "payment_id": 23064274473 - - -``` -]]] - -> NOTE -> -> Important -> -> You can also get more order information using the [Get order](/developers/en/reference/merchant_orders/_merchant_orders_id/get) API. +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Get payment](/developers/en/reference/payments/_payments_id/get) | +| point_integration_ipn| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Search payment intent](/developers/en/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| merchant_orders | `https://api.mercadopago.com/merchant_orders/[ID]` | [Get order](/developers/en/reference/merchant_orders/_merchant_orders_id/get) | +| chargebacks | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Get chargeback](/developers/en/reference/chargebacks/_chargebacks_id/get) | -With this information, you will be able to carry out the necessary updates to your platform, such as updating an approved payment or a closed order. \ No newline at end of file +With this information, you will be able to make the necessary updates to your platform, such as updating an approved payment. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/ipn.es.md b/guides/additional-content/your-integrations/ipn.es.md index 237202e848..a46fbce273 100644 --- a/guides/additional-content/your-integrations/ipn.es.md +++ b/guides/additional-content/your-integrations/ipn.es.md @@ -1,29 +1,84 @@ # IPN -**IPN** (Instant Payment Notification) es un mecanismo que permite que tu aplicación reciba notificaciones de Mercado Pago, informando el estado de un determinado pago, contracargo y `merchant_order`, a través de una llamada HTTP POST para informar sobre sus transacciones. +IPN (Instant Payment Notification) es un mecanismo que permite que tu aplicación reciba notificaciones de Mercado Pago, informando el estado de un determinado pago, contracargo y *merchant order*, a través de una llamada HTTP POST para informar sobre sus transacciones. -En las notificaciones de IPN, solo se puede configurar una URL de notificación por cuenta de Mercado Pago (según la aplicación, más de una aplicación puede usar esta URL). Además, también existe la posibilidad de utilizar este tipo de notificación desde el campo `notification_url` del objeto, de esta forma la URL puede ser diferente para cada objeto o aplicación. +> WARNING +> +> Importante +> +> Las notificaciones IPN van a ser descontinuadas. Además, a pesar de recibir el *header* `x-Signature`, no permiten la validación mediante la clave secreta para confirmar que las mismas fueron enviadas por Mercado Pago. Si deseas realizar esta validación, recomendamos migrar a [notificaciones Webhooks](/developers/es/docs/your-integrations/notifications/webhooks). + + +Las notificaciones IPN pueden ser configuradas de dos maneras: + +| Tipo de configuración | Descripción | +|---|---| +| [Configuración a través de Tus integraciones](/developers/es/docs/your-integrations/notifications/ipn#configuracinatravsdetusintegraciones) | Podrá ser configurada solo una URL de notificación por cuenta (dependiendo de la aplicación, más de una de ellas podrá usar la URL). | +| [Configuración durante la creación de un pago, preferencia u orden](/developers/es/docs/your-integrations/notifications/ipn#configuracindurantelacreacindeunpago) | Puede ser realizada a partir del campo `notification_url`. La URL podrá ser diferente para cada objeto. | -En esta documentación te explicaremos la configuración necesaria para recibir notificaciones de IPN (a través del Dashboard o al momento de crear pagos), y te mostraremos las acciones necesarias que debes realizar para que Mercado Pago valide que los mensajes fueron recibidos correctamente. +En esta documentación explicaremos cómo realizar la configuración necesaria para recibir notificaciones IPN a través de Tus integraciones o al momento de crear pagos, y te mostraremos las acciones necesarias para que Mercado Pago valide que los mensajes fueron recibidos correctamente. -## Configuración de URLs y eventos -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. +## Configuración a través de Tus integraciones + +Puedes configurar notificaciones IPN directamente desde Tus integraciones de manera eficiente y segura. + +### Indicar URLs y configurar eventos + +Para configurar notificaciones IPN mediante Tus integraciones, es necesario indicar las URLs a las que las mismas serán enviadas y especificar los eventos para los cuales deseas recibirlas. + +> WARNING +> +> Importante +> +> Al configurar notificaciones IPN vía Tus integraciones, estarás configurando la URL y los Eventos de **todas las aplicaciones de tu cuenta de Mercado Pago**. + +Para configurar URLs y eventos, sigue el paso a paso a continuación: + +1. Ingresa a [Tus Integraciones](/developers/panel/app) y selecciona una de las aplicaciones para activar las notificaciones para toda tu cuenta. En caso de que aún no hayas creado una aplicación, accede a la [documentación sobre el Panel del Desarrollador](/developers/es/docs/your-integrations/dashboard) y sigue las instrucciones para poder hacerlo. +2. En el menú de la izquierda, selecciona **IPN**, y configura la **URLs de producción** que será utilizada para recibir las notificaciones. También podrás probar si la URL indicada está recibiendo notificaciones correctamente, verificando la solicitud, la respuesta dada por el servidor y la descripción del evento. ![ipn](/images/dashboard/ipn_es_.png) -1. Si aún no lo has hecho, crea una aplicación en el [Panel del desarrollador](/developers/panel/app). -2. Con la aplicación creada, ve a la sección IPN en la página de **Detalles de la aplicación**. -3. A continuación, configura la **URL** de **producción** donde se recibirán las notificaciones. -4. 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. -5. Si necesitas identificar varias cuentas, al final de la URL indicada puedes especificar el parámetro `?cliente=(nombredelvendedor) endpoint` para identificar a los vendedores. -6. Selecciona los **eventos** de los que recibirás notificaciones en formato `json` usando `HTTP POST` a la URL especificada anteriormente. Te notificamos de los eventos relacionados con tus pedidos (`merchant_orders`), devoluciones de cargo recibidas (`chargebacks`), pagos recibidos (`payment`), intentos de pago (`point_integration_ipn`) o alertas de fraude (`delivery_cancellation`). +> NOTE +> +> Nota +> +> En caso de ser necesario identificar múltiples cuentas, agrega el parámetro `?cliente=(nombredelvendedor)` endpoint al final de la URL indicada, para identificar a los vendedores. -## Configuración al crear pagos +3. Selecciona los **eventos** para los cuales deseas recibir las notificaciones, que serán enviadas en formato `JSON` a través de un `HTTP POST` a la URL especificada anteriormente. Un evento puede ser cualquier actualización sobre el tópico reportado, incluyendo cambios de status o atributos. Consulta la tabla a continuación para ver qué eventos pueden ser configurados teniendo en cuenta la solución de Mercado Pago integrada y las particularidades de negocio. + +| Eventos | Nombre en Tus integraciones | Tópico | Productos asociados | +|---|---|---|---| +| Creación y actualización de pagos | Pagos | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Suscripciones
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +----[mla, mlm, mlb]----| Finalización, cancelación o errores al procesar intenciones de pago de dispositivos Mercado Pago Point. | Integraciones Point | `point_integration_ipn` | Mercado Pago Point |------------ +| Alertas de fraude luego del procesamiento de un pedido | Alertas de fraude | `delivery_cancellation` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout PRO | +| Creación, actualización o cierre de órdenes comerciales | Órdenes comerciales | `merchant_order` | Checkout Pro
Código QR | +| Apertura de contracargos, cambios de status y modificaciones referentes a las liberaciones de dinero. | Contracargos | `chargebacks` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | + +> WARNING +> +> Importante +> +> En caso de dudas sobre los tópicos a activar o los eventos que serán notificados, consulta la documentación [Información adicional sobre notificaciones](/developers/es/docs/your-integrations/notifications/additional-info). -Es posible configurar la URL de notificación de forma más específica para cada pago utilizando el campo `notification_url`. Ve a continuación cómo hacer esto usando los SDK. +## Configuración durante la creación de un pago -1. En el campo `notification_url`, indica la URL desde la que se recibirán las notificaciones, como se muestra abajo. +Durante el proceso de creación de pagos, preferencias u órdenes presenciales, es posible configurar la URL de notificación de forma más específica para cada pago, utilizando el campo `notification_url` e implementando un receptor de notificaciones. + +----[mla, mlb, mlm]---- + +> WARNING +> +> Importante +> +> Este método no permite configurar notificaciones para el tópico `point_integration_ipn` utilizando este método. Para activarlo, utiliza la [configuración mediante Tus integraciones](/developers/es/docs/your-integrations/notifications/ipn#configuracinatravsdetusintegraciones). + +------------ + +A continuación, explicamos cómo configurar notificaciones IPN al crear un pago usando los SDK. + +1. En el campo `notification_url`, indica la URL desde la que se recibirán las notificaciones, como se muestra a continuación. Para recibir notificaciones exclusivamente vía IPN y no vía Webhooks, es posible agregar el parámetro `source_news=ipn` a la `notification_url`. Por ejemplo: `https://www.yourserver.com/notifications?source_news=ipn`. [[[ @@ -287,45 +342,23 @@ curl -X POST \ | Campo | Descripción | | --- | --- | -| `topic` | Identifica cuál es el recurso, puede ser `payment`, `chargebacks`, `merchant_order ` o `point_integration_ipn`. | +| `topic` | Identifica cuál es el recurso. Puede ser `payment`, `chargebacks`, `merchant_order ` o `point_integration_ipn`. | | `id` | Es un identificador único del recurso notificado. | -> Por ejemplo, si configuras la URL: `https://www.yoursite.com/notifications`, recibirás notificaciones de pago como esta:` https://www.yoursite.com/notifications?topic=payment&id=123456789`. -4. Si deseas recibir notificaciones solo de IPN y no de Webhooks, puedes agregar en el `notification_url` el parámetro `source_news=ipn`. Por ejemplo: `https://www.yourserver.com/notifications?source_news=ipn`. +## Acciones necesarias después de recibir la notificación -# Después de recibir la notificación +Cuando recibes una notificación en tu plataforma, Mercado Pago espera una respuesta para validar que esa recepción fue correcta. Para eso, debes devolver un `HTTP STATUS 200 (OK)` o `201 (CREATED)`. -[TXTSNIPPET][/guides/snippets/test-integration/notification-response] +El **tiempo de espera** para esa confirmación será de **22 segundos**. Si no se envía esta respuesta, el sistema entenderá que la notificación no fue recibida y realizará un **nuevo intento de envío cada 15 minutos**, hasta que reciba la respuesta. Después del tercer intento, el plazo será prorrogado, pero los envíos continuarán sucediendo. -Después de devolver la notificación, obtendrás la información completa del recurso notificado yendo al endpoint de la API correspondiente. +Luego de responder la notificación, confirmando su recibimiento, puedes obtener toda la información sobre el recurso notificado haciendo una requisición al endpoint correspondiente. Para identificar qué endpoint debes utilizar, consulta la tabla debajo: | Tipo | URL | Documentación | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentación](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/es/reference/payments/_payments_id/get) | -| chargebacks | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [ver documentación](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/es/reference/chargebacks/_chargebacks_id/get) | -| merchant_orders | `https://api.mercadopago.com/merchant_orders/[ID]` | [ver documentación](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/es/reference/merchant_orders/_merchant_orders_id/get) | - -Además, específicamente en las alertas de fraude, no deberás entregar el paquete y realizar la cancelación, para eso debes utilizar la [API de cancelaciones](/developers/es/reference/chargebacks/_payments_payment_id/put). - -En la notificación recibirás un `JSON` con la siguiente información que contiene el payment id para realizar la cancelación. - -[[[ -```Json - - - "description": ".....", - "merchant_order": 4945357007, - "payment_id": 23064274473 - - -``` -]]] - -> NOTE -> -> Importante -> -> También puedes obtener más información de la orden utilizando la api [Obtener orden.](/developers/es/reference/merchant_orders/_merchant_orders_id/get) +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obtener pago](/developers/es/reference/payments/_payments_id/get) | +| point_integration_ipn| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Obtener intención de pago](/developers/es/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| merchant_orders | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obtener orden](/developers/es/reference/merchant_orders/_merchant_orders_id/get) | +| chargebacks | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obtener contracargo](/developers/es/reference/chargebacks/_chargebacks_id/get) | -Con esta información podrás realizar las actualizaciones necesarias a tu plataforma, como actualizar un pago aprobado o un pedido cerrado. \ No newline at end of file +Con esta información podrás realizar las actualizaciones necesarias a tu plataforma, como actualizar un pago aprobado. diff --git a/guides/additional-content/your-integrations/ipn.pt.md b/guides/additional-content/your-integrations/ipn.pt.md index 1c6e1aab73..8ce1b5e9fa 100644 --- a/guides/additional-content/your-integrations/ipn.pt.md +++ b/guides/additional-content/your-integrations/ipn.pt.md @@ -1,29 +1,84 @@ # IPN -O **IPN** (Instant Payment Notification) é um mecanismo que permite que sua aplicação receba notificações do Mercado Pago informando o estado de um determinado pagamento, chargeback e `merchant_order`, mediante uma chamada HTTP POST para informar sobre suas transações. +IPN (Instant Payment Notification) é um mecanismo que permite que uma aplicação receba notificações do Mercado Pago sobre o status de um pagamento, _chargebacks_ e `merchant_orders`. Essas notificações são enviadas através de uma chamada HTTP POST, informando sobre as transações. -Nas notificações por IPN poderá ser configurada apenas uma URL de notificação por conta (dependendo da aplicação, mais de uma aplicação pode usar essa URL). Além disso, também há a possibilidade de utilizar esse tipo de notificação a partir do campo `notification_url` do objeto, dessa forma a URL poderá ser diferente para cada objeto ou aplicação. +> WARNING +> +> Importante +> +> As notificações IPN serão descontinuadas. Além disso, apesar de receber o _header_ `x-Signature`, elas não permitem a validação por meio da chave secreta para confirmar que foram enviadas pelo Mercado Pago. Para realizar essa validação de origem, recomendamos migrar para as [notificações Webhooks](/developers/pt/docs/your-integrations/notifications/webhooks). + +As notificações IPN podem ser configuradas de duas maneiras: + +| Modo de configuração | Descrição | +|---|---| +| [Configuração através de Suas integrações](/developers/pt/docs/your-integrations/notifications/ipn#configuraoviasuasintegraes) | Poderá ser configurada apenas **uma URL de notificação** por conta (dependendo da aplicação, mais de uma aplicação pode usar essa URL). | +| [Configuração durante a criação de pagamentos, preferências ou ordens comerciais](/developers/pt/docs/your-integrations/notifications/ipn#configuraoduranteacriaodepagamentos) | Isso pode ser realizado a partir do campo `notification_url`. A URL poderá ser diferente para cada objeto. | + +Nesta documentação explicaremos as configurações necessárias para o recebimento das notificações IPN, além de apresentar quais são as ações necessárias para que o Mercado Pago valide o correto recebimento das mensagens. -Nesta documentação explicaremos as configurações necessárias para o recebimento das notificações IPN (através do Painel do desenvolvedor ou durante a criação de pagamentos), além de apresentar quais são as ações necessárias que você deverá ter para que o Mercado Pago valide que as mensagens foram devidamente recebidas. +## Configuração via Suas integrações + +Configure notificações diretamente via Suas integrações de forma eficiente e segura. + +### Indicar URLs e configurar eventos + +Para configurar as notificações IPN via Suas integrações, é necessário indicar as URLs onde elas serão recebidas e especificar os eventos para os quais deseja receber notificações. + +> WARNING +> +> Importante +> +> Ao configurar as notificações IPN via Suas integrações, você está configurando a URL e os Eventos de **todos os aplicativos da sua conta do Mercado Pago**. -## Configuração de URLs e Eventos +Para configurar URLS e eventos, siga as etapas descritas abaixo: -Abaixo explicaremos como indicar as URLs que serão notificadas e como configurar os eventos dos quais se receberá a notificação. +1. Acesse [Suas integrações](/developers/panel/app) e selecione uma das aplicações para configurar as notificações para toda a sua conta. Caso ainda não tenha criado uma aplicação, acesse a [documentação Painel do Desenvolvedor](/developers/pt/docs/your-integrations/dashboard) e siga as instruções para fazê-lo. +2. No menu à esquerda, clique em **IPN** e configure a **URL de produção** que será usada para receber as notificações. Leve em consideração que é possível testar se a URL indicada está recebendo as notificações corretamente. Isso permite verificar a solicitação, a resposta do servidor e a descrição do evento. ![ipn](/images/dashboard/ipn_pt_.png) -1. Caso ainda não tenha, crie uma aplicação no [Painel do desenvolvedor](/developers/panel/app). -2. Com a aplicação criada, navegue até a seção IPN na página de **Detalhes da aplicação**. -3. Em seguida, configure a **URL** de **produção** no qual serão recebidas as notificações. -4. Você também poderá experimentar e testar se a URL indicada está recebendo as notificações corretamente, podendo verificar a solicitação, a resposta dada pelo servidor e a descrição do evento. -5. Caso seja necessário identificar múltiplas contas, no final da URL indicada você poderá indicar o parâmetro `?cliente=(nomedovendedor) endpoint` para identificar os vendedores. -6. Selecione os **eventos** dos quais você receberá notificações em formato `json` utilizando `HTTP POST` para a URL especificada anteriormente. Notificamos eventos relacionados aos seus pedidos (`merchant_orders`), estornos recebidos (`chargebacks`), pagamentos recebidos (`payment`), tentativas de pagamento (`point_integration_ipn`) ou alertas de fraude (`delivery_cancellation`). +> NOTE +> +> Nota +> +> Caso seja necessário identificar múltiplas contas, adicione o parâmetro `?cliente=(nomedovendedor)` ao final da URL indicada para identificar os vendedores. + +3. Selecione os **eventos** para os quais deseja receber notificações em formato `JSON` através de um `HTTP POST` para a URL especificada anteriormente. Um evento pode ser qualquer atualização no objeto relatado, incluindo alterações de status ou atributos. Consulte a tabela abaixo para ver os eventos configuráveis, considerando a solução do Mercado Pago integrada e suas necessidades de negócio. + +| Nome em Suas integrações | Eventos | Tópico | Produtos associados | +|---|---|---|---| +| Criação e atualização de pagamentos | Pagos | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Suscripciones
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +----[mla, mlm, mlb]----| Finalização, cancelamento ou erro ao processar tentativas de pagamento nos dispositivos Mercado Pago Point. | Integrações Point | `point_integration_ipn` | Mercado Pago Point |------------ +| Alertas de fraude após o processamento de um pedido | Alertas de fraude | `delivery_cancellation` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout PRO | +| Criação, fechamento ou expiração de pedidos. | Ordens comerciais | `merchant_order` | Checkout Pro
Código QR | +| Abertura de estornos, alterações de status e modificações relacionadas às liberações de dinheiro. | Estornos | `chargebacks` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | + +> WARNING +> +> Importante +> +> Em caso de dúvidas sobre quais tópicos ativar ou quais eventos serão notificados, consulte a documentação [Informações adicionais sobre notificações](/developers/pt/docs/your-integrations/notifications/additional-info). + +4. Por fim, clique em **Salvar**. + +## Configuração durante a criação de pagamentos + +Durante o processo de criação de pagamentos, preferências ou ordens comerciais, é possível configurar a URL de notificação de maneira específica para cada pagamento. Para isso, utilize o campo `notification_url` e implemente o receptor de notificações necessário. -## Configuração ao criar pagamentos +----[mla, mlb, mlm]---- +> WARNING +> +> Importante +> +> Este método não permite configurar notificações para o tópico `point_integration_ipn`. Para ativá-lo, utilize as [configurações via Suas integrações](/developers/pt/docs/your-integrations/notifications/ipn#configuraoviasuasintegraes). -É possível configurar a URL de notificação de modo mais específico para cada pagamento utilizando o campo `notification_url`. Veja abaixo como realizar essa configuração com uso dos SDKs. +------------ + +A seguir, explicamos como realizar esta configuração utilizando nossoss SDKs. + +1. No campo `notificaction_url`, indique a URL do qual serão recebidas as notificações como exemplificado abaixo. Para receber notificações exclusivamente via IPN e não via Webhooks, adicione o parâmetro `source_news=ipn` à `notification_url`. Por exemplo: `https://www.yourserver.com/notifications?source_news=ipn`. -1. No campo `notificaction_url`, indique a URL do qual serão recebidas as notificações como exemplificado abaixo. [[[ ```php @@ -245,7 +300,7 @@ curl -X POST \ ``` ]]] -2. Implemente o receptor de notificações usando o seguinte código como exemplo: +2. Implemente o receptor de notificações utilizando o seguinte código como exemplo: ```php ``` -3. Feitas as configurações, o Mercado Pago notificará essa URL com dois parâmetros a cada vez que um recurso for criado ou atualizado: +3. Após realizar as configurações, o Mercado Pago notificará essa URL com dois parâmetros sempre que um recurso for criado ou atualizado. Por exemplo, se configurar a URL `https://www.yoursite.com/notifications`, você receberá as notificações de pagamento desta maneira: `https://www.yoursite.com/notifications?topic=payment&id=123456789`. | Campo | Descrição | | --- | --- | -| `topic` | Identifica do que se trata o recurso, podendo ser `payment`, `chargebacks`, `merchant_order ` ou `point_integration_ipn`. | -| `id` | É um identificador único do recurso notificado. | - -> Por exemplo, se configurar a URL: `https://www.yoursite.com/notifications`, você receberá as notificações de pagamento desta maneira: `https://www.yoursite.com/notifications?topic=payment&id=123456789`. +| `topic` | Identifica o tipo de recurso, podendo ser `payment`, `chargebacks`, `merchant_order ` ou `point_integration_ipn`. | +| `id` | Identificador único do recurso notificado. | -4. Caso deseje receber notificações apenas de IPN e não de Webhooks, você pode adicionar na `notification_url` o parâmetro `source_news=ipn`. Por exemplo: `https://www.yourserver.com/notifications?source_news=ipn` +## Ações necessárias após receber uma notificação -## Após receber a notificação +Ao receber uma notificação em sua plataforma, o Mercado Pago aguarda uma resposta para validar se você a recebeu corretamente. Para isso, é necessário retornar um status `HTTP STATUS 200 (OK)` ou `201 (CREATED)`. -[TXTSNIPPET][/guides/snippets/test-integration/notification-response] +O **tempo de espera** para a confirmação da recepção das notificações será de **22 segundos**. Se essa confirmação não for enviada, o sistema entenderá que a notificação não foi recebida e realizará **novas tentativas de envio a cada 15 minutos**, até receber uma resposta. Após a terceira tentativa, o prazo será prorrogado, mas os envios continuarão acontecendo. -Depois de dar um retorno à notificação, você obterá as informações completas do recurso notificado acessando o endpoint correspondente da API: +Após responder à notificação e confirmar seu recebimento, é possível obter as informações completas do recurso notificado fazendo uma requisição ao endpoint correspondente da API. Para identificar qual endpoint utilizar, confira a tabela abaixo: -| Tipo | URL | Documentação | +| Tópico | URL | Documentação | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentação](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/pt/reference/payments/_payments_id/get) | -| chargebacks | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [ver documentação](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/pt/reference/chargebacks/_chargebacks_id/get) | -| merchant_orders | `https://api.mercadopago.com/merchant_orders/[ID]` | [ver documentação](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/pt/reference/merchant_orders/_merchant_orders_id/get) | - -Além disso, especificamente em alertas de fraude, o pedido não deve ser entregue e o cancelamento precisa ser realizado através da [API de cancelamentos](/developers/pt/reference/chargebacks/_payments_payment_id/put). - -Na notificação, você receberá um `JSON` com as seguintes informações contendo o id de pagamento para efetuar o cancelamento. - -[[[ -```Json - - - "description": ".....", - "merchant_order": 4945357007, - "payment_id": 23064274473 +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obter pagamento](/developers/pt/reference/payments/_payments_id/get) | +| point_integration_ipn| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Obter intenção de pagamento](/developers/pt/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| merchant_orders | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obter pedido](/developers/pt/reference/merchant_orders/_merchant_orders_id/get) | +| chargebacks | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obter estorno](/developers/pt/reference/chargebacks/_chargebacks_id/get) | - -``` -]]] - -> NOTE -> -> Importante -> -> É possível obter mais detalhes sobre o pedido utilizando a API [Obter pedido.](/developers/pt/reference/merchant_orders/_merchant_orders_id/get) - -Com essas informações, você poderá realizar as atualizações necessárias na sua plataforma como, por exemplo, atualizar um pagamento aprovado ou um pedido fechado. \ No newline at end of file +Com essas informações, você poderá realizar as atualizações necessárias na sua plataforma como, por exemplo, atualizar um pagamento aprovado. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/notification-additional-info.en.md b/guides/additional-content/your-integrations/notification-additional-info.en.md new file mode 100644 index 0000000000..d9a69c8fb9 --- /dev/null +++ b/guides/additional-content/your-integrations/notification-additional-info.en.md @@ -0,0 +1,181 @@ +# Additional information about notifications + +In this documentation, you will find additional information about notifications, including special considerations depending on the solution you have integrated, specific aspects of certain topics, and examples of particular notifications for your reference. + +## Card Updater + +Card Updater is a feature for product integrations with recurring payments that updates card data, whether expired or incorrect, and updates this information within Mercado Pago. + +This process is triggered by a rejected payment, where the verification done by Card Updater can either generate a new `card_id` for a customer (in cases of data entry errors or card changes) or keep the previously generated `card_id` while updating the database with the correct card information. + +In either case, a Webhooks notification will be sent as shown below: + +```json + +{ + "action": "card.updated", + "api_version": "v1", + "application_id": 8339021212080291, + "data": { + "customer_id": "12345678-aluyasdhfyt", + "new_card_id": 50000102202, + "old_card_id": 50000006036 + }, + "date_created": "2024-01-11T15:23:53-03:00", + "id": "a47fc06844bf4e418a03aeab1479c496", + "live_mode": true, + "type": "automatic-payments", + "user_id": 1197520450, + "version": 1 +} +``` + +| Field | Description | +|---|---| +| `action` | `card.updated` is the only possible value and indicates when a customer's card was updated. | +| `application_id` | Identifier of the application being notified. | +| `data` | This field contains the update details, such as the `customer_id` (customer identifier), the new `card_id`, and the old `card_id`. If a new `card_id` is not created, the original one is resent. | +| `date_created` | Creation date of the notification. | +| `id` | Exclusive identifier of the event, prevents duplicate messages. | +| `live_mode` | Indicates if the informed URL is valid. | +| `type` | This value will always be `automatic-payments`. | +| `user_id` | Identifier of the user to whom the notification is sent. | + +----[mla, mlm, mlb]---- +## Integrações Point + +This topic allows you to receive notifications about status updates in payment intents created for Point integrations. When activating it, you should keep in mind: + +* "Payment intent" and "payment" are not the same. By activating this topic, you will receive updates about the calls created to initiate a payment. To receive notifications about the `payment` itself, you must activate the payments topic through Your integrations. +* It is not possible to configure this topic at the moment of creating a payment. Its configuration must be done through Your integrations. +* You can check the notifications corresponding to the different statuses of payment intents by accessing the specific [Mercado Pago Point documentation](/developers/en/docs/mp-point/integration-configuration/integrate-with-pdv/notifications). + +------------ + +## Subscriptions + +To activate notifications for your Subscriptions integration, you should keep in mind: +* If you have integrated **Subscriptions with associated plans**, you must activate the `subscription_preapproval_plan` topic to receive alerts about the creation or update of a Plan. +* If you have integrated **Subscriptions without associated plans**, you must activate the `subscription_preapproval` topic to receive alerts about the creation or update of a **pending payment subscription**, or the `subscription_authorized_payment` topic for updates on **authorized payment subscriptions**. +* In **all cases, you should also activate the payments topic**, which will allow you to receive notifications about payments associated with those subscriptions when they are made. + +## Checkout Pro + +If you have integrated with Checkout Pro and want to receive notifications, you should keep in mind: +* Activating the `merchant_orders` topic will allow you to receive alerts about the creation and updates of orders. +* Additionally, activating the `payments` topic will be useful for keeping your database up to date, as it will notify you about updates to the payments corresponding to those generated orders. + +## Fraud alerts + +If a fraud alert is detected, and you have the `stop_delivery_op_wh` topic activated, you will receive a notification like the following: + +```json +{ + "action": "Created", + "api_version": "v1", + "data": { + "description": "desc", + "merchant_order": 249940988000, + "payment_id": 58980959081, + "site_id": "MLA" + }, + "date_created": "2022-07-23T23:03:5704:00", + "id": "58980959081", + "live_mode": true, + "type": "stop_delivery_op_wh", + "user_id": 224403329, + "version": 1 +} +``` + +It includes the details of the order that triggered the alert, under the merchant_order parameter, and the payment_id associated with the payment. With this information, you should proceed to **cancel the order without delivering it** by making a requisition to the [cancellations API](/developers/en/reference/chargebacks/_payments_payment_id/put). + +Please note that this type of notification does not adhere to the usual retry logic. If you do not respond with an `HTTP STATUS 200 (OK)` or `201 (CREATED)` upon receipt, the notification will be lost and will not be resent. + +## Claims + +In cases where notifications for the topic `topic_claims_integration_wh` have been activated, a Webhooks notification will be sent when a claim or chargeback is initiated, as shown below: + +```json +{ + "action": "Created", + "api_version": "v1", + "data": { + "description": "desc", + "merchant_order": 249940988000, + "payment_id": 58980959081, + "site_id": "MLA" + }, + "date_created": "2022-07-23T23:03:5704:00", + "id": "58980959081", + "live_mode": true, + "type": "stop_delivery_op_wh", + "user_id": 224403329, + "version": 1 +} +``` + +| Field | Description | +|---|---| +| `action` | Notification event, indicating whether it is the creation of a resource or its update. | +| `api_version` | Value indicating the API version sending the notification. | +| `data.id` | Unique identifier of the claim or chargeback. | +| `data.resource` | Type of notification received. In this case, it indicates notifications related to claims. | +| `date_created` | Notification creation date. | +| `id` | Received notification identifier. | +| `live_mode` | Indicates if the provided URL is valid. | +| `type` | Type of notification received, according to the previously selected topic. In this case, it will always be `claim`. | +| `user_id `| User identifier for whom the notification is sent. | + +## Offline payment methods + +If you have integrated payments with offline payment methods and configured your notifications with the payments topic, you should know that all changes in payment status will be notified to you. + +This also applies to **expired payments**: their status will change from `pending` to `cancelled`, and the corresponding alert will be sent to your system. +----[mla, mlb, mlc, mlu]---- + +## QR Code + +If you integrated with QR Code and wish to receive notifications, please note the following: +* Webhooks notifications cannot be configured through Your integrations. You must set them up when creating a payment. +* Consequently, it is not possible to validate the origin of notifications using the `x-Signature` header. For alternative methods to verify the origin of these notifications, please contact [Mercado Pago Support](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/support/center). +* The activation of the `merchant_orders` topic will allow you to receive alerts about order creation and updates. While the topic sends a `status=opened`, it will be the notification with `status=closed` that will securely certify that the generated order has been paid. + +------------ + +----[mla]---- +## Delivery + +Below, you can see an example of a notification for the `Delivery` topic, along with descriptions of each notified field. + +```json +{ + _id: "f9f08571-1f65-4c46-9e0a-c0f43faas1557e", + topic: "delivery", + resource: "/shipments/12345", + user_id: 1793791954, + application_id: "924152943338358", + sent: "2021-11-01T02:02:02.002Z", + attempts: 1, + received: "2021-11-01T02:02:02.002Z", + actions: [] +} +``` + +| Field | Description | +|---|---| +| `_id `| Notification ID received. | +| `topic` | Topic for which the notification is being received. | +| `resource` | Notified event. Indicates whether it's the creation of a resource or an update. | +| `user_id` | User identifier for whom the notification is sent. | +| `sent` | Notification sending date. | +| `attempts` | Number of times a notification has been sent. | +| `received` | Notification reception date. | + +Furthermore, please note that upon receiving a notification from this topic, you must confirm its receipt by returning an `HTTP STATUS 200 (OK)` within 500 ms. Otherwise, the system will continue to send new notification attempts every 12 hours. + +------------ + +## Payment links + +It is not possible to configure notifications for Payment links generated through the Mercado Pago Panel. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/notification-additional-info.es.md b/guides/additional-content/your-integrations/notification-additional-info.es.md new file mode 100644 index 0000000000..aaef32b339 --- /dev/null +++ b/guides/additional-content/your-integrations/notification-additional-info.es.md @@ -0,0 +1,182 @@ +# Información adicional sobre notificaciones + +En esta documentación encontrarás información adicional sobre notificaciones, ya sean consideraciones especiales dependiendo de la solución que hayas integrado, aspectos específicos de ciertos tópicos, o ejemplos de notificaciones particulares para que puedas consultar. + +## Card Updater + +Card Updater es una función para integraciones de productos con pagos recurrentes, que actualiza datos de tarjetas, ya sea vencidas o con datos incorrectos, y actualiza esta información dentro de Mercado Pago. + +Este proceso se desencadena a partir de un pago rechazado, donde la verificación hecha por el Card Updater podrá o bien generar un nuevo `card_id` para un cliente (en casos de error en la inserción de datos o cambio de tarjeta), o bien mantener el `card_id` previamente generado, pero actualizando la base de datos con información correcta de la tarjeta. + +En cualquiera de los casos, se enviará una notificación Webhooks como la que se muestra a continuación: + +```json + +{ + "action": "card.updated", + "api_version": "v1", + "application_id": 8339021212080291, + "data": { + "customer_id": "12345678-aluyasdhfyt", + "new_card_id": 50000102202, + "old_card_id": 50000006036 + }, + "date_created": "2024-01-11T15:23:53-03:00", + "id": "a47fc06844bf4e418a03aeab1479c496", + "live_mode": true, + "type": "automatic-payments", + "user_id": 1197520450, + "version": 1 +} +``` + +| Campo | Descripción | +|---|---| +| `action` | `card.updated` es el único valor posible e indica cuando la tarjeta de un cliente fue actualizada. | +| `application_id` | Identificador de la aplicación sobre la que se está notificando. | +| `data` | Este campo es donde están los detalles de la actualización, como el `customer_id` (identificador del cliente), el nuevo `card_id`, y el antiguo.
En caso de que no se cree un nuevo `card_id`, se reenvía el original. | +| `date_created` | Fecha de creación de la notificación. | +| `id` | Identificador exclusivo del evento, evita mensajes duplicados. | +| `live_mode` | Indica si la URL informada es válida | +| `type` | Este valor siempre será `automatic-payments` | +| `user_id` | Identificador del usuario para el que se envía la notificación. | + +----[mla, mlm, mlb]---- +## Integraciones Point + +Este tópico permite recibir notificaciones sobre la actualización de los *status* en las intenciones de pago creadas para integraciones Point. Al activarlo, debes tener en cuenta: + +* “Intención de pago” y “pago” no son lo mismo. Al activar este tópico, recibirás actualizaciones sobre las llamadas creadas para iniciar un pago. Para recibir notificaciones sobre el pago en sí mismo, debes activar el tópico `payments` mediante Tus integraciones. +* No es posible configurar este tópico al momento de crear un pago. Su configuración debe ser hecha por medio de Tus integraciones. +* Puedes consultar las notificaciones correspondientes a los distintos estados de las intenciones de pago accediendo a la [documentación específica de Mercado Pago Point](/developers/es/docs/mp-point/integration-configuration/integrate-with-pdv/notifications). + +------------ + +## Suscripciones + +Para activar las notificaciones de tu integración con Suscripciones, debes tener en cuenta: +* Si has integrado **Suscripciones con planes asociados**, debes activar el tópico `subscription_preapproval_plan` para recibir alertas sobre la creación o actualización de un Plan. +* Si has integrado **Suscripciones sin planes asociados**, debes activar el tópico `subscription_preapproval` para recibir alertas sobre la creación o actualización de una **suscripción de pago pendiente**, o bien el tópico `subscription_authorized_payment` para actualizaciones sobre **suscripciones con pago autorizado**. +* En todos los casos, deberás activar también el tópico `payments`, que te permitirá recibir notificaciones sobre los pagos asociados a esas suscripciones cuando sean efectuados. + +## Checkout Pro + +Si realizaste una integración con Checkout Pro y deseas recibir notificaciones, debes tener en cuenta: +* La activación del tópico `merchant_orders` te permitirá recibir alertas sobre creación y actualizaciones de pedidos. +* Además, la activación del tópico `payments` será útil para mantener al día tu base de datos, ya que te notificará sobre las actualizaciones de los pagos correspondientes a esos pedidos generados. + + +## Alertas de fraude + +En caso de detectarse un alerta de fraude, y si tienes activado el tópico `stop_delivery_op_wh`, recibirás una notificación como la siguiente: + +```json +{ + "action": "Created", + "api_version": "v1", + "data": { + "description": "desc", + "merchant_order": 249940988000, + "payment_id": 58980959081, + "site_id": "MLA" + }, + "date_created": "2022-07-23T23:03:5704:00", + "id": "58980959081", + "live_mode": true, + "type": "stop_delivery_op_wh", + "user_id": 224403329, + "version": 1 +} +``` + +En ella, se incluyen los detalles del pedido que generó el alerta, bajo el parámetro `merchant_order`, y el `payment_id` asociado al pago. Con esos datos, deberás **efectuar la cancelación del pedido sin entregarlo**, realizando un llamado a la [API de cancelaciones](/developers/es/reference/chargebacks/_payments_payment_id/put). + +Ten en cuenta que este tipo de notificaciones no funcionan con la lógica de reintento habitual. Si, al recibirla, no envías un `HTTP STATUS 200 (OK)` o `201 (CREATED)`, habrás perdido la notificación y no volverás a recibirla. + +## Reclamos + +En los casos en los que se hayan activado las notificaciones para el tópico `topic_claims_integration_wh`, se enviará una notificación Webhooks cuando se inicie un reclamo o contracargo, tal como se muestra a continuación: + +```json +{ + "action": "Created", + "api_version": "v1", + "data": { + "description": "desc", + "merchant_order": 249940988000, + "payment_id": 58980959081, + "site_id": "MLA" + }, + "date_created": "2022-07-23T23:03:5704:00", + "id": "58980959081", + "live_mode": true, + "type": "stop_delivery_op_wh", + "user_id": 224403329, + "version": 1 +} +``` + +| Campo | Descripción | +|---|---| +| `action` | Evento notificado, que indica si es la creación de un recurso o su actualización. | +| `api_version` | Valor que indica la versión de la API que envía la notificación. | +| `data.id` | Identificador exclusivo del reclamo o contracargo. | +| `data.resource` | Tipo de notificación recibida. En este caso, indica notificaciones relacionadas a reclamos. | +| `date_created` | Fecha de creación de la notificación. | +| `id` | Identificador de la notificación recibida. | +| `live_mode` | Indica si la URL informada es válida. | +| `type` | Tipo de notificación recibida, de acuerdo al tópico seleccionado previamente. En este caso, será siempre `claim`. | +| `user_id `| Identificador del usuario para el que se envía la notificación. | + +## Medios de pago offline + +En caso de haber integrado medios de pago offline y configurado tus notificaciones con el tópico `payments`, todos los cambios de estado de un pago te serán notificados. + +Esto es válido también para el caso de **pagos expirados**: su estado pasará de `pending` a `cancelled`, y el alerta correspondiente será enviado a tu sistema. + + +----[mla, mlb, mlu, mlc]---- +## Código QR + +Si realizaste una integración con Código QR y deseas recibir notificaciones, debes tener en cuenta: +* No es posible configurar notificaciones webhooks por medio de Tus integraciones. Debes hacerlo al momento de crear un pago. +* Por este motivo, tampoco es posible validar el origen de las notificaciones a partir del *header* `x-Signature`. Para conocer vías alternativas para verificar el origen de estas notificaciones, puedes contactar a [Soporte de Mercado Pago](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/es/support/center). +* La activación del tópico `merchant_orders` te permitirá recibir alertas sobre creación y actualizaciones de pedidos. Si bien el tópico envía un `status=opened`, será la notificación con `status=closed` aquella que certificará con seguridad que la orden generada fue pagada. + +------------ + +----[mla]---- +## Delivery +A continuación, puedes ver un ejemplo de notificación para el tópico Delivery, junto con las descripciones de cada campo notificado. + +```json +{ + _id: "f9f08571-1f65-4c46-9e0a-c0f43faas1557e", + topic: "delivery", + resource: "/shipments/12345", + user_id: 1793791954, + application_id: "924152943338358", + sent: "2021-11-01T02:02:02.002Z", + attempts: 1, + received: "2021-11-01T02:02:02.002Z", + actions: [] +} +``` + +| Campo | Descripción | +|---|---| +| `_id `| Identificador de la notificación recibida. | +| `topic` | Tópico sobre el cual se está recibiendo la notificación. | +| `resource` | Evento notificado. Indica si se trata de la creación de un recurso o una actualización. | +| `user_id` | Identificador del usuario para el que se envía la notificación. | +| `sent` | Fecha de envío de la notificación | +| `attempts` | Cantidad de veces en las que se envió una notificación | +| `received` | Fecha de recepción de la notificación | + +Cuando recibes una notificación de este tópico, debes confirmar su recibimiento devolviendo un `HTTP STATUS 200 (OK)` en hasta 500 ms. De lo contrario, el sistema continuará enviando nuevos intentos de notificación cada 12 horas. + +------------ + + +## Link de pago +No es posible configurar notificaciones para Links de pago generados a través del Panel de Mercado Pago. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/notification-additional-info.pt.md b/guides/additional-content/your-integrations/notification-additional-info.pt.md new file mode 100644 index 0000000000..69779d3465 --- /dev/null +++ b/guides/additional-content/your-integrations/notification-additional-info.pt.md @@ -0,0 +1,184 @@ +# Informações adicionais sobre notificações + +Nesta documentação, você encontrará informações adicionais sobre notificações, incluindo considerações especiais conforme a solução integrada, aspectos específicos de certos tópicos e exemplos de notificações específicas para consulta. + +## Card Updater + +Card Updater é uma função para integrações de produtos com pagamentos recorrentes, que corrige dados de cartões expirados ou com informações incorretas, atualizando essas informações dentro do Mercado Pago. + +Este processo ocorre a partir de um pagamento recusado, onde a verificação feita pelo Card Updater pode gerar um novo `card_id` para um cliente (em casos de erro na inserção de dados ou troca de cartão), ou manter o `card_id` previamente criado, mas atualizando a base de dados com as informações corretas do cartão. + +Em qualquer um dos casos, será enviada uma notificação Webhooks como no exemplo abaixo. + +```json + +{ + "action": "card.updated", + "api_version": "v1", + "application_id": 8339021212080291, + "data": { + "customer_id": "12345678-aluyasdhfyt", + "new_card_id": 50000102202, + "old_card_id": 50000006036 + }, + "date_created": "2024-01-11T15:23:53-03:00", + "id": "a47fc06844bf4e418a03aeab1479c496", + "live_mode": true, + "type": "automatic-payments", + "user_id": 1197520450, + "version": 1 +} +``` + +| Campo | Descrição | +|---|---| +| `action` | `card.updated` é o único valor possível e indica quando o cartão de um cliente foi atualizado. | +| `application_id` | Identificador da aplicação para a qual a notificação está sendo enviada. | +| `data` | Este campo contém os detalhes da atualização, como o `customer_id` (identificador do cliente), o novo `card_id`, e p antigo
Caso não seja criado um novo `card_id`, o original é reenviado. | +| `date_created` | Data de criação da notificação. | +| `id` | Identificador exclusivo do evento para evitar mensagens duplicadas. | +| `live_mode` | Indica se a URL informada é válida. | +| `type` | Este valor será sempre `automatic-payments` | +| `user_id` | Identificador do usuário para o qual a notificação está sendo enviada. | + +----[mla, mlm, mlb]---- +## Integrações Point + +Este tópico permite receber notificações sobre a atualização dos status nas intenções de pagamento criadas para integrações Point. Ao ativá-lo, considere as informações descritas abaixo: + +* "Intenção de pagamento" e "pagamento" não são a mesma coisa. Ao ativar este tópico, você receberá atualizações sobre as solicitações criadas para iniciar um pagamento. Para receber notificações sobre o pagamento em si, ative o tópico `payments` através de Suas integrações. +* Não é possível configurar este tópico no momento da criação de um pagamento. Sua configuração deve ser feita através de Suas integrações. +* É possível consultar as notificações correspondentes aos diferentes status das intenções de pagamento acessando a [documentação específica do Mercado Pago Point](/developers/pt/docs/mp-point/integration-configuration/integrate-with-pdv/notifications). + +------------ + +## Assinaturas + +Para ativar as notificações da sua integração com Assinaturas, considere as informações descritas abaixo: + +* Se você integrou **Assinaturas com planos associados**, ative o tópico `subscription_preapproval_plan` para receber alertas sobre a criação ou atualização de um Plano. +* Se você integrou **Assinaturas sem planos associados**, ative o tópico `subscription_preapproval` para receber alertas sobre a criação ou atualização de uma **assinatura de pagamento pendente**, ou o tópico `subscription_authorized_payment` para atualizações sobre **assinaturas com pagamento autorizado**. +* Em **todos os casos, também é necessário ativar o tópico `payments`**, que permite receber notificações sobre os pagamentos associados a essas assinaturas quando forem efetuados. + +## Checkout Pro + +Se você integrou com o Checkout Pro e deseja receber notificações, considere as informações descritas abaixo: + +* A ativação do tópico `merchant_orders` permitirá receber alertas sobre a criação e atualizações de pedidos. +* A ativação do tópico `payments` será útil para manter sua base de dados atualizada, pois notificará sobre as atualizações nos pagamentos correspondentes aos pedidos gerados. + +## Alertas de fraude + +Caso seja detectado um alerta de fraude e o tópico `stop_delivery_op_wh` estiver ativado, você receberá uma notificação como a seguinte: + +```json +{ + "action": "Created", + "api_version": "v1", + "data": { + "description": "desc", + "merchant_order": 249940988000, + "payment_id": 58980959081, + "site_id": "MLA" + }, + "date_created": "2022-07-23T23:03:5704:00", + "id": "58980959081", + "live_mode": true, + "type": "stop_delivery_op_wh", + "user_id": 224403329, + "version": 1 +} +``` + +A notificação inclui os detalhes do pedido que gerou o alerta, sob o parâmetro `merchant_order`, e o `payment_id` associado ao pagamento. Com esses dados, **deve-se cancelar o pedido sem entregá-lo**, realizando uma chamada à [API de cancelametos](/developers/pt/reference/chargebacks/_payments_payment_id/put). + +Tenha em mente que esse tipo de notificação não segue a lógica usual de tentativas. Se, ao recebê-la, você não enviar um `HTTP STATUS 200 (OK)` ou `201 (CREATED)`, a notificação será perdida e não será reenviada. + +## Reclamações + +Nos casos em que as notificações para o tópico `topic_claims_integration_wh` estiverem ativadas, uma notificação Webhooks será enviada quando um reclamação ou _chargeback_ for iniciado, conforme mostrado abaixo: + +```json +{ + "action": "Created", + "api_version": "v1", + "data": { + "description": "desc", + "merchant_order": 249940988000, + "payment_id": 58980959081, + "site_id": "MLA" + }, + "date_created": "2022-07-23T23:03:5704:00", + "id": "58980959081", + "live_mode": true, + "type": "stop_delivery_op_wh", + "user_id": 224403329, + "version": 1 +} +``` + +| Campo | Descrição | +|---|---| +| `action` | Evento notificado, indicando se é a criação de um recurso ou a sua atualização. | +| `api_version` | Valor que indica a versão da API que está enviando a notificação. | +| `data.id` | Identificador exclusivo da reclamação ou _chargeback_. | +| `data.resource` | Tipo de notificação recebida. Neste caso, indica notificações relacionadas a reclamações. | +| `date_created` | Data de criação da notificação. | +| `id` | Identificador da notificação recebida. | +| `live_mode` | Indica se a URL informada é válida. | +| `type` | Tipo de notificação recebida, conforme o tópico selecionado anteriormente. Neste caso, será sempre `claim`. | +| `user_id `| Identificador do usuário para quem a notificação está sendo enviada. | + +## Meios de pagamento offline + +Se você integrou meios de pagamento offline e configurou suas notificações com o tópico `payments`, todas as mudanças de status de um pagamento serão notificadas a você. + +Isso também é válido para **pagamentos expirados**: seu status mudará de `pending` para `cancelled`, e o alerta correspondente será enviado ao seu sistema. + +----[mla, mlb, mlu, mlc]---- +## Código QR + +Se você integrou com código QR e deseja receber notificações, considere o seguinte: + +* Para Webhooks, não é possível configurar notificações através de Suas integrações. Você deve fazê-lo no momento da criação do pagamento. +* Portanto, não é possível validar a origem das notificações usando o *header* `x-Signature`. Para conhecer vias alternativas para verificar a origem dessas notificações, você pode entrar em contato com o [Suporte do Mercado Pago](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/pt/support/center). +* A ativação do tópico `merchant_orders` permitirá que você receba alertas sobre a criação e atualizações de pedidos. Embora o tópico envie um `status=opened`, será a notificação com `status=closed` que certificará com segurança que o pedido gerado foi pago. + +------------ + +----[mla]---- +## Delivery + +A seguir, mostramos um exemplo de notificação para o tópico `Delivery`, juntamente com as descrições de cada campo notificado. + +```json +{ + _id: "f9f08571-1f65-4c46-9e0a-c0f43faas1557e", + topic: "delivery", + resource: "/shipments/12345", + user_id: 1793791954, + application_id: "924152943338358", + sent: "2021-11-01T02:02:02.002Z", + attempts: 1, + received: "2021-11-01T02:02:02.002Z", + actions: [] +} +``` + +| Campo | Descrição | +|---|---| +| `_id `| Identificador da notificação recebida. | +| `topic` | Tópico sobre o qual está sendo recebida a notificação. | +| `resource` | Evento notificado. Indica se é a criação de um recurso ou uma atualização. | +| `user_id` | Identificador do usuário para o qual a notificação está sendo enviada. | +| `sent` | Data de envio da notificação. | +| `attempts` | Quantidade de vezes que a notificação foi enviada. | +| `received` | Data de recebimento da notificação. | + +Ao receber uma notificação deste tópico, confirme o recebimento retornando um `HTTP STATUS 200 (OK)` dentro de até 500 ms. Caso contrário, o sistema continuará tentando enviar novas notificações a cada 12 horas. + +------------ + +## Link de pagamento + +Não é possível configurar notificações para Links de pagamento gerados através do Painel do Mercado Pago. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/notifications.en.md b/guides/additional-content/your-integrations/notifications.en.md index 96818404e3..73c854e7c5 100644 --- a/guides/additional-content/your-integrations/notifications.en.md +++ b/guides/additional-content/your-integrations/notifications.en.md @@ -1,22 +1,30 @@ # Notifications -Notifications are messages sent by the Mercado Pago server from events carried out in your application. You can configure your integration to send notifications when the following events happen: +Notifications are messages sent by the Mercado Pago server based on events that occur in your application. To receive these notifications, you must activate different notification topics either through the [Your Integrations](/developers/panel/app) or when creating a payment. These notifications will inform you about the various events that have occurred. -* Creation and updating of payments; -* Creation of orders; -* Update of the order; -* Linking to a subscription plan; -* Subscription link; -* Linking and unlinking mp-connect accounts; -* Invoice binding (invoice); -* Creation of countercharges; -* Finalization and cancellation of paid intent; -* Error while processing payment intent. -* [Fraud allerts](/developers/en/docs/additional-content/chargebacks/how-to-prevent#bookmark_fraud_alert) +The activation of these topics will depend on the Mercado Pago solution you have integrated and your business needs, as shown in the following table: -There are **two types** of notifications available for configuration which ,once configured, allow you to program your store's backend to, for example, update the status of orders when a payment is created, send an order confirmation email from store when an order is updated on Mercado Pago, update a customer's record when a subscription plan is linked, or any other actions arising from the events listed above. +| Events | Name in Your Integrations | Topic | Associated products | +|---|---|---|---| +| Creation and update of payments | Payments | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Subscriptions
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +| Recurring payment of a subscription (creation - update) | Plans and Subscriptions | `subscription_authorized_payment` | Subscriptions | +| Subscription linking (creation - update) | Plans and Subscriptions | `subscription_preapproval` | Subscriptions | +| Subscription plan linking (creation - update) | Plans and Subscriptions | `subscription_preapproval_plan` | Subscriptions | +| Linking and unlinking of accounts connected via OAuth | Application linking | `mp-connect` | All products that have implemented OAuth | +----[mla, mlm, mlb]----| Completion and cancellation of payment attempt, or error processing payment attempt from Mercado Pago Point devices. | Point Integrations | `point_integration_wh` / `point_integration_ipn` | Mercado Pago Point |------------ +| Wallet Connect transactions | Wallet Connect | `wallet_connect` | Wallet Connect | +| Fraud alerts after order processing | Fraud alerts | `stop_delivery_op_wh` / `delivery_cancellation` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro | +| Creation of refunds and claims | Claims | `topic_claims_integration_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Subscriptions
----[mla, mlm, mlb]----Mercado Pago Point------------
QR Code
Wallet Connect | +| Retrieval of card information and update within Mercado Pago | Card Updater | `topic_card_id_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +| Creation, closure, or expiration of commercial orders | Commercial orders | `topic_merchant_order_wh` / `merchant_order` | Checkout Pro
QR Code | +| Opening of chargebacks, status changes, and modifications related to the release of funds | Chargebacks | `topic_chargebacks_wh` / `chargebacks` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +----[mla]----| Creation, update, or cancellation of orders. | Delivery (proximity marketplace) | `delivery` | MP Delivery |------------ + +Once configured, notifications allow you to program your store's backend to, for example, update the status of orders when a payment is created, send a confirmation email when an order is updated in Mercado Pago, update a customer's record when a subscription plan is linked, among other actions resulting from the events detailed in the table above. + +There are two types of notifications available for configuration, as detailed in the table below. | Type | Description | | --- | --- | -| **Webhooks** | It uses HTTP REST, instantly notifies updates and enhances security in your integration through the **secret signature**, a validation method to ensure that received notifications were sent by Mercado Pago.
[Click here](/developers/pt/guides/additional-content/your-integrations/webhooks) to learn how to configure and simulate the sending of Webhooks notifications. | -| **IPN** | The notification may take a few moments to send. To learn how to configure IPN notifications [click here](/developers/pt/guides/additional-content/your-integrations/ipn). | \ No newline at end of file +| **Webhooks** | **Recommended**. Uses HTTP REST to instantly notify updates and provides greater integration security through a secret signature, a validation method that ensures notifications received were sent by Mercado Pago.
To learn how to configure and simulate the sending of Webhooks notifications, read the [Webhooks documentation](/developers/en/guides/additional-content/your-integrations/webhooks). | +| **IPN** | Allows your application to receive notifications from Mercado Pago about the status of a payment, chargeback, or *merchant order* via an HTTP POST call. Note that notifications may take a few moments to be sent and do not allow validation via the `x-Signature` header.
**Important:** IPN notifications will be discontinued soon. Therefore, we recommend using [Webhooks notifications](/developers/en/guides/additional-content/your-integrations/webhooks). | \ No newline at end of file diff --git a/guides/additional-content/your-integrations/notifications.es.md b/guides/additional-content/your-integrations/notifications.es.md index 18641bf2f2..4750328b30 100644 --- a/guides/additional-content/your-integrations/notifications.es.md +++ b/guides/additional-content/your-integrations/notifications.es.md @@ -1,22 +1,32 @@ # Notificaciones -Las notificaciones son mensajes enviados por el servidor de Mercado Pago desde eventos que se realizan en su aplicación. Puedes configurar tu integración para enviar notificaciones cuando ocurran los siguientes eventos: - -* Creación y actualización de pagos; -* Creación de pedidos; -* Actualización de la orden; -* Vinculación a un plan de suscripción; -* Enlace de suscripción; -* Vinculación y desvinculación de cuentas mp-connect; -* Vinculación de facturas (factura); -* Creación de contracargos; -* Finalización y cancelación de intento pago; -* Error al processar intento de pago. -* [Alertas de fraude](/developers/es/docs/additional-content/chargebacks/how-to-prevent#bookmark_alerta_de_fraude) - -Hay **dos tipos** de notificaciones disponibles para la configuración, que una vez configuradas, te permiten programar el backend de tu tienda para, por ejemplo, actualizar el estado de los pedidos cuando se crea un pago, enviar un correo electrónico de confirmación del pedido desde la tienda cuando un pedido se actualiza en Mercado Pago, actualizar el registro de un cliente cuando se vincula un plan de suscripción, o cualquier otra acción derivada de los eventos enumerados anteriormente. +Las notificaciones son mensajes enviados por el servidor de Mercado Pago a partir de eventos realizados en tu aplicación. Para que estas notificaciones sean enviadas, debes activar distintos tópicos de notificación, sea por medio de [Tus integraciones](/developers/panel/app) o al crear un pago, que te informarán sobre los diferentes eventos ocurridos. + +La activación de estos tópicos dependerá de la solución de Mercado Pago que hayas integrado y de las necesidades de negocio. Conoce cuáles son, tomando como referencia la tabla a continuación: + +| Eventos | Nombre en Tus integraciones | Tópico | Productos asociados | +|---|---|---|---| +| Creación y actualización de pagos | Pagos | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Suscripciones
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +| Pago recurrente de una suscripción (creación y actualización) | Planes y suscripciones | `subscription_authorized_payment` | Suscripciones | +| Vinculación de una suscripción (creación y actualización) | Planes y suscripciones | `subscription_preapproval` | Suscripciones | +| Vinculación de un plan de suscripción (creación y actualización) | Planes y suscripciones | `subscription_preapproval_plan` | Suscripciones | +| Vinculación y desvinculación de cuentas conectadas a través de OAuth. | Vinculación de aplicaciones | `mp-connect` | Todos los productos que hayan implementado OAuth | +----[mla, mlm, mlb]----| Finalización, cancelación o errores al procesar intenciones de pago de dispositivos Mercado Pago Point. | Integraciones Point | `point_integration_wh` / `point_integration_ipn` | Mercado Pago Point |------------ +| Transacciones de Wallet Connect | Wallet Connect | `wallet_connect` | Wallet Connect | +| Alertas de fraude luego del procesamiento de un pedido | Alertas de fraude | `stop_delivery_op_wh` / `delivery_cancellation` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout PRO | +| Creación de reclamos y reembolsos | Reclamos | `topic_claims_integration_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Suscripciones
----[mla, mlm, mlb]----Mercado Pago Point------------
Código QR
Wallet Connect | +| Recuperación y actualización información de tarjetas dentro de Mercado Pago. | Card Updater | `topic_card_id_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +| Creación, actualización o cierre de órdenes comerciales | Órdenes comerciales | `topic_merchant_order_wh` / `merchant_order` | Checkout Pro
Código QR | +| Apertura de contracargos, cambios de status y modificaciones referentes a las liberaciones de dinero. | Contracargos | `topic_chargebacks_wh` / `chargebacks` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +----[mla]----| Creación, actualización o cancelación de pedidos. | Delivery (proximity marketplace) | `delivery` | MP Delivery |------------ + + +Una vez configuradas, las notificaciones permiten programar el backend de las tiendas para, por ejemplo, actualizar el estado de pedidos cuando un pago es creado, enviar un e-mail de confirmación cuando un pedido es actualizado en Mercado Pago, actualizar el registro de un cliente cuando realice una vinculación de un plan de suscripción, entre otras acciones recurrentes de los eventos detallados en la tabla anterior. + +Existen dos tipos de notificaciones para su configuración, como se muestra en la tabla a continuación. + | Tipo | Descripción | | --- | --- | -| **Webhooks** | Utiliza HTTP REST, notifica instantáneamente las actualizaciones y mejora la seguridad en tu integración mediante la **clave secreta**, un método de validación para garantizar que las notificaciones recibidas fueron enviadas por Mercado Pago.
[Haz clic aquí](/developers/es/guides/additional-content/your-integrations/webhooks) para aprender cómo configurar y simular el envío de notificaciones Webhooks. | -| **IPN** | La notificación puede tardar unos minutos en enviarse. Para aprender a configurar las notificaciones IPN [haz clic aquí](/developers/es/guides/additional-content/your-integrations/ipn). | \ No newline at end of file +| **Webhooks** | **Recomendadas**. Utilizan HTTP REST para notificar instantáneamente las actualizaciones y ofrecen mayor seguridad en la integración mediante la clave secreta, un método de validación para garantizar que las notificaciones recibidas fueron enviadas por Mercado Pago.
Para aprender a configurar y simular el envío de estas notificaciones, accede a la [documentación de Webhooks](/developers/es/guides/additional-content/your-integrations/webhooks). | +| **IPN** | Permite que la aplicación reciba notificaciones de Mercado Pago sobre el estado de un pago, contracargo o *merchant order* por medio de una llamada HTTP POST. La notificación puede tardar unos minutos en enviarse, y no permite realizar la validación de origen mediante el *header* `x-Signature`.
**Importante:** Las notificaciones IPN serán descontinuadas pronto. Por esto, recomendamos la utilización de las [notificaciones Webhooks](/developers/es/guides/additional-content/your-integrations/webhooks). | \ No newline at end of file diff --git a/guides/additional-content/your-integrations/notifications.pt.md b/guides/additional-content/your-integrations/notifications.pt.md index d4dbc60be8..dca148ce0f 100644 --- a/guides/additional-content/your-integrations/notifications.pt.md +++ b/guides/additional-content/your-integrations/notifications.pt.md @@ -1,21 +1,30 @@ # Notificações -As notificações são mensagens enviadas pelo servidor do Mercado Pago a partir de eventos realizados em sua aplicação. Você pode configurar sua integração para enviar notificações quando os seguintes eventos acontecerem: +As notificações são mensagens enviadas pelo servidor do Mercado Pago a partir de eventos realizados em sua aplicação. Para que essas notificações sejam enviadas, é necessário ativar diferentes tópicos de notificação, seja em [Suas integrações](/developers/panel/app) ou ao criar um pagamento. Isso permitirá que você obtenha informações sobre os diferentes eventos ocorridos. -* Criação e atualização de pagamentos; -* Criação e atualização de pedidos; -* Vinculação de um plano de assinatura; -* Vinculação de assinatura; -* Vinculação e desvinculação de contas mp-connect; -* Vinculação de invoice (Nota Fiscal); -* Criação de estornos; -* Finalização e cancelamento da tentativa de pagamento; -* Erro ao processar tentativa de pagamento. -* [Alertas de fraude](/developers/pt/docs/additional-content/chargebacks/how-to-prevent#bookmark_alerta_de_fraudes) +A ativação desses tópicos dependerá da solução do Mercado Pago que foi integrada e das necessidades de negócio, conforme mostrado na tabela a seguir: -Existe **dois tipos** de notificações disponíveis para configuração, que uma vez configurados, te permitem programar o backend da sua loja para, por exemplo atualizar o status de pedidos quando um pagamento for criado, enviar um email de confirmação de pedido realizado da loja quando um pedido for atualizado no Mercado Pago, atualizar o cadastro de um cliente quando um plano de assinatura for vinculado ou quaisquer outras ações decorrentes dos eventos listados acima. +| Eventos | Nome em Suas integrações | Tópico | Produtos associados | +|---|---|---|---| +| Criação e atualização de pagamentos | Pagamentos | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Assinaturas
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +| Pagamento recorrente de uma assinatura (criação - atualização) | Planos e assinaturas | `subscription_authorized_payment` | Assinaturas | +| Vinculação de uma assinatura (criação - atualização) | Planos e assinaturas | `subscription_preapproval` | Assinaturas | +| Vinculação de um plano de assinatura (criação - atualização) | Planos e assinaturas | `subscription_preapproval_plan` | Assinaturas | +| Vinculação e desvinculação de contas que se conectaram através de OAuth | Vinculação de aplicações | `mp-connect` | Todos os produtos que tenham OAuth implementado | +----[mla, mlm, mlb]----| Finalização, cancelamento ou erros ao processar intenções de pagamento de dispositivos Mercado Pago Point. | Integrações Point | `point_integration_wh` / `point_integration_ipn` | Mercado Pago Point |------------ +| Transações com Wallet Connect | Wallet Connect | `wallet_connect` | Wallet Connect | +| Alertas de fraude após o processamento de um pedido | Alertas de fraude | `stop_delivery_op_wh` / `delivery_cancellation` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro | +| Criação de estornos e reclamações | Reclamações | `topic_claims_integration_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Assinaturas
----[mla, mlm, mlb]----Mercado Pago Point------------
Código QR
Wallet Connect | +| Recuperação e atualização de informações de cartões no Mercado Pago | Card Updater | `topic_card_id_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +| Criação, fechamento ou expiração de ordens comerciais. | Ordens comerciais | `topic_merchant_order_wh` / `merchant_order` | Checkout Pro
Código QR | +| Abertura de _chargebacks_, mudanças de status e modificações referentes às liberações de dinheiro | Chargebacks | `topic_chargebacks_wh` / `chargebacks` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +----[mla]----| Criação, atualização ou cancelamento de pedidos. | Delivery (proximity marketplace) | `delivery` | MP Delivery |------------ + +Após configuradas, as notificações permitem programar o backend da sua loja para diversas ações, como: atualizar o status de pedidos quando um pagamento é criado, enviar um e-mail de confirmação quando um pedido é atualizado no Mercado Pago, atualizar o cadastro de um cliente quando um plano de assinatura é vinculado, entre outras ações conforme os eventos detalhados na tabela acima. + +Existem dois tipos de notificações disponíveis para configuração, como detalhado na tabela abaixo. | Tipo | Descrição | | --- | --- | -| **Webhooks** | Utiliza HTTP REST, notifica instantaneamente as atualizações e traz mais segurança em sua integração por meio da **assinatura secreta**, um método de validação para garantir que notificações recebidas foram enviadas pelo Mercado Pago.
[Clique aqui](/developers/pt/guides/additional-content/your-integrations/webhooks) para saber como configurar e simular o envio de notificações Webhooks. | -| **IPN** | A notificação pode demorar alguns instantes para ser enviada. Para saber como configurar notificações IPN [clique aqui](/developers/pt/guides/additional-content/your-integrations/ipn). | \ No newline at end of file +| **Webhooks** | **Recomendadas**. Utiliza HTTP REST para notificar instantaneamente as atualizações e oferece maior segurança na integração por meio de uma assinatura secreta. Este método de validação garante que as notificações recebidas são enviadas pelo Mercado Pago.
Para saber como configurar e simular o envio dessas notificações, leia a [documentação de Webhooks](/developers/pt/guides/additional-content/your-integrations/webhooks). | +| **IPN** | Permite que sua aplicação receba notificações do Mercado Pago sobre o status de um pagamento, _chargeback_ ou *merchant order*, por meio de uma chamada HTTP POST. Tenha em mente que a notificação pode demorar alguns instantes para ser enviada e não permite realizar a validação mediante o *header* `x-Signature`.
**Importante:** As notificações IPN serão descontinuadas em breve. Por isso, recomendamos a utilização das [notificações Webhooks](/developers/pt/guides/additional-content/your-integrations/webhooks). | \ No newline at end of file diff --git a/guides/additional-content/your-integrations/webhooks.en.md b/guides/additional-content/your-integrations/webhooks.en.md index ed726cd686..03d09c91b2 100644 --- a/guides/additional-content/your-integrations/webhooks.en.md +++ b/guides/additional-content/your-integrations/webhooks.en.md @@ -1,86 +1,144 @@ # Webhooks -**Webhooks** (also known as web callback) is a simple method that makes it easy for an app or system to provide real-time information whenever an event happens, that is, it is a way to passively receive data between two systems through of an `HTTP POST`. +Webhooks (also known as web callbacks) are a simple method that allows an application or system to provide real-time information whenever an event occurs. It's a passive way of receiving data between two systems via an `HTTP POST` request. -Webhook notifications can be configured for one or more applications created in your [developer Dashboard](/developers/panel/app). +Webhooks notifications can be configured for each application created in [Your integrations](/developers/panel/app). You can also configure a test URL that, along with your test credentials, allows you to test the correct operation of your notifications before going live. -Once configured, the Webhook will be sent whenever one or more registered events occur, avoiding a search job every minute in search of an answer and, consequently, a system overload and data loss whenever there is some situation. After receiving a notification on your platform, Mercado Pago will wait for a response to validate that you received it correctly +Once configured, the Webhook will be sent whenever one or more registered events occur, eliminating the need for constant checks and thus preventing system overload and data loss in critical situations. -In this documentation, we will explain the necessary settings to receive messages (through the Dashboard or when creating payments), in addition to showing the necessary actions that you must take for Mercado Pago to validate that the notifications were properly received. +To configure your Webhooks notifications, choose one of the options below: -## Configuration via Dashboard +| Configuration type | Description | +|---|---| +| [Configuration through Your integrations](/developers/en/docs/your-integrations/notifications/webhooks#bookmark_configuration_through_your_integrations) | Allows configuring notifications for each one of your applications, identifying different accounts if necessary, and validating the notification origin using the secret signature ----[mla, mlb, mlu, mlc]----(except notifications for QR Code integrations)------------. | +| [Configuration during payment creation](/developers/en/docs/your-integrations/notifications/webhooks#bookmark_configuration_during_payment_creation) | Allows specific configuration of notifications for each payment, preference or order ----[mla]----This configuration is not allowed for Mercado Pago Point or Mercado Pago Delivery integrations----------------[mlb, mlm]----This configuration is not allowed for Mercado Pago Point------------. | -Below, we will explain how to: specify the URLs that will be notified, configure the events from which notifications will be received, validate that the notifications you receive are sent by Mercado Pago and simulate the receipt of various types of notifications. +> WARNING +> +> Important +> +> The URLs configured during payment creation will take precedence over those configured through Your integrations. -![webhooks](/images/dashboard/webhooks-es.png) +Once notifications are configured, refer to the necessary [actions after receiving a notification](/developers/en/docs/your-integrations/notifications/webhooks#bookmark_necessary_actions_after_receiving_a_notification) to validate that the notifications were properly received. + +## Configuration through Your integrations -### Configure URLs and Events - -1. If you haven't done so already, create an application in the [Developer Dashboard](/developers/panel/app). -2. Once the application is created, navigate to the Webhooks section in the "Application details" page and configure the **production** and **test** URLs where notifications will be received. -3. If you need to identify multiple accounts, at the end of the indicated URL you can indicate the parameter `?customer=(sellername) endpoint` to identify the sellers. -4. Next, select the **events** from which you will receive notifications in `json` format via an `HTTP POST` to the URL specified above. An event is any type of update to the reported object, including status or attribute changes. See the events that can be configured in the table below. - -| Notification Type | Action | Description | -| :--- | :--- | :--- | -| `payment` | `payment.created` | Payment creation | -| `payment` | `payment.updated` | Payment update | -| `mp-connect` | `application.deauthorized` | Account unbinding | -| `mp-connect` | `application.authorized` | Account linking | -| `subscription_preapproval` | `created - updated` | Subscription | -| `subscription_preapproval_plan` | `created - updated` | Subscription plan | -| `subscription_authorized_payment` | `created - updated` | Recurring payment for a subscription | -| `point_integration_wh` | `state_FINISHED` | Payment process completed | -| `point_integration_wh` | `state_CANCELED` | Payment process canceled | -| `point_integration_wh` | `state_ERROR` | An error occurred while processing the payment attempt | -| `topic_instore_integration_wh` | - | Notifications of in-person integrations | -| `shipments` | - | Shipment notifications | -| `delivery` | `delivery.updated`| Shipping data and order update | -| `delivery_cancellation` | `case_created`| Shipment cancellation request | -| `wallet_connect` | - | Transaction notifications with [Wallet Connect](/developers/en/docs/wallet-connect/landing) | -| `stop_delivery_op_wh` | - | Fraud alerts | -| `topic_claims_integration_wh` | `updated`| Claims made by sales | -| `topic_card_id_wh` | `card.updated`| Card Updater. The buyer's user card has been updated* | - -> *The Card Updater retrieves card information and updates this data within Mercado Pago. Cards recoverable with this feature include: cards with incorrect information (such as expiration date, card number, CVV, name, etc.) and cards that have been replaced by the financial institution (due to expiration, card upgrade, etc.). - -5. Finally, click **Save** to generate a secret signature for the application. The signature is a validation method to ensure that the notifications received were sent by Mercado Pago, therefore, it is important to check the authenticity information to avoid fraud. +Set up notifications for each application directly in [Your integrations](/developers/panel/app) efficiently and securely. In this documentation, we will explain how: +1. Specify URLs and configure events +2. Validate the notification source +3. Simulate receiving the notification > WARNING > > Important -> -> Mercado Pago will always send this signature in Webhook notifications. Always verify this authenticity information to prevent fraud. ->
-> The generated signature has no expiration date, and while not mandatory, we recommend periodically renewing the **secret signature**. To do this, simply click the reset button next to the signature. -### Validate notification origin +> +> This configuration method is not available for ----[mla, mlb, mlu, mlc]----QR Code or------------ Subscriptions integrations. To set up notifications for either of these integrations, use the [Configuration during payment creation](/developers/en/docs/your-integrations/notifications/webhooks#bookmark_configuration_during_payment_creation) method. + + +### 1. Specify URLs and configure events + +To configure Webhooks notifications via Your integrations, it is necessary to specify the URLs where they will be received and the events for which you wish to receive notifications. -At the moment the registered URL receives a notification, you can validate whether the content sent in the `x-signature` header was sent by Mercado Pago, in order to enhance the security of receiving your notifications. +To do this, follow these steps: + +1. Access [Your integrations](/developers/panel/app) and select the application for which you want to enable notifications. If you haven't created an application yet, access the [Developer Dashboard documentation](/developers/en/docs/your-integrations/dashboard) and follow the instructions to do so. +2. In the left menu, click on **Webhooks > Configure notifications** and configure the URLs that will be used to receive notifications. We recommend using different URLs for testing mode and production mode: + * **Test mode URL:** provide a URL that allows testing the correct operation of notifications for this application during the testing or development phase. Testing these notifications should be done exclusively with the **test credentials of productive users**. + * **Production mode URL:** provide a URL to receive notifications with your productive integration. These notifications should be configured with **productive credentials**. + +![webhooks](/images/dashboard/webhooks-es.png) > NOTE > -> Example of the content sent in the header x-signature +> Note +> +> If you need to identify multiple accounts, you can add the parameter `?cliente=(sellersname)` to the endpoint URL to identify the sellers. + +3. Select the **events** from which you want to receive notifications in `JSON` format via an `HTTP POST` to the URL specified earlier. An event can be any type of update on the reported object, including status changes or attributes. Refer to the table below to see the events that can be configured, considering the integrated Mercado Pago solution and its business specifics. + +| Events | Name in Your Integrations | Topic | Associated products | +|---|---|---|---| +| Creation and update of payments | Payments | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Subscriptions
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +| Recurring payment of a subscription (creation - update) | Plans and Subscriptions | `subscription_authorized_payment` | Subscriptions | +| Subscription linking (creation - update) | Plans and Subscriptions | `subscription_preapproval` | Subscriptions | +| Subscription plan linking (creation - update) | Plans and Subscriptions | `subscription_preapproval_plan` | Subscriptions | +| Linking and unlinking of accounts connected via OAuth | Application linking | `mp-connect` | All products that have implemented OAuth | +----[mla, mlm, mlb]----| Completion and cancellation of payment attempt, or error processing payment attempt from Mercado Pago Point devices. | Point Integrations | `point_integration_wh` | Mercado Pago Point |------------ +| Wallet Connect transactions | Wallet Connect | `wallet_connect` | Wallet Connect | +| Fraud alerts after order processing | Fraud alerts | `stop_delivery_op_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro | +| Creation of refunds and claims | Claims | `topic_claims_integration_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Subscriptions
----[mla, mlm, mlb]----Mercado Pago Point------------
QR Code
Wallet Connect | +| Retrieval of card information and update within Mercado Pago | Card Updater | `topic_card_id_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +| Creation, closure, or expiration of commercial orders | Commercial orders | `topic_merchant_order_wh` | Checkout Pro
QR Code | +| Opening of chargebacks, status changes, and modifications related to the release of funds | Chargebacks | `topic_chargebacks_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +----[mla]----| Creation, update, or cancellation of orders. | Delivery (proximity marketplace) | `delivery` | MP Delivery |------------ + +> WARNING > -> `ts=1704908010,v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839` +> Important +> +> If you have any questions about the topics to de activated or the events that will be notified, check the [Additional information about Notifications documentation](/developers/en/docs/your-integrations/notifications/additional-info). + +5. Finally, click on **Save**. This will generate a unique **secret signature** for your application, allowing you to validate the authenticity of received notifications, ensuring they were sent by Mercado Pago. Note that the generated signature does not have an expiration date, and its periodic renewal is not mandatory but highly recommended. Simply click the **Reset** button next to the signature to renew it. + + +----[mla, mlb, mlu, mlc]---- +> WARNING +> +> Important +> +> QR Code notifications cannot be verified using the secret signature. Therefore, you should proceed directly to the Simulate receiving notifications step. If you have a QR Code integration and still want to verify the origin of your notifications, please contact [Mercado Pago Support](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/support/center). +------------ -See below the step-by-step to configure this validation and at the end, we provide some SDKs with a **complete code example** to make your configuration process easier. +### 2. Validate notification origin -1. Extract the timestamp (`ts`) and the signature from the `x-signature` header. To do this, split the content of the header by the `,` character, resulting in a list of elements. The value for the prefix `ts` is the timestamp (in milliseconds) of the notification, and `v1` is the encrypted signature. Example: `ts=1704908010` and `v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839`. -2. Using the template below, replace the parameters with the data received in your notification. +Notifications sent by Mercado Pago will be similar to the following example for a `payment` topic alert: + +```json +{ + "id": 12345, + "live_mode": true, + "type": "payment", + "date_created": "2015-03-25T10:04:58.396-04:00", + "user_id": 44444, + "api_version": "v1", + "action": "payment.created", + "data": { + "id": "999999999" + } +} +``` + +Mercado Pago will always include the secret signature in the Webhooks notifications received at the registered URL, which will allow you to validate their authenticity to provide greater security and prevent potential fraud. + +This signature will be sent in the `x-signature` header, as shown in the example below. + +```x-signature + +`ts=1704908010,v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839` + +``` + +To configure this validation, you need to extract the key contained in the header and compare it with the key provided for your application in Your integrations. You can do this by following the steps below. At the end, we provide some SDKs with a **complete code example** to facilitate the process: + +1. To extract the timestamp (`ts`) and the signature from the `x-signature` header, split the content of the header by the "," character, which will result in a list of 2 elements. The value for the `ts` prefix is the timestamp (in milliseconds) of the notification, and `v1` is the encrypted signature. Following the example presented above, `ts=1704908010` and `v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839`. +2. Using the template and descriptions below, replace the parameters with the data received in your notification. ```template id:[data.id_url];request-id:[x-request-id_header];ts:[ts_header]; ``` -In the template, values enclosed in `[]` should be replaced with the notification data, such as: + * Parameters with the `_url` suffix come from query params. Example: [data.id_url] will be replaced by the corresponding event ID value (`data.id`). This query param can be found in the received notification. + * `[ts_header]` will represent the `ts` value extracted from the `x-signature` header. + * `[x-request-id_header]` should be replaced with the value received in the `x-request-id` header. -- Parameters with the `_url` suffix come from query params. For example, `[data.id_url]` will be replaced by the value corresponding to the event ID (`data.id`). -- `[ts_header]` will be the value of ts extracted from the x-signature header. - -> If any of the values presented in the template above are not present in your notification, you should remove them from the template. +> WARNING +> +> Important +> +> If any of the values shown in the above template are not present in your notification, you should remove them. -3. In the Developer [Dashboard](/developers/panel/app), select the integrated application, navigate to the Webhooks section, and reveal the generated secret signature. -4. Generate the counter key for validation. To do this, calculate an [HMAC](https://en.wikipedia.org/wiki/HMAC) with the `SHA256 hash` function in hexadecimal, using the **secret signature** as the key and the populated template with the values as the message. For example: +3. In the [Your integrations](/developers/panel/app), select the integrated application and navigate to the Webhooks section to reveal the generated secret signature. +4. Generate the validation key. To do this, calculate an HMAC (Hash-based Message Authentication Code) using the `SHA256 hash` function in hexadecimal base. Use the **secret signature** as the key and the template filled with the respective values as the message. [[[ ```php @@ -103,9 +161,9 @@ cyphedSignature = binascii.hexlify(hmac_sha256(secret.encode(), signedTemplate.e ``` ]]] -5. Finally, compare the generated key with the key extracted from the header, ensuring they have an exact match. Additionally, you can use the timestamp extracted from the header for comparison with a timestamp generated at the time of receiving the notification to establish a tolerance for message reception delays. +5. Finally, compare the generated key with the key extracted from the header, ensuring they match exactly. Additionally, you can use the timestamp extracted from the header to compare it with a timestamp generated at the time of receiving the notification. This allows establishing a tolerance margin for delays in receiving the message. -- Complete code example: +See examples of complete code below: [[[ ```php @@ -332,18 +390,41 @@ if sha == hash { ``` ]]] -### Simulate notification receipt +### 3. Simulate receiving the notification + +Simulating receiving notifications is necessary to verify if they are configured correctly. To do so, follow these steps: + +1. After configuring the URLs and desired events, click **Save** to save the configuration. +2. Afterward, click **Simulate** to test if the specified URL is receiving notifications correctly. +3. On the simulation screen, select the URL to be tested, which can be a **test** or **production** URL. +4. Next, select the desired **event type** and enter the identification that will be sent in the body of the notification. +5. Finally, click **Send test** to verify the request, the server response, and the event description. + +## Configuration during payment creation + +During the creation process of a payment, preference or order, it's possible to configure the notification URL more specifically for each payment using the `notification_url` field and implementing the necessary notification receiver. + +----[mla]---- +> WARNING +> +> Important +> +> It's not possible to configure notifications for the point_integration_wh and delivery topics using this method. To activate these topics, use the [Your integrations settings](/developers/en/docs/your-integrations/notifications/webhooks#yourintegrationssettings). +------------ + +----[mlb, mlm]---- +> WARNING +> +> Important +> +> It's not possible to configure notifications for the point_integration_wh topic using this method. To activate it, use the [Your integrations settings](/developers/en/docs/your-integrations/notifications/webhooks#yourintegrationssettings). -1. After configuring the URLs and Events, click **Simulate** to experiment and test if the indicated URL is receiving notifications correctly. -2. On the relevant screen, select the URL to be tested, which can be **either the test or production URL**. -3. Next, choose the **event type** and enter the **identification** that will be sent in the notification body. -4. Finally, click **Send test** to check the request, the server's response and the event description. +------------ -## Setup while creating payments -It is possible to configure the notification URL more specifically for each payment using the `notification_url` field. See below how to do this using the SDKs. +Next, we explain how to do this with the help of the SDKs. -1. In the `notification_url` field, indicate the URL from which notifications will be received, as shown below. +1. In the `notification_url` field, specify the URL where notifications will be received, as shown in the example below. To receive notifications exclusively via Webhooks and not via IPN, you can add the parameter `source_news=webhooks` to the `notification_url`. For example: `https://www.yourserver.com/notifications?source_news=webhooks`. [[[ ```php @@ -587,7 +668,7 @@ curl -X POST \ ``` ]]] -2. Implement the notifications receiver using the following code as an example: +2. Implement the notification receiver using the following code as an example: ```php ``` -3. Once the necessary settings have been made, the notification via Webhook will have the following format: +After making the necessary configurations, the Webhooks notification will be delivered in `JSON` format. See the example of a notification for the `payments` topic and the descriptions of the information sent in the table below. -> NOTE +> WARNING > > Important > -> For the event type `point_integration_wh` the notification format changes. [Click here](/developers/en/docs/mp-point/introduction) to consult the documentation of **Mercado Pago Point**.

->

-> In the case of the `delivery`, `topic_claims_integration_wh` and `card updater` events, we will also have some different attributes in the response. Check the table below for these features. +> Test payments, created with test credentials, will not send notifications. The only way to test notification reception is through the [Configuration through Your integrations](/developers/en/docs/your-integrations/notifications/webhooks#bookmark_configuration_through_your_integrations). ```json { @@ -637,87 +716,115 @@ curl -X POST \ } ``` -This indicates that payment **999999999** was created for user **44444** in production mode with API version V1 and that this event occurred on date **2016-03-25T10:04:58.396-04 :00**. +| Attribute | Description | Example in JSON | +| --- | --- | --- | +| **id** | Notification ID | `12345` | +| **live_mode** | Indicates if the URL provided is valid | `true` | +| **type** | Type of notification received according to the previously selected topic (payments, mp-connect, subscription, claim, automatic-payments, etc.) | `payment` | +| **date_created** | Date the notified resource was created | `2015-03-25T10:04:58.396-04:00` | +| **user_id**| Seller identifier | `44444` | +| **api_version** | Value indicating the API version sending the notification | `v1` | +| **action** | Notified event, indicating if it's a resource update or a new creation | `payment.created` | +| **data.id** | ID of the payment, `merchant_order`, or claim | `999999999` | + +----[mla]---- +> WARNING +> +> Important +> +> To obtain the notification format for topics other than `payment`, such as `point_integration_wh`, `delivery`, `topic_claims_integration_wh`, and `topic_card_id_wh`, consult [Additional information about notifications](/developers/en/docs/your-integrations/notifications/additional-info). +------------ + +----[mlb, mlm]---- +> WARNING +> +> Important +> +> To obtain the notification format for topics other than `payment`, such as `point_integration_wh`, `topic_claims_integration_wh` and `topic_card_id_wh`, consult [Additional information about notifications](/developers/en/docs/your-integrations/notifications/additional-info). +------------ + +----[mlu, mlc, mco, mpe]---- +> WARNING +> +> Important +> +> To obtain the notification format for topics other than `payment`, such as `topic_claims_integration_wh` and `topic_card_id_wh`, consult [Additional information about notifications](/developers/en/docs/your-integrations/notifications/additional-info). +------------ -| Attribute | Description | -| --- | --- | -| **id** | Notification ID | -| **live_mode** | Indicates if the URL entered is valid. | -| **type** | Type of notification received (payments, mp-connect, subscription, claim, automatic-payments, etc) | -| **date_created** | Resorce creation date | -| **user_id** | Vendor UserID | -| **api_version** | Indicates if it is a duplicate notification or not | -| **action** | Type of notification received, indicating whether it is the update of a resource or the creation of a new | -| **data - id** | ID of the payment, merchant_order or claim| -| **data - customer_id** (card updater)| Customer ID with updated card | -| **data - new_card_id** (card updater)| Updated card number | -| **data - old_card_id** (card updater)| Old card number | -| **attempts** (delivery) | Number of times a notification was sent | -| **received** (delivery) | Resource Creation Date | -| **resource** (delivery) | Type of notification received, indicating whether this is an update to a feature or the creation of a new one | -| **sent** (delivery) | Notification sent date | -| **topic** (delivery) | Type of notification received | -| **resource** (claims) | Type of notification received, indicating notifications related to claims made by sales | -4. If you want to receive notifications only from Webhook and not from IPN, you can add in the `notification_url` the parameter `source_news=webhooks`. For example: https://www.yourserver.com/notifications?source_news=webhooks +## Necessary actions after receiving a notification -## Actions required after receiving notification +When you receive a notification on your platform, Mercado Pago expects a response to validate that you received it correctly. To do this, you need to return an `HTTP STATUS 200 (OK)` or `201 (CREATED)` status. -[TXTSNIPPET][/guides/snippets/test-integration/notification-response] +The **waiting time** for confirmation of receipt of notifications is **22 seconds**. If this confirmation is not sent, the system will understand that the notification was not received and will **retry sending every 15 minutes** until a response is received. After the third attempt, the interval will be extended, but the attempts will continue. -After returning the notification and confirming its receipt, you will obtain the full information of the notified resource by accessing the corresponding API endpoint: +After responding to the notification and confirming its receipt, you can obtain the complete information of the notified resource by making a request to the corresponding API endpoint. To identify which endpoint to use, check the table below: ----[mpe, mco, mlu, mlc]---- -| Type | URL | Documentation | +| Topic | URL | Documentation | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [check documentation](/developers/en/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [check documentation](/developers/en/reference/subscriptions/_authorized_payments_id/get) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [check documentation](/developers/en/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Get payment](/developers/en/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Search subscriptions](/developers/en/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Search subscriptions plans](/developers/en/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Get invoice data](/developers/en/reference/subscriptions/_authorized_payments_id/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Get claim details](/developers/en/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Get order](/developers/en/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Get chargeback](/developers/en/reference/chargebacks/_chargebacks_id/get) | ------------ ----[mlm, mlb]---- -| Type | URL | Documentation | +| Tipo | URL | Documentação | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [check documentation](/developers/en/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [check documentation](/developers/en/reference/subscriptions/_authorized_payments_id/get) | -| point_integration_wh | - | [check documentation](/developers/en/docs/mp-point/integration-configuration/integrate-with-pdv/notifications) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [check documentation](/developers/en/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Get payment](/developers/en/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Search subscriptions](/developers/en/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Search subscription plans](/developers/en/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Get invoices data](/developers/en/reference/subscriptions/_authorized_payments_id/get) | +| point_integration_wh| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Search payment intent](/developers/en/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Get claim details](/developers/en/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Get order](/developers/en/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Get chargeback](/developers/en/reference/chargebacks/_chargebacks_id/get) | ------------ -----[mla]---- -| Type | URL | Documentation | +----[mla]---- +| Tipo | URL | Documentação | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [check documentation](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/en/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [check documentation](/developers/en/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [check documentation](/developers/en/reference/subscriptions/_authorized_payments_id/get) | -| point_integration_wh | - | [check documentation](/developers/en/docs/mp-point/integration-configuration/integrate-with-pdv/notifications) | -| delivery | - | [check documentation](/developers/en/reference/mp_delivery/_proximity-integration_shipments_shipment_id_accept/put) -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [check documentation](/developers/en/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Get payment](/developers/en/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Search subscriptions](/developers/en/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Search subscription plans](/developers/en/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Get invoices data](/developers/en/reference/subscriptions/_authorized_payments_id/get) | +| point_integration_wh| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Search payment intent](/developers/en/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| delivery | `https://api.mercadopago.com/proximity-integration/v1/orders/{shipment_id}` | [Get order](/developers/en/reference/mp_delivery/_proximity-integrationorders_shipment_id/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Get claim details](/developers/en/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Get order](/developers/en/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Get chargeback](/developers/en/reference/chargebacks/_chargebacks_id/get) | ------------ -Also, specifically in fraud alerts, you must not deliver the order and you will need to do the cancellation through the [cancellations API](/developers/en/reference/chargebacks/_payments_payment_id/put). +With this information, you will be able to make the necessary updates to your platform, such as updating an approved payment. -In the notification, you will receive a `JSON` with the following information containing the payment id to cancel. +## Notifications dashboard -```json +The notification dashboard allows the user to view the events triggered on a specific integration, check the status, and obtain detailed information about these events. +This dashboard will be displayed once you configure your Webhooks notifications, and you can access it anytime by clicking on **Webhooks** within the [Your integrations](/developers/panel/app). - "description": ".....", - "merchant_order": 4945357007, - "payment_id": 23064274473 +Among the available information, you will find the percentage of notifications delivered, as well as a quick view of which URLs and events are configured. +Additionally, you will find a complete list of the latest notifications sent and their details, such as **delivery status** (success or failure), **action** (action associated with the triggered event), **event** (type of triggered event), and **date and time**. If desired, you can filter these displayed results by **delivery status** and by period (**date and time**). -``` +![notifications dashboard](/images/dashboard/notification-dashboard-es.png) -> NOTE -> -> Important -> -> You can also get more order information using the [Get order](/developers/en/reference/merchant_orders/_merchant_orders_id/get) API. -With this information, you will be able to carry out the necessary updates to your platform, such as updating an approved payment. \ No newline at end of file +### Evet details + +When you click on one of the listed notifications, you can access the event details. This section provides additional information, allowing you to retrieve lost data in case of notification delivery failure, thereby keeping your system up to date. + * **Status:** Event status along with the corresponding success or error code. + * **Event:** Type of event triggered as selected in the notification configuration. + * **Type:** Topic to which the triggered event belongs as selected during configuration. + * **Trigger date and time:** Date and time when the event was triggered. + * **Description:** Detailed description of the event as documented. + * **Trigger ID:** Unique identifier of the sent notification. + * **Request:** JSON of the request corresponding to the triggered notification. + +![notifications details](/images/dashboard/notification-details-dashboard-es.png) + +In case of notification delivery failure, you can view the reasons and correct the necessary information to prevent future issues. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/webhooks.es.md b/guides/additional-content/your-integrations/webhooks.es.md index 74ec52e12b..7731eb359e 100644 --- a/guides/additional-content/your-integrations/webhooks.es.md +++ b/guides/additional-content/your-integrations/webhooks.es.md @@ -1,86 +1,149 @@ # Webhooks -**Webhooks** (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`. +Webhooks (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`. -Las notificaciones Webhooks se pueden configurar para una o más aplicaciones creadas en tu [Panel del desarrollador](/developers/panel/app). +Las notificaciones Webhooks se pueden configurar para una o más aplicaciones creadas en [Tus integraciones](/developers/panel/app). También es posible configurar una URL de prueba que, junto con las credenciales de prueba, permitirá verificar el correcto funcionamiento de las notificaciones previo a salir a producción. -Una vez configurado, el Webhook se enviará siempre que se produzcan uno o más eventos registrados, evitando un trabajo de búsqueda cada minuto en busca 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. +Una vez configurada, la notificación Webhook será enviada cada vez que ocurra uno o más eventos registrados, evitando la necesidad de verificaciones constantes y, consecuentemente, previniendo la sobrecarga del sistema y la pérdida de datos en situaciones críticas. -En esta documentación, explicaremos las configuraciones necesarias para recibir los mensajes (a través del Panel del desarrollador o durante la creación de pagos), además de mostrar las acciones necesarias que debes realizar para que Mercado Pago valide que las notificaciones han sido recibidas correctamente. +Para configurar notificaciones Webhooks, puedes elegir una de las opciones a continuación. -## Configuración a través del Panel del desarrollador +| Tipo de configuración | Descripción | +|---|---| +| [Configuración a través de Tus integraciones](/developers/es/docs/your-integrations/notifications/webhooks#configuracinatravsdetusintegraciones) | Permite configurar notificaciones para cada una de tus aplicaciones, identificar cuentas distintas en caso de ser necesario, y validar el origen de la notificación utilizando una firma secreta----[mla, mlb, mlu, mlc]---- (excepto en notificaciones para integraciones con Código QR)------------. | +| [Configuración durante la creación de pagos](/developers/es/docs/your-integrations/notifications/webhooks#configuracinalcrearpagos) | Permite la configuración específica de notificaciones para cada pago, preferencia u orden ----[mla]----No está permitida para integraciones con Mercado Pago Point ni Mercado Pago Delivery----------------[mlb, mlm]----No está permitida para integraciones con Mercado Pago Point------------. | -A continuación explicaremos cómo: indicar las URL que serán notificadas, configurar los eventos de los cuales se recibirá la notificación, validar que las notificaciones que recibes son enviadas por Mercado Pago y simular la recepción de diversos tipos de notificaciones. +> WARNING +> +> Importante +> +> Las URLs configuradas durante la creación de un pago tendrán prioridad por sobre aquellas configuradas a través de Tus integraciones. + +Una vez que las notificaciones sean configuradas, consulta las [acciones necesarias después de recibir una notificación](/developers/es/docs/your-integrations/notifications/webhooks#accionesnecesariasdespusderecibirlanotificacin) para validar que las mismas fueron debidamente recibidas. -![webhooks](/images/dashboard/webhooks-es.png) -### Configurar URLs y Eventos - -1. Caso aún no tengas una aplicación, crea una en el [Panel del desarrollador](/developers/panel/app). -2. Una vez creada la aplicación, navega hasta la sección de Webhooks en la página de "Detalles de la aplicación" y configura las URLs de **producción** y **prueba** a las cuales se recibirán las notificaciones. -3. Si necesitas identificar varias cuentas, al final de la URL indicada puedes indicar el parámetro `?cliente=(nombredelvendedor) endpoint` para identificar a los vendedores. -4. A continuación, selecciona los **eventos** de los que recibirás notificaciones en formato `json` a través de un `HTTP 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 | -| :--- | :--- | :--- | -| `payment` | `payment.created` | Creación de pagos | -| `payment` | `payment.updated` | Actualización de pago | -| `mp-connect` | `application.deauthorized` | Desvinculación de cuenta | -| `mp-connect` | `application.authorized` | Vinculación de cuenta | -| `subscription_preapproval` | `created - updated` | Suscripción | -| `subscription_preapproval_plan` | `created - updated` | Plan de suscripción | -| `subscription_authorized_payment` | `created - updated` | Pago recurrente de una suscripción | -| `point_integration_wh` | `state_FINISHED`| Intento de pago finalizado | -| `point_integration_wh` | `state_CANCELED` | Intento de pago cancelado | -| `point_integration_wh` | `state_ERROR`| Ocurrió un error al procesar el intento de pago | -| `topic_instore_integration_wh` | - | Notificaciones de integraciones en persona | -| `shipments` | - | Notificaciones de envíos | -| `delivery` | `delivery.updated`| Datos de envío y actualización de pedidos | -| `delivery_cancellation` | `case_created`| Solicitud de cancelación de envío | -| `wallet_connect` | - | Notificaciones de transacciones con [Wallet Connect](/developers/es/docs/wallet-connect/landing) | -| `stop_delivery_op_wh` | - | Alertas de fraude | -| `topic_claims_integration_wh` | `updated`| Reclamos hechos por las ventas | -| `topic_card_id_wh` | `card.updated`| Card Updater. La tarjeta del usuario comprador ha sido actualizada* | - -> *El _Card Updater_ recupera información de tarjetas y actualiza esos datos dentro de Mercado Pago. Tarjetas recuperables con este recurso: tarjetas con información incorrecta (como fecha de vencimiento, número de tarjeta, CVV, nombre, etc.) y tarjetas que hayan sido reemplazadas por la institución financiera (por motivo de vencimiento, actualización de tarjeta, etc.). - -5. Por último, haz clic en **Guardar** para generar una clave secreta para la aplicación. La clave es un método de validación para asegurar que las notificaciones recibidas fueron enviadas por Mercado Pago, por lo tanto, es importante verificar la información de autenticidad para evitar fraudes. +## Configuración a través de Tus integraciones + +Puedes configurar notificaciones para cada una de tus aplicaciones directamente desde [Tus integraciones](/developers/panel/app) de manera eficiente y segura. En este apartado, explicaremos cómo: + 1. Indicar las URLs de notificación y configurar eventos + 2. Validar el origen de una notificación + 3. Simular el recibimiento de una notificación > WARNING -> +> > Importante -> -> Mercado Pago siempre enviará esta clave en las notificaciones Webhooks. Siempre verifica esta información de autenticidad para evitar fraudes. ->
-> La clave generada no tiene fecha de caducidad y, aunque no es obligatorio, recomendamos renovar periódicamente la **clave secreta**. Para hacerlo, simplemente haz clic en el botón de restablecimiento junto a la clave. -### Validar origen de la notificación +> +> Este método de configuración no está disponible para integraciones con ----[mla, mlb, mlu, mlc]----Código QR ni------------ Suscripciones. Para configurar notificaciones con alguna de estas dos integraciones, utiliza el método [Configuración durante la creación de un pago](/developers/es/docs/your-integrations/notifications/webhooks#configuracinalcrearpagos). + + +### 1. Indicar URLs de notificación y configurar eventos + +Para configurar notificaciones Webhooks mediante Tus integraciones, es necesario indicar las URLs a las que las mismas serán enviadas y especificar los eventos para los cuales deseas recibirlas. + +Para hacerlo, sigue el paso a paso a continuación: -En el momento en que la URL registrada reciba una notificación, podrás validar si el contenido enviado en el _header_ `x-signature` fue enviado por Mercado Pago, con el fin de obtener mayor seguridad en la recepción de tus notificaciones. +1. Ingresa a [Tus Integraciones](/developers/panel/app) y selecciona la aplicación para la que deseas activar las notificaciones. En caso de que aún no hayas creado una aplicación, accede a la [documentación sobre el Panel del Desarrollador](/developers/es/docs/your-integrations/dashboard) y sigue las instrucciones para poder hacerlo. +2. En el menú de la izquierda, selecciona **Webhooks > Configurar notificaciones**, y configura las URLs que serán utilizadas para recibirlas. Recomendamos utilizar dos URLs diferentes para el modo de pruebas y el modo producción: + * **URL modo pruebas:** proporciona una URL que permita probar el correcto funcionamiento de las notificaciones de la aplicación durante la etapa de desarrollo. La prueba de estas notificaciones deberá ser realizada exclusivamente con **credenciales de prueba del usuario productivo** con el que creaste la aplicación. + * **URL modo producción:** proporciona una URL para recibir notificaciones con tu integración productiva. Estas notificaciones deberán ser configuradas con tus **credenciales productivas**. + +![webhooks](/images/dashboard/webhooks-es.png) > NOTE > -> Ejemplo del contenido enviado en el header x-signature +> Nota +> +> En caso de ser necesario identificar múltiples cuentas, agrega el parámetro `?cliente=(nombredelvendedor)` al final de la URL indicada para identificar a los vendedores. + +3. Selecciona los **eventos** de los que recibirás notificaciones, que serán enviadas en formato `JSON` a través de un `HTTP POST` a la URL especificada anteriormente. Un evento puede ser cualquier actualización sobre el tópico reportado, incluyendo cambios de status o atributos. Consulta la tabla a continuación para ver qué eventos pueden ser configurados teniendo en cuenta la solución de Mercado Pago integrada y las particularidades de negocio. + + +| Eventos | Nombre en Tus integraciones | Tópico | Productos asociados | +|---|---|---|---| +| Creación y actualización de pagos | Pagos | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Suscripciones
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +| Pago recurrente de una suscripción (creación y actualización) | Planes y suscripciones | `subscription_authorized_payment` | Suscripciones | +| Vinculación de una suscripción (creación y actualización) | Planes y suscripciones | `subscription_preapproval` | Suscripciones | +| Vinculación de un plan de suscripción (creación y actualización) | Planes y suscripciones | `subscription_preapproval_plan` | Suscripciones | +| Vinculación y desvinculación de cuentas conectadas a través de OAuth. | Vinculación de aplicaciones | `mp-connect` | Todos los productos que hayan implementado OAuth | +----[mla, mlm, mlb]----| Finalización, cancelación o errores al procesar intenciones de pago de dispositivos Mercado Pago Point. | Integraciones Point | `point_integration_wh` | Mercado Pago Point |------------ +| Transacciones de Wallet Connect | Wallet Connect | `wallet_connect` | Wallet Connect | +| Alertas de fraude luego del procesamiento de un pedido | Alertas de fraude | `stop_delivery_op_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout PRO | +| Creación de reclamos y reembolsos | Reclamos | `topic_claims_integration_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Suscripciones
----[mla, mlm, mlb]----Mercado Pago Point------------
Código QR
Wallet Connect | +| Recuperación y actualización información de tarjetas dentro de Mercado Pago. | Card Updater | `topic_card_id_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +| Creación, actualización o cierre de órdenes comerciales | Órdenes comerciales | `topic_merchant_order_wh` | Checkout Pro
Código QR | +| Apertura de contracargos, cambios de status y modificaciones referentes a las liberaciones de dinero. | Contracargos | `topic_chargebacks_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +----[mla]----| Creación, actualización o cancelación de pedidos. | Delivery (proximity marketplace) | `delivery` | Mercado Pago Delivery |------------ + + +> WARNING +> +> Importante > -> `ts=1704908010,v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839` +> En caso de dudas sobre los tópicos a activar o los eventos que serán notificados, consulta la documentación [Información adicional sobre notificaciones](/developers/es/docs/your-integrations/notifications/additional-info). + +5. Por último, haz clic en **Guardar**. Esto generará una **clave secreta** exclusiva para la aplicación, que permitirá validar la autenticidad de las notificaciones recibidas, garantizando que hayan sido enviadas por Mercado Pago. Ten en cuenta que esta clave generada no tiene plazo de caducidad y su renovación periódica no es obligatoria, aunque sí recomendada. Para hacerlo, basta con cliquear en el botón **Restablecer**. + + -A continuación, te indicamos el paso a paso de cómo configurar esta validación y, al final, ofrecemos algunos SDKs con un **ejemplo de código completo** para facilitar tu proceso de configuración. +----[mla, mlb, mlu, mlc]---- +> WARNING +> +> Importante +> +> Las notificaciones de Código QR no pueden ser validadas utilizando la clave secreta, por eso deberás continuar directamente con la etapa “Simular el recibimiento de una notificación”. Para verificar el origen de las notificaciones de integraciones con Código QR, entra en contacto con [Soporte de Mercado Pago](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/es/support/center). +------------ + +### 2. Validar origen de una notificación + +Las notificaciones enviadas por Mercado Pago serán semejantes al siguiente ejemplo para un alerta del tópico `payment`: + +```json +{ + "id": 12345, + "live_mode": true, + "type": "payment", + "date_created": "2015-03-25T10:04:58.396-04:00", + "user_id": 44444, + "api_version": "v1", + "action": "payment.created", + "data": { + "id": "999999999" + } +} +``` + + +Mercado Pago siempre incluirá la clave secreta en las notificaciones Webhooks que serán recibidas, lo que permitirá validar su autenticidad para proporcionar mayor seguridad y prevenir posibles fraudes. + +Esta clave será enviada en el _header_ `x-signature`, que será similar al ejemplo debajo. + +```x-signature + +`ts=1704908010,v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839` + +``` -1. Extrae el _timestamp_ (`ts`) y la clave del _header_ `x-signature`. Para hacer esto, divide el contenido del _header_ por el carácter `,`, lo que resultará en una lista de elementos. El valor para el prefijo `ts` es el _timestamp_ (en milisegundos) de la notificación y `v1` es la clave encriptada. Ejemplo: `ts=1704908010` y `v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839`. +Para confirmar la validación, es necesario extraer la clave contenida en el *header* y compararla con la clave otorgada para tu aplicación en Tus integraciones. Esto podrá ser hecho siguiendo el paso a paso a continuación. Además, al final, disponibilizamos nuestros SDKs con ejemplos de códigos completos para facilitar el proceso. + +1. Para extraer el _timestamp_ (`ts`) y la clave del _header_ `x-signature`, divide el contenido del _header_ por el carácter `,`, lo que resultará en una lista de elementos. El valor para el prefijo `ts` es el _timestamp_ (en milisegundos) de la notificación y `v1` es la clave encriptada. Siguiendo el ejemplo presentado anteriormente, `ts=1704908010` y `v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839`. 2. Utilizando el _template_ a continuación, sustituye los parámetros con los datos recibidos en tu notificación. ```template id:[data.id_url];request-id:[x-request-id_header];ts:[ts_header]; ``` -En el _template_, los valores entre `[]` deben ser reemplazados por los valores de la notificación, como: - -- Los parámetros con el sufijo `_url` provienen de _query params_. Ejemplo: `[data.id_url]` se sustituirá por el valor correspondiente al ID del evento (`data.id`). -- `[ts_header]` será el valor ts extraído del _header_ `x-signature`. + * Los parámetros con el sufijo `_url` provienen de _query params_. Ejemplo: `[data.id_url]` se sustituirá por el valor correspondiente al ID del evento (`data.id`). Este query param puede ser hallado en la notificación recibida. + * `[ts_header]` será el valor `ts` extraído del _header_ `x-signature`. + * `[x-request-id_header]` deberá ser sustituido por el valor recibido en el _header_ `x-request-id`. -> Si alguno de los valores presentados en el _template_ anterior no está presente en tu notificación, deberás eliminarlos de la plantilla. +> WARNING +> +> Importante +> +> Si alguno de los valores presentados en el modelo anterior no está presente en la notificación recibida, debes removerlo. -3. En el [Panel del desarrollador](/developers/panel/app), selecciona la aplicación integrada, ve a la sección de Webhooks y revela la clave secreta generada. -4. Genera la contraclave para la validación. Para hacer esto, calcula un [HMAC](https://es.wikipedia.org/wiki/HMAC) con la función de `hash SHA256` en base hexadecimal, utilizando la **clave secreta** como clave y el _template_ poblada con los valores como mensaje. Ejemplo: +3. En [Tus integraciones](/developers/panel/app), selecciona la aplicación integrada, ve a la sección de Webhooks y revela la clave secreta generada. +4. Genera la contraclave para la validación. Para hacer esto, calcula un [HMAC](https://es.wikipedia.org/wiki/HMAC) con la función de `hash SHA256` en base hexadecimal, utilizando la **clave secreta** como clave y el _template_ con los valores como mensaje. [[[ ```php @@ -103,9 +166,9 @@ cyphedSignature = binascii.hexlify(hmac_sha256(secret.encode(), signedTemplate.e ``` ]]] -5. Finalmente, compara la clave generada con la clave extraída del _header_, asegurándote de que tengan una correspondencia exacta. Además, puedes usar el _timestamp_ extraído del _header_ para compararlo con un timestamp generado en el momento de la recepción de la notificación, con el fin de establecer una tolerancia de demora en la recepción del mensaje. +5. Finalmente, compara la clave generada con la clave extraída del _header_, asegurándote de que tengan una correspondencia exacta. Además, puedes usar el _timestamp_ extraído del _header_ para compararlo con un _timestamp_ generado en el momento de la recepción de la notificación, con el fin de establecer una tolerancia de demora en la recepción del mensaje. -- Ejemplo de código completo: +A continuación, puedes ver ejemplos de código completo: [[[ ```php @@ -332,18 +395,44 @@ if sha == hash { ``` ]]] -### Simular la recepción de la notificación +### 3. Simular la recepción de la notificación + +Para garantizar que las notificaciones sean configuradas correctamente, es necesario simular su recepción. Para hacerlo, sigue el paso a paso a continuación. + +1. Después de configurar las URLs y los Eventos, haz clic en **Guardar** para guardar la configuración. +2. Luego, haz clic en **Simular** para probar si la URL indicada está recibiendo las notificaciones correctamente. +3. En la pantalla de simulación, selecciona la URL que se va a probar, que puede ser **la URL de prueba o la de producción**. +4. A continuación, elige el **tipo de evento** e ingresa la **identificación** que se enviará en el cuerpo de la notificación. +5. Por último, haz clic en **Enviar prueba** para verificar la solicitud, la respuesta proporcionada por el servidor y la descripción del evento. -1. Después de configurar las URLs y los Eventos, haz clic en **Simular** para experimentar y probar si la URL indicada está recibiendo las notificaciones correctamente. -2. En la pantalla correspondiente, selecciona la URL que se va a probar, que puede ser **la URL de prueba o la de producción**. -3. A continuación, elige el **tipo de evento** e ingresa la **identificación** que se enviará en el cuerpo de la notificación. -4. Por último, haz clic en **Enviar prueba** para verificar la solicitud, la respuesta proporcionada por el servidor y la descripción del evento. ## Configuración al crear pagos -Es posible configurar la URL de notificación de forma más específica para cada pago utilizando el campo `notification_url`. Ve a continuación cómo hacer esto usando los SDK. +Durante el proceso de creación de pagos, preferencias u órdenes presenciales, es posible configurar la URL de notificación de forma más específica para cada pago utilizando el campo `notification_url` e implementando un receptor de notificaciones. + +----[mla]---- +> WARNING +> +> Importante +> +> No es posible configurar notificaciones para los tópicos `point_integration_wh` y `delivery` utilizando este método. Para activar estos tópicos, utiliza la [configuración a través de Tus integraciones](/developers/es/docs/your-integrations/notifications/webhooks#configuracinatravsdetusintegraciones). + +------------ + +----[mlb, mlm]---- + +> WARNING +> +> Importante +> +> No es posible configurar notificaciones para el tópico `point_integration_wh` utilizando este método. Para activarlo, utiliza la [configuración a través de Tus integraciones](/developers/es/docs/your-integrations/notifications/webhooks#configuracinatravsdetusintegraciones). + +------------ + +A continuación, explicamos cómo configurar notificaciones al crear un pago utilizando nuestros SDKs. + +1. En el campo `notification_url`, indica la URL desde la que se recibirán las notificaciones, como se muestra a continuación. Para recibir exclusivamente Webhooks y no IPN, agrega el parámetro `source_news=webhooks` a la `notification_url`. Por ejemplo: `https://www.yourserver.com/notifications?source_news=webhooks`. -1. En el campo `notification_url`, indica la URL desde la que se recibirán las notificaciones, como se muestra a continuación. [[[ ```php @@ -587,7 +676,7 @@ curl -X POST \ ``` ]]] -2. Implemente el receptor de notificaciones usando el siguiente código como ejemplo: +2. Implementa el receptor de notificaciones usando el siguiente código como ejemplo: ```php ``` -3. Una vez que se hayan realizado los ajustes necesarios, la notificación a través de Webhook tendrá el siguiente formato: +Luego de realizar la configuración necesaria, la notificación Webhook será enviada con formato `JSON`. Puedes ver a continuación un ejemplo de notificación del tópico `payment`, y las descripciones de la información enviada en la tabla debajo. -> NOTE +> WARNING > > Importante > -> Para el tipo `point_integration_wh` el formato de notificación cambia. [Haz clic aquí](/developers/es/guides/mp-point/introduction) para consultar la documentación de **Mercado Pago Point**.

->

-> > En el caso de los eventos `delivery`, `topic_claims_integration_wh` y `topic_card_id_wh`, también tendremos algunos atributos diferentes en la respuesta. Consulte la siguiente tabla para ver estas características. +> Los pagos de prueba, creados con credenciales de prueba, no enviarán notificaciones. La única vía para probar la recepción de notificaciones es mediante la [Configuración a través de Tus integraciones](/developers/es/docs/your-integrations/notifications/webhooks#configuracinatravsdetusintegraciones). ```json { @@ -637,87 +724,116 @@ curl -X POST \ } ``` -Esto indica que el pago **999999999** fue creado para el usuario **44444** en modo de producción con API versión V1 y que este evento ocurrió en la fecha **2016-03-25T10: 04: 58.396-04: 00**. - -| Atributo | Descripción | -| --- | --- | -| **id** | ID de la notificación | -| **live_mode** | Indica si la URL ingresada es válida.| -| **type** | Tipo de notificacion recebida (payments, mp-connect, subscription, claim, automatic-payments, etc) | -| **date_created** | Fecha de creación del recurso | -| **user_id**| UserID del vendedor | -| **api_version** | Indica si es una notificación duplicada o no| -| **action** | Tipo de notificación recibida, indicando si es la actualización de un recurso o bien la creación de un nuevo | -| **data - id** | ID del payment, merchant_order o del reclamo | -| **data - customer_id** (card updater)| ID del cliente cuya tarjeta fue actualizada | -| **data - new_card_id** (card updater)| Número actualizado de la tarjeta | -| **data - old_card_id** (card updater)| Número antiguo de la tarjeta | -| **attempts** (delivery) | Número de veces que se envió una notificación| -| **received** (delivery) | Fecha de creación del recurso | -| **resource** (delivery) | Tipo de notificación recibida, indicando si se trata de una actualización de una característica o de la creación de una nueva | -| **sent** (delivery) | Fecha de envío de la notificación | -| **topic** (delivery) | Tipo de notificación recibida | -| **resource** (claims) | Tipo de notificación recibida, indicando notificaciones relacionadas con reclamos realizados por ventas | - -4. Si deseas recibir notificaciones solo de Webhook y no de IPN, puedes agregar en el `notification_url` el parámetro`source_news=webhooks`. Por ejemplo: https://www.yourserver.com/notifications?source_news=webhooks +| Atributo | Descripción | Ejemplo en el JSON | +| --- | --- | --- | +| **id** | ID de la notificación | `12345` | +| **live_mode** | Indica si la URL ingresada es válida.| `true` | +| **type** | Tipo de notificacion recebida e acuerdo con el tópico previamente seleccionado (payments, mp-connect, subscription, claim, automatic-payments, etc) | `payment` | +| **date_created** | Fecha de creación del recurso notificado | `2015-03-25T10:04:58.396-04:00` | +| **user_id**| Identificador del vendedor | `44444` | +| **api_version** | Valor que indica la versión de la API que envía la notificación | `v1` | +| **action** | Evento notificado, que indica si es una actualización de un recurso o la creación de uno nuevo | `payment.created` | +| **data.id** | ID del pago, de la orden comercial o del reclamo. | `999999999` | + +----[mla]---- +> WARNING +> +> Importante +> +> Para conocer el formato de notificaciones para tópicos distintos a `payment`, como `point_integration_wh`, `delivery`, `topic_claims_integration_wh` y `topic_card_id_wh`, consulta [Información adicional sobre notificaciones](/developers/es/docs/your-integrations/notifications/additional-info). +------------ + +----[mlb, mlm]---- +> WARNING +> +> Importante +> +> Para conocer el formato de notificaciones para tópicos distintos a `payment`, como `point_integration_wh`, `topic_claims_integration_wh` y `topic_card_id_wh`, consulta [Información adicional sobre notificaciones](/developers/es/docs/your-integrations/notifications/additional-info). +------------ + +----[mlu, mlc, mco, mpe]---- +> WARNING +> +> Importante +> +> Para conocer el formato de notificaciones para tópicos distintos a `payment`, como `topic_claims_integration_wh` y `topic_card_id_wh`, consulta [Información adicional sobre notificaciones](/developers/es/docs/your-integrations/notifications/additional-info). +------------ + ## Acciones necesarias después de recibir la notificación -[TXTSNIPPET][/guides/snippets/test-integration/notification-response] +Cuando recibes una notificación en tu plataforma, Mercado Pago espera una respuesta para validar que esa recepción fue correcta. Para eso, debes devolver un `HTTP STATUS 200 (OK)` o `201 (CREATED)`. + +El **tiempo de espera** para esa confirmación será de **22 segundos**. Si no se envía esta respuesta, el sistema entenderá que la notificación no fue recibida y realizará un **nuevo intento de envío cada 15 minutos**, hasta que reciba la respuesta. Después del tercer intento, el plazo será prorrogado, pero los envíos continuarán sucediendo. + +Luego de responder la notificación, confirmando su recibimiento, puedes obtener toda la información sobre el recurso notificado haciendo una requisición al endpoint correspondiente. Para identificar qué endpoint debes utilizar, consulta la tabla debajo: -Luego de devolver la notificación y confirmar su recepción, obtendrás la información completa del recurso notificado accediendo al endpoint de la API correspondiente: ----[mpe, mco, mlu, mlc]---- | Tipo | URL | Documentación | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentación](/developers/es/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [ver documentación](/developers/es/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [ver documentación](/developers/es/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [ver documentación](/developers/es/reference/subscriptions/_authorized_payments_id/get) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [ver documentación](/developers/es/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obtener pago](/developers/es/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Obtener suscripción](/developers/es/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Obtener plan de suscripción](/developers/es/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Obtener información de facturas](/developers/es/reference/subscriptions/_authorized_payments_id/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Obtener detalles del reclamo](/developers/es/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obtener orden](/developers/es/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obtener contracargo](/developers/es/reference/chargebacks/_chargebacks_id/get) | ------------ ----[mlm, mlb]---- | Tipo | URL | Documentación | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentación](/developers/es/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [ver documentación](/developers/es/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [ver documentación](/developers/es/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [ver documentación](/developers/es/reference/subscriptions/_authorized_payments_id/get) | -| point_integration_wh| - | [ver documentación](/developers/es/docs/mp-point/integration-configuration/integrate-with-pdv/notifications) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [ver documentación](/developers/es/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obtener pago](/developers/es/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Obtener suscripción](/developers/es/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Obtener plan de suscripción](/developers/es/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Obtener información de facturas](/developers/es/reference/subscriptions/_authorized_payments_id/get) | +| point_integration_wh| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Obtener intención de pago](/developers/es/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Obtener detalles del reclamo](/developers/es/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obtener orden](/developers/es/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obtener contracargo](/developers/es/reference/chargebacks/_chargebacks_id/get) | ------------ ----[mla]---- | Tipo | URL | Documentación | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentación](/developers/es/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [ver documentación](/developers/es/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [ver documentación](/developers/es/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [ver documentación](/developers/es/reference/subscriptions/_authorized_payments_id/get) | -| point_integration_wh| - | [ver documentación](/developers/es/docs/mp-point/integration-configuration/integrate-with-pdv/notifications) | -| delivery | - | [ver documentación](/developers/es/reference/mp_delivery/_proximity-integration_shipments_shipment_id_accept/put) -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [ver documentación](/developers/es/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obtener pago](/developers/es/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Obtener suscripción](/developers/es/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Obtener plan de suscripción](/developers/es/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Obtener información de facturas](/developers/es/reference/subscriptions/_authorized_payments_id/get) | +| point_integration_wh| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Obtener intención de pago](/developers/es/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| delivery | `https://api.mercadopago.com/proximity-integration/v1/orders/{shipment_id}` | [Obtener pedido](/developers/es/reference/mp_delivery/_proximity-integrationorders_shipment_id/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Obtener detalles del reclamo](/developers/es/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obtener orden](/developers/es/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obtener contracargo](/developers/es/reference/chargebacks/_chargebacks_id/get) | ------------ -En el caso de las alertas de fraude, específicamente, no entregues el pedido, y utiliza la [API de Cancelaciones](/developers/es/reference/chargebacks/_payments_payment_id/put) para realizar su cancelación. +Con esta información podrás realizar las actualizaciones necesarias a tu plataforma, como actualizar un pago aprobado. -En la notificación recibirás un `JSON` con la siguiente información que contiene el payment id para realizar la cancelación. +## Panel de notificaciones -```json +El panel de notificaciones es una herramienta que permite visualizar los eventos disparados sobre una determinada integración, verificar el estado de las notificaciones, y obtener información detallada sobre esos eventos. +Este Panel será exhibido una vez que hayas configurado tus notificaciones Webhooks, y puedes acceder a él cuando desees, haciendo clic en **Webhooks** dentro de Tus integraciones. - "description": ".....", - "merchant_order": 4945357007, - "payment_id": 23064274473 +Entre la información disponible en este panel, encontrarás el porcentaje de notificaciones entregadas, así como una visión rápida de cuáles son las URLs y eventos configurados. -``` +Además, encontrarás una lista completa de las últimas notificaciones enviadas y sus detalles, como **estado de la entrega** (exitoso o fallido), **acción** (acción asociada al evento disparado), **evento** (tipo de evento disparado), y **fecha y hora**. Si lo deseas, es posible filtrar estos resultados exhibidos por **estado de la entrega** y por **período**. -> NOTE -> -> Importante -> -> También puedes obtener más información sobre la orden utilizando la API [Obtener orden](/developers/es/reference/merchant_orders/_merchant_orders_id/get). +![panel de notificaciones webhooks](/images/dashboard/notification-dashboard-es.png) + +### Detalles del evento + +Al hacer clic en una de las notificaciones listadas, podrás acceder a los detalles del evento. Esta sección proporciona mayor información y permite recuperar datos perdidos en caso de fallas en la entrega de la notificación para mantener tu sistema actualizado. + * **Status:** Estado del evento junto con el código de éxito o error correspondiente. + * **Evento:** Tipo de evento disparado, en función de los tópicos seleccionados durante la configuración de las notificaciones. + * **Tipo:** Tópico al que pertenece el evento disparado, en función de la selección hecha durante la configuración. + * **Fecha y hora del disparo:** Fecha y hora en la que fue disparado el evento. + * **Descripción:** Descripción detallada del evento. + * **ID del disparo:** Identificador único de la notificación enviada. + * **Requisición:** JSON del llamado enviado como notificación. + +![detalles de notificaciones enviadas](/images/dashboard/notification-details-dashboard-es.png) -Con esta información podrás realizar las actualizaciones necesarias a tu plataforma, como actualizar un pago aprobado. \ No newline at end of file +En caso de una falla en la entrega de la notificación, podrás conocer cuáles fueron los motivos y rectificar la información necesaria para evitar futuros problemas. \ No newline at end of file diff --git a/guides/additional-content/your-integrations/webhooks.pt.md b/guides/additional-content/your-integrations/webhooks.pt.md index 702d335297..86172ba1ba 100644 --- a/guides/additional-content/your-integrations/webhooks.pt.md +++ b/guides/additional-content/your-integrations/webhooks.pt.md @@ -1,87 +1,147 @@ # Webhooks -O **Webhooks** (também conhecido como retorno de chamada web) é um método simples que facilita com que um app ou sistema forneça informações em tempo real sempre que um evento acontece, ou seja, é um modo de receber dados entre dois sistemas de forma passiva através de um `HTTP POST`. +Webhooks (também conhecido como retorno de chamada web) são um método simples que permite a uma aplicação ou sistema fornecer informações em tempo real sempre que um evento ocorre. É uma forma passiva de receber dados entre dois sistemas por meio de uma solicitação `HTTP POST`. -As notificações Webhooks poderão ser configuradas para uma ou mais aplicações criadas em seu [Painel do desenvolvedor](/developers/panel/app). +As notificações Webhooks podem ser configuradas para cada uma das aplicações criadas em [Suas integrações](/developers/panel/app). Você também poderá configurar uma URL de teste que, junto com suas credenciais de teste, permitirá testar o funcionamento correto das suas notificações antes de sair à produção. -Uma vez configurado, o Webhook será enviado sempre que ocorrer um ou mais eventos cadastrados, evitando que haja um trabalho de pesquisa a cada minuto em busca de uma resposta e, por consequência, que ocorra uma sobrecarga do sistema e a perda de dados sempre que houver alguma situação. Após receber uma notificação na sua plataforma, o Mercado Pago aguardará uma resposta para validar se você a recebeu corretamente. +Uma vez configuradas, as notificações Webhooks serão enviadas sempre que ocorrer um ou mais eventos cadastrados. Isso evita a necessidade de verificações constantes, prevenindo a sobrecarga do sistema e a perda de dados em situações críticas. -Nesta documentação, explicaremos as configurações necessárias para o recebimento das mensagens (através do Painel do desenvolvedor ou durante a criação de pagamentos), além de apresentar quais são as ações necessárias que você deverá ter para que o Mercado Pago valide que as notificações foram devidamente recebidas. +Para configurar as notificações Webhooks, escolha entre uma das opções abaixo: -## Configuração através do Painel do desenvolvedor +| Tipo de configuração | Descrição | +|---|---| +| [Configuração via Suas integrações](/developers/pt/docs/your-integrations/notifications/webhooks#configuraoviasuasintegraes) | Permite configurar notificações para cada aplicação, identificar contas diferentes se necessário, e validar a origem da notificação utilizando uma assinatura secreta----[mla, mlb, mlu, mlc]---- (exceto para notificações de integrações com Código QR)------------. | +| [Configuração durante a criação de pagamentos](/developers/pt/docs/your-integrations/notifications/webhooks#configuraoduranteacriaodepagamentos) | Permite a configuração específica das notificações para cada pagamento, preferência ou pedidos comerciais. ----[mla]----Não é permitido configurar para integrações com Mercado Pago Point e nem para integrações com Mercado Pago Delivery----------------[mlb, mlm]----Não é permitido configurar para integrações com Mercado Pago Point------------.| -Abaixo explicaremos como: indicar as URLs que serão notificadas, configurar os eventos dos quais se receberá a notificação, simular o recebimento de diversos tipos de notificações e validar que as notificações que recebe são enviadas pelo Mercado Pago. +> WARNING +> +> Importante +> +> As URLs configuradas durante a criação do pagamento terão prioridade sobre aquelas configuradas através de Suas integrações. -![webhooks](/images/dashboard/webhooks-pt.png) +Uma vez que as notificações estiverem configuradas, consulte as [ações necessárias após receber uma notificação](/developers/pt/docs/your-integrations/notifications/webhooks#aesnecessriasapsreceberumanotificao) para validar se foram devidamente recebidas. + +## Configuração via Suas integrações + +Configure notificações para cada aplicação diretamente em [Suas integrações](/developers/panel/app) de forma eficiente e segura. Nesta documentação, explicaremos como: + +1. Indicar URLs e configurar eventos +2. Validar origem da notificação +3. Simular o recebimento da notificação -### Configurar URLs e Eventos - -1. Caso ainda não tenha, crie uma aplicação no [Painel do desenvolvedor](/developers/panel/app). -2. Com a aplicação criada, navegue até a seção Webhooks na página de "Detalhes da aplicação" e configure as URLs de **produção** e **teste** da qual serão recebidas as notificações. -3. Caso seja necessário identificar múltiplas contas, no final da URL indicada você poderá indicar o parâmetro `?cliente=(nomedovendedor) endpoint` para identificar os vendedores. -4. Em seguida, selecione os **eventos** dos quais você receberá notificações em formato `json` através de um `HTTP POST` para a URL especificada anteriormente. Um evento é qualquer tipo de atualização no objeto relatado, incluindo alterações de status ou atributo. Veja na tabela abaixo os eventos que poderão ser configurados. - -| Tipo de notificação | Ação | Descrição | -| :--- | :--- | :--- | -| `payment` | `payment.created` | Criação de pagamento | -| `payment` | `payment.updated` | Atualização de pagamento | -| `mp-connect` | `application.deauthorized` | Desvinculação de conta | -| `mp-connect` | `application.authorized` | Vinculação de conta | -| `subscription_preapproval` | `created - updated` | Assinatura | -| `subscription_preapproval_plan` | `created - updated` | Plano de assinatura | -| `subscription_authorized_payment` | `created - updated` | Pagamento recorrente de uma assinatura | -| `point_integration_wh` | `state_FINISHED`| Processo de pagamento concluído | -| `point_integration_wh` | `state_CANCELED` | Processo de pagamento cancelado | -| `point_integration_wh` | `state_ERROR`| Ocorreu um erro ao processar a tentativa de pagamento | -| `topic_instore_integration_wh` | - | Notificações de integrações presenciais | -| `shipments` | - | Notificações de envios | -| `delivery` | `delivery.updated`| Dados de envio e atualização do pedido | -| `delivery_cancellation` | `case_created`| Solicitação de cancelamento do envio | -| `wallet_connect` | - | Notificações de transações com [Wallet Connect](/developers/pt/docs/wallet-connect/landing) | -| `stop_delivery_op_wh` | - | Alertas de fraude | -| `topic_claims_integration_wh` | `updated`| Reclamações feitas pelas vendas | -| `topic_card_id_wh` | `card.updated`| O cartão de usuário comprador foi atualizado* | - -> *O _Card Updater_ recupera informações de cartões e atualiza essas informações dentro do Mercado Pago. Cartões recuperáveis com este recurso: cartões com alguma informação errada (como data de vencimento, número do cartão, CVV, nome, etc.) e cartões que tenham sido trocados pela instituição financeira (por motivo de validade, upgrade de cartão, etc.). - -5. Por fim, clique em **Salvar** para gerar uma **assinatura secreta** para a aplicação. A assinatura é um método de validação para garantir que as notificações recebidas foram enviadas pelo Mercado Pago, por isso, é importante conferir as informações de autenticidade para evitar fraudes. > WARNING > > Importante > -> O Mercado Pago sempre enviará essa assinatura nas notificações Webhooks. Sempre confira essa informação de autenticidade para evitar fraudes. ->
-> A assinatura gerada não tem prazo de validade e, embora não seja obrigatório, recomendamos renovar periodicamente a **assinatura secreta**. Para isso, basta clicar no botão de redefinição ao lado da assinatura. +> Este método de configuração não está disponível para integrações com----[mla, mlb, mlc, mlu]----Código QR e nem------------Assinaturas. Para configurar notificações com alguma dessas duas integrações, utilize o método [Configuração durante a criação de pagamentos](/developers/pt/docs/your-integrations/notifications/webhooks#configuraoduranteacriaodepagamentos). + + +### 1. Indicar URLs e configurar eventos -### Validar origem da notificação +Para configurar as notificações Webhooks via Suas integrações, é necessário indicar as URLs onde elas serão recebidas e especificar os eventos para os quais deseja receber notificações. -No momento em que a URL cadastrada receber uma notificação, você poderá validar se o conteúdo enviado no _header_ `x-signature` foi enviado pelo Mercado Pago, a fim de obter mais segurança no recebimento das suas notificações. +Para isso, siga as etapas descritas abaixo. + +1. Acesse [Suas integrações](/developers/panel/app) e selecione a aplicação para a qual deseja ativar as notificações. Caso ainda não tenha criado uma aplicação, acesse a [documentação Painel do Desenvolvedor](/developers/pt/docs/your-integrations/dashboard) e siga as instruções. +2. No menu à esquerda, vá até **Webhooks > Configurar notificações** e configure as URLs que serão usadas para receber as notificações. Recomendamos utilizar uma URL diferente para o modo de teste e o modo produção: + * **URL modo teste:** fornece uma URL que permite testar o correto funcionamento das notificações dessa aplicação durante a fase de teste ou desenvolvimento. O teste dessas notificações deverá ser realizado exclusivamente com as **credenciais de teste de usuários produtivos**. + * **URL modo produção:** fornece uma URL para receber notificações com sua integração produtiva. Essas notificações deverão ser configuradas com **credenciais produtivas**. + +![webhooks](/images/dashboard/webhooks-pt.png) > NOTE > -> Exemplo do conteúdo enviado no header x-signature +> Nota +> +> Caso seja necessário identificar múltiplas contas, adicione o parâmetro `?cliente=(nomedovendedor)` ao final da URL indicada para identificar os vendedores. + +3. Selecione os **eventos** para os quais deseja receber notificações em formato `json` através de um `HTTP POST` para a URL especificada anteriormente. Um evento pode ser qualquer atualização no objeto relatado, incluindo alterações de status ou atributos. Consulte a tabela abaixo para ver os eventos configuráveis, considerando a solução do Mercado Pago integrada e suas necessidades de negócio. + +| Eventos | Nome em Suas integrações | Tópico | Produtos associados | +|---|---|---|---| +| Criação e atualização de pagamentos | Pagamentos | `payment` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Assinaturas
----[mla, mlm, mlb]----Mercado Pago Point------------
Wallet Connect | +| Pagamento recorrente de uma assinatura (criação - atualização) | Planos e assinaturas | `subscription_authorized_payment` | Assinaturas | +| Vinculação de uma assinatura (criação - atualização) | Planos e assinaturas | `subscription_preapproval` | Assinaturas | +| Vinculação de um plano de assinatura (criação - atualização) | Planos e assinaturas | `subscription_preapproval_plan` | Assinaturas | +| Vinculação e desvinculação de contas que se conectaram através de OAuth | Vinculação de aplicações | `mp-connect` | Todos os produtos que tenham OAuth implementado | +----[mla, mlm, mlb]----| Finalização, cancelamento ou erros ao processar intenções de pagamento de dispositivos Mercado Pago Point. | Integrações Point | `point_integration_wh` | Mercado Pago Point |------------ +| Transações com Wallet Connect | Wallet Connect | `wallet_connect` | Wallet Connect | +| Alertas de fraude após o processamento de um pedido | Alertas de fraude | `stop_delivery_op_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro | +| Criação de estornos e reclamações | Reclamações | `topic_claims_integration_wh` | Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Pro
Checkout Bricks
Assinaturas
----[mla, mlm, mlb]----Mercado Pago Point------------
Código QR
Wallet Connect | +| Recuperação e atualização de informações de cartões no Mercado Pago | Card Updater | `topic_card_id_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +| Criação, fechamento ou expiração de ordens comerciais | Ordens comerciais | `topic_merchant_order_wh` | Checkout Pro
Código QR | +| Abertura de _chargebacks_, mudanças de status e modificações referentes às liberações de dinheiro | Chargebacks | `topic_chargebacks_wh` | Checkout Pro
Checkout ----[mlb]----Transparente ----------------[mla, mlu, mlc, mlm, mco, mpe]----API------------
Checkout Bricks | +----[mla]----| Criação, atualização ou cancelamento de pedidos. | Delivery (proximity marketplace) | `delivery` | Mercado Pago Delivery |------------ + + +> WARNING > -> `ts=1704908010,v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839` +> Importante +> +> Em caso de dúvidas sobre quais tópicos ativar ou quais eventos serão notificados, consulte a documentação [Informações adicionais sobre notificações](/developers/pt/docs/your-integrations/notifications/additional-info). + +5. Por fim, clique e **Salvar** para gerar uma **assinatura secreta** exclusiva para a sua aplicação, permitindo validar a autenticidade das notificações recebidas e garantir que tenham sido enviadas pelo Mercado Pago. A assinatura gerada não tem prazo de validade e sua renovação periódica não é obrigatória, embora seja altamente recomendável. Para renová-la, clique no botão de **redefinição** ao lado da assinatura. + +----[mla, mlb, mlu, mlc]---- + +> WARNING +> +> Importante +> +> As notificações de Código QR não podem ser verificadas utilizando a assinatura secreta, por isso, prossiga diretamente com a etapa de simulação de recebimento de notificações. Para integrações com Código QR que necessitam verificar a origem das notificações, entre em contato com [Soporte do Mercado Pago](https://www.mercadopago[FAKER][URL][DOMAIN]/developers/pt/support/center). + +------------ -Veja abaixo o passo a passo de como configurar essa validação e, ao final, disponibilizamos alguns SDKs com um **exemplo de código completo** para facilitar o seu processo de configuração. +### 2. Validar origem da notificação -1. Extraia o _timestamp_ (`ts`) e a assinatura do _header_ `x-signature`. Para isso, divida o conteúdo do _header_ pelo caractere `,`, o que resultará em uma lista de elementos. O valor para o prefixo `ts` é o _timestamp_ (em milissegundos) da notificação e `v1` é a assinatura encriptada. Exemplo: `ts=1704908010` e `v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839`. -2. Utilizando o _template_ abaixo, substitua os parâmetros pelos dados recebidos na sua notificação. +As notificações enviadas pelo Mercado Pago serão semelhantes ao exemplo abaixo para um alerta do tópico `payment`: + +```json +{ + "id": 12345, + "live_mode": true, + "type": "payment", + "date_created": "2015-03-25T10:04:58.396-04:00", + "user_id": 44444, + "api_version": "v1", + "action": "payment.created", + "data": { + "id": "999999999" + } +} +``` + +O Mercado Pago sempre incluirá a assinatura secreta nas notificações Webhooks recebidas na URL cadastrada. Isso permitirá validar a sua autenticidade, proporcionando maior segurança e prevenindo possíveis fraudes. + +Esta assinatura será enviada no _header_ `x-signature`, conforme o exemplo abaixo. + +```x-signature +`ts=1704908010,v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839` + +``` + +Para configurar essa validação, é necessário extrair a chave contida no _header_ e compará-la com a chave fornecida para sua aplicação em Suas integrações. Para isso, siga as etapas abaixo. No final, disponibilizamos alguns SDKs com um exemplo de código completo para facilitar o processo: + +1. Para extrair o _timestamp_ (`ts`) e a assinatura do _header_ `x-signature`, divida o conteúdo do _header_ pelo caractere `,`, o que resultará em uma lista de 2 elementos. O valor para o prefixo `ts` é o _timestamp_ (em milissegundos) da notificação, e `v1` é a assinatura encriptada. Seguindo o exemplo apresentado acima, `ts=1704908010` e `v1=618c85345248dd820d5fd456117c2ab2ef8eda45a0282ff693eac24131a5e839`. +2. Utilizando o _template_ e as descrições abaixo, substitua os parâmetros pelos dados recebidos na sua notificação. ```template id:[data.id_url];request-id:[x-request-id_header];ts:[ts_header]; ``` -No _template_, os valores englobados por `[]` devem ser trocados pelos valores da notificação, como: + * Parâmetros com sufixo `_url` são provenientes de _query params_. Exemplo: `[data.id_url]`. Deve ser substituído pelo valor correspondente ao ID do evento (`data.id`). Esse `query param` poderá ser encontrado na notificação recebida. + * `[ts_header]` representa o valor `ts` extraído do _header_ `x-signature`. + * `[x-request-id_header]` deve ser substituído pelo valor recebido no _header_ `x-request-id`. -- Parâmetros com sufixo `_url` são provenientes de _query params_. Exemplo: `[data.id_url]` será substituido pelo valor correspondente ao ID do evento (`data.id`). -- `[ts_header]` será o valor `ts` extraído do _header_ `x-signature`. - -> Caso algum dos valores apresentados no _template_ acima não esteja presente em sua notificação, você deverá removê-los do template. +> WARNING +> +> Importante +> +> Se algum dos valores mostrados no modelo acima não estiver presente na sua notificação, você deve removê-lo. -3. No [Painel do desenvolvedor](/developers/panel/app), selecione a aplicação integrada, navegue até a seção Webhooks e **revele a assinatura secreta** gerada. -4. Gere a contra chave para validação. Para isso, calcule um [HMAC](https://pt.wikipedia.org/wiki/HMAC) com a função de `hash SHA256` em base hexadecimal, utilize a **assinatura secreta** como chave e o _template_ populado com os valores como mensagem. Exemplo: +3. Em [Suas integrações](/developers/panel/app), selecione a aplicação integrada e navegue até a seção de Webhooks para visualizar a assinatura secreta gerada. +4. Crie a contra chave para validação. Para isso, calcule um HMAC (Código de Autenticação de Mensagem Baseado em Hash) utilizando a função de `hash SHA256` em base hexadecimal. Utilize a **assinatura secreta** como chave e o template preenchido com os respectivos valores como mensagem. [[[ ```php @@ -104,9 +164,9 @@ cyphedSignature = binascii.hexlify(hmac_sha256(secret.encode(), signedTemplate.e ``` ]]] -5. Por fim, compare a chave gerada com a chave extraída do cabeçalho, considerando elas devem ter uma correspondência exata. Além disso, é possível usar o _timestamp_ extraído do _header_ para comparação com um _timestamp_ gerado na hora do recebimento da notificação, a fim de estipular uma tolerância de atraso no recebimento da mensagem. +5. Por fim, compare a chave gerada com a chave extraída do _header_, assegurando que correspondam exatamente. Além disso, é possível usar o _timestamp_ extraído do _header_ para compará-lo com um _timestamp_ gerado no momento do recebimento da notificação. Isso permite estabelecer uma margem de tolerância para atrasos no recebimento da mensagem. -- Exemplo de código completo: +Veja exemplos de códigos completos abaixo: [[[ ```php @@ -333,18 +393,42 @@ if sha == hash { ``` ]]] -### Simular o recebimento da notificação +### 3. Simular o recebimento da notificação + +Para garantir que as notificações estejam configuradas corretamente, é necessário simular o recebimento delas. Para isso, siga os seguintes passos: + +1. Após configurar as URLs e os eventos desejados, clique em **Salvar** para salvar a configuração. +2. Após isso, clique em **Simular** para testar se a URL indicada está recebendo as notificações corretamente. +3. Na tela de simulação, selecione a URL a ser testada, podendo ser uma URL de **teste** ou de **produção**. +4. Em seguida, selecione o **tipo de evento** desejado e insira a **identificação** que será enviada no corpo da notificação. +5. Por fim, clique em **Enviar teste** para verificar a solicitação, a resposta dada pelo servidor e a descrição do evento. -1. Após configurar as URLs e os Eventos, clique em **Simular** para experimentar e testar se a URL indicada está recebendo as notificações corretamente. -2. Na tela em questão, selecione a URL a ser testada, podendo ser **de teste ou de produção**. -3. Em seguida, selecione o **tipo de evento** e insira a **identificação** que será enviada no corpo da notificação. -4. Por fim, cique em **Enviar teste** para verificar a solicitação, a resposta dada pelo servidor e a descrição do evento. ## Configuração durante a criação de pagamentos -É possível configurar a URL de notificação de modo mais específico, para cada pagamento utilizando o campo `notification_url`. Veja abaixo como fazer isso com uso dos SDKs. +Durante o processo de criação de pagamentos, preferências ou ordens comerciais, é possível configurar a URL de notificação de maneira específica para cada pagamento, utilizando o campo `notification_url` e implementando o receptor de notificações necessário. +----[mla]---- +> WARNING +> +> Importante +> +> Este método não permite configurar notificações para os tópicos `point_integration_wh` e `delivery` utilizando este método. Para ativá-los, utilize as [configurações via Suas integrações](/developers/pt/docs/your-integrations/notifications/webhooks#configuraoviasuasintegraes). + +------------ +----[mlb, mlm]---- + +> WARNING +> +> Importante +> +> Este método não permite configurar notificações para o tópico de `point_integration_wh` utilizando este método. Para ativá-lo, utilize as [configurações de Suas integrações](/developers/pt/docs/your-integrations/notifications/webhooks#configuraoviasuasintegraes). + +------------ + +A seguir, explicamos como realizar esta configuração utilizando nossos SDKs. + +1. No campo `notification_url`, informe a URL que receberá as notificações, conforme o exemplo abaixo. Para receber notificações exclusivamente via Webhooks e não via IPN, adicione o parâmetro `source_news=webhooks` à `notification_url`. Por exemplo: `https://www.yourserver.com/notifications?source_news=webhooks`. -1. No campo `notificaction_url`, indique a URL da qual serão recebidas as notificações como exemplificado abaixo. [[[ ```php @@ -588,7 +672,7 @@ curl -X POST \ ``` ]]] -2. Implemente o receptor de notificações usando o seguinte código como exemplo: +2. Implemente o receptor de notificações utilizando o seguinte código como exemplo: ```php ``` -3. Feitas as devidas configurações, a notificação via Webhooks terá o seguinte formato: +Após realizar as configurações necessárias, a notificação Webhooks será entregue com formato `JSON`. Veja o exemplo de notificação do tópico de `payments` e as descrições das informações enviadas na tabela abaixo. -> NOTE +> WARNING > > Importante > -> Para o tipo de evento `point_integration_wh`, o formato da notificação muda. [Clique aqui](/developers/pt/docs/mp-point/landing) para consultar a documentação do **Mercado Pago Point**.

->

-> No caso dos eventos de `delivery`, `topic_claims_integration_wh` e `topic_card_id_wh'`, também teremos alguns atributos diferentes na resposta. Veja na tabela abaixo quais são essas particularidades. +> Os pagamentos de teste, criados com credenciais de teste, não enviarão notificações. A única maneira de testar o recebimento de notificações é por meio da [Configuração via Suas integrações](/developers/pt/docs/your-integrations/notifications/webhooks#configuraoviasuasintegraes). ```json { @@ -637,94 +719,118 @@ curl -X POST \ } } ``` -Isso indica que foi criado o pagamento **999999999** para o usuário **44444** em modo de produção com a versão V1 da API e que esse evento ocorreu na data **2016-03-25T10:04:58.396-04:00**. - -| Atributo | Descrição | -| --- | --- | -| **id** | ID de notificação | -| **live_mode** | Indica se a URL informada é valida | -| **type** | Tipo de notificação recebida (payments, mp-connect, subscription, claim, automatic-payments, etc) | -| **date_create** | Data de criação do recurso | -| **user_id**| UserID de vendedor | -| **api_version** | Indica se é uma notificação duplicada ou não | -| **action** | Tipo de notificação recebida, indicando se se trata da atualização de um recurso ou da criação de um novo | -| **data - id** | ID do payment, do merchant_order ou da reclamação | -| **data - customer_id** (card updater)| ID do comprador que teve o cartão atualizado | -| **data - new_card_id** (card updater)| Número atualizado do cartão | -| **data - old_card_id** (card updater)| Número antigo do cartão | -| **attempts** (delivery) | Número de vezes que uma notificação foi enviada | -| **received** (delivery) | Data de criação do recurso | -| **resource** (delivery) | Tipo de notificação recebida, indicando se trata-se da atualização de um recurso ou da criação de um novo | -| **sent** (delivery) | Data de envio da notificação | -| **topic** (delivery) | Tipo de notificação recebida | -| **resource** (claims) | Tipo de notificação recebida, indicando notificações relacionadas à reclamações feitas por vendas | - -4. Caso deseje receber notificações apenas de Webhook e não de IPN, você pode adicionar na `notification_url` o parâmetro `source_news=webhooks`. Por exemplo: https://www.yourserver.com/notifications?source_news=webhooks -## Ações necessárias após receber uma notificação +| Atributo | Descrição | Exemplo no JSON | +| --- | --- | --- | +| **id** | ID de notificação | `12345` | +| **live_mode** | Indica se a URL informada é válida| `true` | +| **type** | Tipo de notificação recebida de acordo com o tópico previamente selecionado (payments, mp-connect, subscription, claim, automatic-payments, etc.) | `payment` | +| **date_created** | Data de criação do recurso notificado | `2015-03-25T10:04:58.396-04:00` | +| **user_id**| Identificador do vendedor | `44444` | +| **api_version** | Valor que indica a versão da API que envia a notificação. | `v1` | +| **action** | Evento notificado, indicando se é uma atualização de recurso ou a criação de um novo | `payment.created` | +| **data.id** | ID do pagamento, do `merchant_order` ou da reclamação | `999999999` | -[TXTSNIPPET][/guides/snippets/test-integration/notification-response] -> NOTE +----[mla]---- +> WARNING > > Importante > -> No caso do tipo de evento `delivery`, para evitar que o tópico de notificações realize novas tentativas de envio será necessário confirmar o recebimento das mensagens retornando um `HTTP STATUS 200 (OK)` em até **500 ms**. Caso não seja enviada uma mensagem confirmando o recebimento da notificação, **novas tentativas serão feitas em um período de 12 horas**. +> Para obter o formato de notificações para tópicos diferentes de `payment`, como `point_integration_wh`, `delivery`, `topic_claims_integration_wh` e `topic_card_id_wh`, consulte [Informações adicionais sobre notificações](/developers/pt/docs/your-integrations/notifications/additional-info). +------------ +----[mlb, mlm]---- +> WARNING +> +> Importante +> +> Para obter o formato de notificações para tópicos diferentes de `payment`, como `point_integration_wh`, `topic_claims_integration_wh` e `topic_card_id_wh`, consulte [Informações adicionais sobre notificações](/developers/pt/docs/your-integrations/notifications/additional-info). + +------------ +----[mlu, mlc, mco, mpe]---- +> WARNING +> +> Importante +> +> Para obter o formato de notificações para tópicos diferentes de `payment`, como `topic_claims_integration_wh` e `topic_card_id_wh`, consulte [Informações adicionais sobre notificações](/developers/pt/docs/your-integrations/notifications/additional-info). + +------------ + + +## Ações necessárias após receber uma notificação + +Ao receber uma notificação em sua plataforma, o Mercado Pago aguarda uma resposta para validar se você a recebeu corretamente. Para isso, é necessário retornar um status `HTTP STATUS 200 (OK)` ou `201 (CREATED)`. + +O **tempo de espera** para a confirmação da recepção das notificações será de **22 segundos**. Se essa confirmação não for enviada, o sistema entenderá que a notificação não foi recebida e realizará **novas tentativas de envio a cada 15 minutos**, até receber uma resposta. Após a terceira tentativa, o prazo será prorrogado, mas os envios continuarão acontecendo. -Depois de dar um retorno à notificação e confirmar o seu recebimento, você obterá as informações completas do recurso notificado acessando o endpoint correspondente da API: +Após responder à notificação e confirmar seu recebimento, é possível obter as informações completas do recurso notificado fazendo uma requisição ao endpoint correspondente da API. Para identificar qual endpoint utilizar, confira a tabela abaixo: ----[mpe, mco, mlu, mlc]---- | Tipo | URL | Documentação | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentação](/developers/pt/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [ver documentação](/developers/pt/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [ver documentación](/developers/pt/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [ver documentación](/developers/pt/reference/subscriptions/_authorized_payments_id/get) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [ver documentação](/developers/pt/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obter pagamento](/developers/pt/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Obter assinatura](/developers/pt/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Obter plano de assinatura](/developers/pt/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Obter dados de fatura](/developers/pt/reference/subscriptions/_authorized_payments_id/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Obter detalhes da reclamação](/developers/pt/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obter pedido](/developers/pt/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obter estorno](/developers/pt/reference/chargebacks/_chargebacks_id/get) | ------------ ----[mlm, mlb]---- | Tipo | URL | Documentação | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentação](/developers/pt/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [ver documentação](/developers/pt/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [ver documentación](/developers/pt/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [ver documentación](/developers/pt/reference/subscriptions/_authorized_payments_id/get) | -| point_integration_wh | - | [ver documentação](/developers/pt/docs/mp-point/integration-configuration/integrate-with-pdv/notifications) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [ver documentação](/developers/pt/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obter pagamento](/developers/pt/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Obter assinatura](/developers/pt/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Obter plano de assinatura](/developers/pt/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Obter dados de fatura](/developers/pt/reference/subscriptions/_authorized_payments_id/get) | +| point_integration_wh| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Obter intenção de pagamento](/developers/pt/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Obter detalhes da reclamação](/developers/pt/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obter pedido](/developers/pt/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obter estorno](/developers/pt/reference/chargebacks/_chargebacks_id/get) | ------------ ----[mla]---- | Tipo | URL | Documentação | | --- | --- | --- | -| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [ver documentação](/developers/pt/reference/payments/_payments_id/get) | -| subscription_preapproval | `https://api.mercadopago.com/preapproval` | [ver documentação](/developers/pt/reference/subscriptions/_preapproval/post) | -| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan` | [ver documentación](/developers/pt/reference/subscriptions/_preapproval_plan/post) | -| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments` | [ver documentación](/developers/pt/reference/subscriptions/_authorized_payments_id/get) | -| point_integration_wh | - | [ver documentação](/developers/pt/docs/mp-point/integration-configuration/integrate-with-pdv/notifications) | -| delivery | - | [ver documentação](/developers/pt/reference/mp_delivery/_proximity-integration_shipments_shipment_id_accept/put) | -| topic_claims_integration_wh | `https://api.mercadopago.com/claim_resource` | [ver documentação](/developers/pt/developers/pt/reference/claims/_data_resource/get) | +| payment | `https://api.mercadopago.com/v1/payments/[ID]` | [Obter pagamento](/developers/pt/reference/payments/_payments_id/get) | +| subscription_preapproval | `https://api.mercadopago.com/preapproval/search` | [Obter assinatura](/developers/pt/reference/subscriptions/_preapproval_search/get) | +| subscription_preapproval_plan | `https://api.mercadopago.com/preapproval_plan/search` | [Obter plano de assinatura](/developers/pt/reference/subscriptions/_preapproval_plan_search/get) | +| subscription_authorized_payment | `https://api.mercadopago.com/authorized_payments/[ID]` | [Obter dados de fatura](/developers/pt/reference/subscriptions/_authorized_payments_id/get) | +| point_integration_wh| `https://api.mercadopago.com/point/integration-api/payment-intents/{paymentintentid}` | [Obter intenção de pagamento](/developers/pt/reference/integrations_api/_point_integration-api_payment-intents_paymentintentid/get) | +| delivery | `https://api.mercadopago.com/proximity-integration/v1/orders/{shipment_id}` | [Obter pedido](/developers/pt/reference/mp_delivery/_proximity-integrationorders_shipment_id/get) | +| topic_claims_integration_wh | `https://api.mercadopago.com/post-purchase/v1/claims/[claim_id]` | [Obter detalhes da reclamação](/developers/pt/reference/claims/get-claim-details/get) | +| topic_merchant_order_wh | `https://api.mercadopago.com/merchant_orders/[ID]` | [Obter pedido](/developers/pt/reference/merchant_orders/_merchant_orders_id/get) | +| topic_chargebacks_wh | `https://api.mercadopago.com/v1/chargebacks/[ID]` | [Obter estorno](/developers/pt/reference/chargebacks/_chargebacks_id/get) | ------------ -Além disso, especificamente em alertas de fraude, o pedido não deve ser entregue e o cancelamento precisa ser realizado através da [API de cancelamentos](/developers/pt/reference/chargebacks/_payments_payment_id/put). +Com essas informações, você poderá realizar as atualizações necessárias na sua plataforma como, por exemplo, atualizar um pagamento aprovado. -Na notificação, você receberá um `JSON` com as seguintes informações contendo o id de pagamento para efetuar o cancelamento. +## Painel de notificações -```json +O painel de notificações permite ao usuário visualizar os eventos disparados sobre uma determinada integração, verificar o status e obter informações detalhadas desses eventos. +Este painel será exibido assim que você configurar suas notificações **Webhooks**, e você pode acessá-lo a qualquer momento clicando em Webhooks dentro de Suas integrações. - "description": ".....", - "merchant_order": 4945357007, - "payment_id": 23064274473 +Entre as informações disponíveis estão a porcentagem de notificações entregues, bem como uma visão rápida das URLs e dos eventos configurados. +Além disso, você encontrará uma lista completa das últimas notificações enviadas e seus detalhes, como **status da entrega** (sucesso ou falha), **ação** (ação associada ao evento disparado), **evento** (tipo de evento disparado) e **data e hora**. Se desejar, é possível filtrar esses resultados exibidos por **status da entrega** e por período (**data e hora**). -``` +![paiel de notificações webhooks](/images/dashboard/notification-dashboard-pt.png) -> NOTE -> -> Importante -> -> É possível obter mais detalhes sobre o pedido utilizando a API [Obter pedido](/developers/pt/reference/merchant_orders/_merchant_orders_id/get). +### Detalhes do evento + +Ao clicar em uma das notificações listadas, é possível acessar os detalhes do evento. Esta seção fornece mais informações e permite a recuperação de dados perdidos em caso de falha na entrega da notificação para manter o sistema sempre atualizado. + + * **Status:** Status do evento junto com o código de sucesso ou erro correspondente. + * **Evento:** Tipo de evento disparado, conforme selecionado na configuração das notificações. + * **Tipo:** Tópico ao qual o evento disparado pertence, conforme a seleção feita durante a configuração. + * **Data e hora do disparo:** Data e hora em que o evento foi disparado. + * **Descrição:** Descrição detalhada do evento conforme documentada. + * **ID do disparo:** Identificador único da notificação enviada. + * **Requisição:** JSON da requisição correspondente à notificação disparada. + +![detalhes de notificações enviadas](/images/dashboard/notification-details-dashboard-pt.png) -Com essas informações, você poderá realizar as atualizações necessárias na sua plataforma como, por exemplo, atualizar um pagamento aprovado. \ No newline at end of file +Em caso de falha na entrega da notificação, é possível visualizar os motivos e corrigir as informações necessárias para evitar problemas futuros. \ No newline at end of file diff --git a/images/dashboard/notification-dashboard-es.png b/images/dashboard/notification-dashboard-es.png new file mode 100644 index 0000000000..8da51c2b66 Binary files /dev/null and b/images/dashboard/notification-dashboard-es.png differ diff --git a/images/dashboard/notification-dashboard-pt.png b/images/dashboard/notification-dashboard-pt.png new file mode 100644 index 0000000000..4ad4bc37d8 Binary files /dev/null and b/images/dashboard/notification-dashboard-pt.png differ diff --git a/images/dashboard/notification-details-dashboard-es.png b/images/dashboard/notification-details-dashboard-es.png new file mode 100644 index 0000000000..046d97c4cb Binary files /dev/null and b/images/dashboard/notification-details-dashboard-es.png differ diff --git a/images/dashboard/notification-details-dashboard-pt.png b/images/dashboard/notification-details-dashboard-pt.png new file mode 100644 index 0000000000..c5315b010f Binary files /dev/null and b/images/dashboard/notification-details-dashboard-pt.png differ