Recursos para IA

Como migrar da Payment Intent API para a Orders API

A Orders API unifica o processamento de pagamentos presenciais em Mercado Pago Point, oferecendo endpoints padronizados, um modelo de status mais completo e novos recursos nativos que não existiam na Payment Intent API. Além disso, todas as novas funcionalidades do Mercado Pago serão desenvolvidas sobre a Orders API.

A migração da integração de Mercado Pago Point da Payment Intent API para a Orders API envolve a atualização de endpoints e campos da requisição, a adaptação do modelo de status e o aproveitamento de novos recursos nativos. A nova API incorpora status autocontidos, validade configurável da order (expiration_time), cancelamento depois do envio ao terminal e um endpoint dedicado de reembolso. A migração não implica mudanças no fluxo de negócio: o terminal continua recebendo as orders criadas pelo backend e processando os pagamentos de forma autônoma.

Este guia contempla os modos PDV e SELF_SERVICE. No SELF_SERVICE, você também deverá adaptar o controle do tempo de tela (screen_time) e os valores de impressão do comprovante.

Veja a seguir como realizar esta migração de forma completa.

Mapear as mudanças de endpoint

Antes de iniciar os passos de migração, consulte a tabela abaixo para ter uma visão geral de todas as mudanças de endpoint. Na Payment Intent API, cada operação utilizava uma estrutura de URL própria com o identificador do dispositivo no path. A Orders API consolida essas operações em endpoints padronizados e remove o {deviceid} do path em todas as operações.

Adaptar os headers

A Orders API introduz duas mudanças obrigatórias de headers que afetam todos os endpoints: o mecanismo de sandbox foi eliminado e um novo controle de idempotência foi introduzido. Aplique as alterações a seguir antes de testar qualquer outro recurso.

Atualizar a listagem e configuração de terminais

Os endpoints de terminais mudaram de URL: a listagem passa de GET /point/integration-api/devices para GET /terminals/v1/list e a atualização de modo passa de PATCH /point/integration-api/devices/{device_id} para PATCH /terminals/v1/setup. Na atualização de modo, o identificador do terminal também deixa o path e passa para o body, dentro do array terminals[]. Atualmente, o array aceita um único elemento, então você só pode atualizar um terminal por requisição.

Migrar a criação de intenções de pagamento para a criação de orders

O endpoint de criação muda de POST /point/integration-api/devices/{deviceid}/payment-intents para POST /v1/orders. Além da mudança de URL, a estrutura da requisição foi significativamente reorganizada: o identificador do terminal deixa o path e passa para o body, novos campos obrigatórios foram introduzidos e a Orders API possui uma estrutura distinta. Siga os passos abaixo para adaptar a requisição, a resposta e o tratamento de erros.

A mesma requisição de criação é utilizada em PDV e SELF_SERVICE. Para SELF_SERVICE, você pode adicionar o parâmetro opcional config.point.screen_time. Se o comprovante de pagamento for impresso pelo totem, envie no_ticket em config.point.print_on_terminal para evitar sua impressão pelo terminal Point.

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"
  }'

Atualizar o mecanismo de consulta de Intenção de Pagamento para Orders

O endpoint de consulta muda de GET /point/integration-api/payment-intents/{paymentintentid}GET para GET /v1/orders/{orderid}GET. O identificador da order no path também muda de formato UUID para alfanumérico. O response inclui campos novos com informações sobre o resultado do pagamento, reembolsos e dados do cartão utilizado.

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

Atualizar o tratamento de status

Uma das mudanças mais significativas entre a Payment Intent API e a Orders API é o campo state, que passa a se chamar status na nova API e recebe novos valores. Na Payment Intent API, o estado FINISHED exigia chamadas adicionais para determinar o resultado real do pagamento. Na Orders API, os status processed e failed são autocontidos e eliminam essa necessidade. Atualize todas as verificações de status da integração conforme a tabela a seguir.

Atualizar o tópico de notificações de webhook

Na Payment Intent API, as notificações de Point eram enviadas pelo tópico point_integration_wh. Na Orders API, elas passam para o tópico Order (Mercado Pago) (orders). Antes de subir em produção, atualize a configuração da sua aplicação em Suas integrações: inscreva-se em Order (Mercado Pago) e desative point_integration_wh.

Para mais informações, consulte a documentação Configurar notificações.

Atualizar o cancelamento de orders

O novo endpoint para cancelar uma order é POST /v1/orders/{orderid}/cancel, substituindo o DELETE da Payment Intent API. O {deviceid} desaparece do path e o cancelamento passa a ser identificado apenas pelo {orderid}.

Na Payment Intent API, só era possível cancelar intenções de pagamento que ainda não tinham chegado ao terminal. Na Orders API, é possível cancelar uma order mesmo depois de ela ter chegado ao terminal, por meio de um novo 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 com o endpoint dedicado

A Orders API introduz o endpoint dedicado POST /v1/orders/{orderid}/refund para reembolsos, que não existia na Payment Intent API. Antes, era necessário receber o webhook do pagamento, obter o payment_id e executar o reembolso pela API de Payments separadamente. Agora, o reembolso é realizado diretamente sobre a order.

Validar a migração

Após aplicar as alterações, verifique se a integração opera corretamente em todos os fluxos antes de ir a produção.

O header x-test-scope foi removido de todas as requisições da integração.

O header X-Idempotency-Key deve estar presente em todas as operações de criação, cancelamento e reembolso.

Terminais listados com o endpoint GET /terminals/v1/listGET e configurados por meio de PATCH /terminals/v1/setupPATCH no modo PDV ou SELF_SERVICE, de acordo com o fluxo da integração.

Orders criadas com sucesso com o novo payload no endpoint POST /v1/ordersPOST e recebidas no terminal.

Orders consultadas com sucesso pelo endpoint GET /v1/orders/{orderid}GET.

Tópico "Order (Mercado Pago)" (orders) configurado em Suas integrações substituindo point_integration_wh, e status de orders monitorados com os novos valores: created, at_terminal, processed, failed, canceled e refunded.

Orders canceladas com sucesso pelo endpoint POST /v1/orders/{orderid}/cancelPOST.

Reembolsos executados pelo endpoint dedicado POST /v1/orders/{orderid}/refundPOST.

Acesse a documentação para saber como testar a integração.