Recursos para IA

Cómo migrar de la API de Intención de Pago a la API de Orders

La API de Orders 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 la API de Intención de Pago. Además, todas las nuevas funcionalidades de Mercado Pago se desarrollarán sobre la API de Orders.

La migración de la integración de Mercado Pago Point de la API de Intención de Pago a la API de Orders 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, como el 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 la API de Intención de Pago, cada operación utilizaba una estructura de URL propia con el identificador del dispositivo en el path. La API de Orders consolida estas operaciones en endpoints estandarizados y elimina el {deviceid} del path en todas las operaciones.

Adaptar los headers

La API de Orders 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, lo que permite actualizar múltiples terminales en una única llamada.

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 la API de Orders 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}API a GET /v1/orders/{orderid}API. 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 la API de Intención de Pago y la API de Orders es el del campo state, que pasa a llamarse status en la nueva API y recibe nuevos valores. En la API de Intención de Pago, el estado FINISHED requería llamadas adicionales para determinar el resultado real del pago. En la API de Orders, 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 la cancelación de orders

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

Con la API de Intención de Pago, solo era posible cancelar intenciones de pago que aún no habían llegado a la terminal. En la API de Orders, 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

La API de Orders introduce el endpoint dedicado POST /v1/orders/{orderid}/refund para reembolsos, que no existía en la API de Intención de Pago. 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/listAPI y modo de operación actualizado con PATCH /terminals/v1/setupAPI.

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

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

Status de orders monitoreados vía webhook con los nuevos valores: created, at_terminal, processed, failed, canceled y refunded.

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

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

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