Cost+Docs

Consultas de Estado

Verificar estados de encomendas e transações

Cada pagamento na Cost+ é representado por uma encomenda que contém uma ou mais transações. Pode verificar o estado atual de qualquer encomenda consultando a API, seja por polling ou através de webhooks.

Obter o Estado da Encomenda

Envie um pedido GET para /v1/orders/\{id\}/ para obter o objeto completo da encomenda, incluindo o seu estado atual e todas as transações associadas.

GET /v1/orders/b9ae6.../

Embora o polling funcione para verificar o estado da encomenda, os webhooks são a abordagem recomendada para integrações em produção. Fornecem notificações em tempo real sem a sobrecarga de chamadas repetidas à API.

Estados da Encomenda

Uma encomenda progride através dos seguintes estados:

EstadoFinalDescrição
newNãoA encomenda acabou de ser criada. Nenhuma tentativa de pagamento foi feita.
processingNãoUma tentativa de pagamento está em curso. O cliente pode estar a completar o 3D Secure ou outro passo de verificação.
errorNãoA tentativa de pagamento falhou. O cliente pode tentar novamente com o mesmo ou outro método de pagamento.
completedSimO pagamento foi bem-sucedido. Pode processar a encomenda.
cancelledSimA encomenda foi cancelada, pelo cliente ou através da API.
expiredSimA encomenda expirou antes de um pagamento bem-sucedido. O período de expiração predefinido é de 30 minutos.

Apenas os estados marcados como Final = Sim são terminais. Encomendas nos estados new, processing ou error podem ainda transitar para completed.

Exemplo: Encomenda em Processamento

Quando um cliente iniciou o pagamento mas este ainda não está concluído:

{
  "id": "b9ae6...",
  "project_id": "proj_abc123",
  "merchant_order_id": "my-order-id-1",
  "created": "2024-01-01T12:00:00.000000+00:00",
  "modified": "2024-01-01T12:01:30.000000+00:00",
  "completed": null,
  "expiration_period": "PT30M",
  "status": "processing",
  "currency": "EUR",
  "amount": 1295,
  "description": "My amazing order",
  "return_url": "https://www.example.com",
  "payment_url": "https://pay.costplus.com/...",
  "webhook_url": "https://www.example.com/webhook",
  "transactions": [
    {
      "id": "txn_001...",
      "payment_method": "credit-card",
      "payment_method_brand": "visa",
      "status": "processing",
      "amount": 1295,
      "currency": "EUR"
    }
  ],
  "flags": ["is-test"]
}

Exemplo: Encomenda Concluída

Quando o pagamento é bem-sucedido, a encomenda atinge o estado completed:

{
  "id": "b9ae6...",
  "project_id": "proj_abc123",
  "merchant_order_id": "my-order-id-1",
  "created": "2024-01-01T12:00:00.000000+00:00",
  "modified": "2024-01-01T12:02:15.000000+00:00",
  "completed": "2024-01-01T12:02:15.000000+00:00",
  "expiration_period": "PT30M",
  "status": "completed",
  "currency": "EUR",
  "amount": 1295,
  "description": "My amazing order",
  "return_url": "https://www.example.com",
  "payment_url": "https://pay.costplus.com/...",
  "webhook_url": "https://www.example.com/webhook",
  "transactions": [
    {
      "id": "txn_001...",
      "payment_method": "credit-card",
      "payment_method_brand": "visa",
      "payment_method_details": {
        "card_last_four": "4242",
        "card_expiry_month": 12,
        "card_expiry_year": 2026,
        "card_holder_name": "J. Smith"
      },
      "status": "completed",
      "amount": 1295,
      "currency": "EUR"
    }
  ],
  "flags": ["is-test"]
}

Detalhes da Transação

Cada transação dentro de uma encomenda contém os seguintes campos principais:

CampoDescrição
payment_methodO método de pagamento utilizado (ex.: credit-card, ideal, apple-pay)
payment_method_brandA marca ou emissor (ex.: visa, mastercard, amex)
payment_method_detailsUm objeto com detalhes específicos do método, como os últimos quatro dígitos do cartão, validade e nome do titular
statusO estado desta transação específica
amountO montante da transação em cêntimos
currencyA moeda da transação

Não confie apenas no redirecionamento do cliente para o seu return_url como confirmação de pagamento. Verifique sempre o estado da encomenda através da API ou de um webhook antes de processar uma encomenda.

Endpoints Relacionados

On this page