Recursos para IA

Cómo migrar de Payment Intent API a Orders API

Orders API unifica el procesamiento de pagos presenciales en Mercado Pago Point, ofreciendo endpoints estandarizados, un modelo de status más completo y nuevos recursos nativos que no existían en Payment Intent API. Además, todas las nuevas funcionalidades de Mercado Pago se desarrollarán sobre Orders API.

La migración de la integración de Mercado Pago Point de Payment Intent API a Orders API implica la actualización de endpoints y campos de la solicitud, la adaptación del modelo de status y el aprovechamiento de nuevos recursos nativos. La nueva API incorpora status autocontenidos, validez configurable de la order (expiration_time), cancelación después del envío a la terminal y un endpoint dedicado de reembolso. La migración no implica cambios en el flujo de negocio: la terminal sigue recibiendo las orders creadas por el backend y procesando los pagos de forma autónoma.

A continuación, te explicamos cómo realizar esta migración de forma completa.

Mapear los cambios de endpoint

Antes de iniciar los pasos de migración, consulta la tabla a continuación para tener una visión general de todos los cambios de endpoint. En Payment Intent API, cada operación utilizaba una estructura de URL propia con el identificador del dispositivo en el path. Orders API consolida estas operaciones en endpoints estandarizados y elimina el {deviceid} del path en todas las operaciones.

Adaptar los headers

Orders API introduce dos cambios obligatorios de headers que afectan a todos los endpoints: el mecanismo de sandbox fue eliminado y un nuevo control de idempotencia fue introducido. Aplica los cambios a continuación antes de probar cualquier otro recurso.

Actualizar el listado y configuración de terminales

Los endpoints de terminales cambiaron de URL: el listado pasa de GET /point/integration-api/devices a GET /terminals/v1/list y la actualización de modo pasa de PATCH /point/integration-api/devices/{device_id} a PATCH /terminals/v1/setup. En la actualización de modo, el identificador de la terminal también deja el path y pasa al body, dentro del array terminals[]. Actualmente, el array acepta un único elemento, por lo que solo puedes actualizar una terminal por solicitud.

Migrar la creación de intenciones de pago a la creación de orders

El endpoint de creación cambia de POST /point/integration-api/devices/{deviceid}/payment-intents a POST /v1/orders. Además del cambio de URL, la estructura de la solicitud fue significativamente reorganizada: el identificador de la terminal deja el path y pasa al body, se introdujeron nuevos campos obligatorios y Orders API posee una estructura distinta. Sigue los pasos a continuación para adaptar la solicitud, la respuesta y el tratamiento de errores.

curl
curl -X POST \
  'https://api.mercadopago.com/v1/orders' \
  -H 'Content-Type: application/json' \
  -H 'X-Idempotency-Key: {{IDEMPOTENCY_KEY}}' \
  -H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
  -d '{
    "type": "point",
    "external_reference": "ext_ref_1234",
    "transactions": {
      "payments": [
        {
          "amount": "24.00"
        }
      ]
    },
    "config": {
      "point": {
        "terminal_id": "{{TERMINAL_ID}}",
        "print_on_terminal": "no_ticket"
      }
    },
    "description": "Point Smart 2"
  }'

Actualizar el mecanismo de consulta de Intención de Pago a Orders

El endpoint de consulta cambia de GET /point/integration-api/payment-intents/{paymentintentid}GET a GET /v1/orders/{orderid}GET. El identificador de la order en el path también cambia de formato UUID a alfanumérico. La respuesta incluye campos nuevos con información sobre el resultado del pago, reembolsos y datos de la tarjeta utilizada.

curl
curl -X GET \
  'https://api.mercadopago.com/v1/orders/{{ORDER_ID}}' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer {{ACCESS_TOKEN}}'

Actualizar el tratamiento de status

Uno de los cambios más significativos entre Payment Intent API y Orders API es el del campo state, que pasa a llamarse status en la nueva API y recibe nuevos valores. En Payment Intent API, el estado FINISHED requería llamadas adicionales para determinar el resultado real del pago. En Orders API, los status processed y failed son autocontenidos y eliminan esa necesidad. Actualiza todas las verificaciones de status de la integración conforme a la tabla a continuación.

Actualizar el tópico de notificaciones de webhook

En Payment Intent API, las notificaciones de Point se enviaban con el tópico point_integration_wh. En Orders API, pasan al tópico Order (Mercado Pago) (orders). Antes de ir a producción, actualiza la configuración de tu aplicación en Tus integraciones: suscríbete a Order (Mercado Pago) y desactiva point_integration_wh.

Para más información, consulta la documentación Configurar notificaciones.

Actualizar la cancelación de orders

El nuevo endpoint para cancelar una order es POST /v1/orders/{orderid}/cancel, reemplazando el DELETE de Payment Intent API. El {deviceid} desaparece del path y la cancelación pasa a identificarse únicamente por el {orderid}.

Con Payment Intent API, solo era posible cancelar intenciones de pago que aún no habían llegado a la terminal. En Orders API, es posible cancelar una order incluso después de que haya llegado a la terminal, mediante un nuevo header específico.

curl
curl -X POST \
  'https://api.mercadopago.com/v1/orders/{{ORDER_ID}}/cancel' \
  -H 'Content-Type: application/json' \
  -H 'X-Idempotency-Key: {{IDEMPOTENCY_KEY}}' \
  -H 'Authorization: Bearer {{ACCESS_TOKEN}}'

Implementar reembolsos con el endpoint dedicado

Orders API introduce el endpoint dedicado POST /v1/orders/{orderid}/refund para reembolsos, que no existía en Payment Intent API. Antes, era necesario recibir el webhook del pago, obtener el payment_id y ejecutar el reembolso a través de la API de Payments por separado. Ahora, el reembolso se realiza directamente sobre la order.

Validar la migración

Después de aplicar los cambios, verifica que la integración funcione correctamente en todos los flujos antes de ir a producción.

El header x-test-scope fue eliminado de todas las solicitudes de la integración.

El header X-Idempotency-Key debe estar presente en todas las operaciones de creación, cancelación y reembolso.

Terminales listadas con el endpoint GET /terminals/v1/listGET y configuradas mediante PATCH /terminals/v1/setupPATCH en modo PDV.

Orders creadas correctamente con el nuevo payload en el endpoint POST /v1/ordersPOST y recibidas en la terminal.

Orders consultadas correctamente a través del endpoint GET /v1/orders/{orderid}GET.

Tópico "Order (Mercado Pago)" (orders) configurado en Tus integraciones sustituyendo point_integration_wh, y status de orders monitoreados con los nuevos valores: created, at_terminal, processed, failed, canceled y refunded.

Orders canceladas correctamente a través del endpoint POST /v1/orders/{orderid}/cancelPOST.

Reembolsos realizados a través del endpoint dedicado POST /v1/orders/{orderid}/refundPOST.

Accede a la documentación para saber cómo probar la integración.