Cost+Docs

Consultas de estado

Consulta el estado de pedidos y transacciones

Cada pago en Cost+ esta representado por un pedido que contiene una o mas transacciones. Puedes consultar el estado actual de cualquier pedido mediante la API, ya sea por polling o mediante webhooks.

Consultar el estado del pedido

Envia una solicitud GET a /v1/orders/\{id\}/ para obtener el objeto completo del pedido, incluyendo su estado actual y todas las transacciones asociadas.

GET /v1/orders/b9ae6.../

Aunque el polling funciona para consultar el estado del pedido, los webhooks son el enfoque recomendado para integraciones en produccion. Proporcionan notificaciones en tiempo real sin la sobrecarga de llamadas repetidas a la API.

Estados del pedido

Un pedido progresa a traves de los siguientes estados:

EstadoFinalDescripcion
newNoEl pedido acaba de crearse. No se ha realizado ningun intento de pago.
processingNoUn intento de pago esta en curso. El cliente puede estar completando 3D Secure u otro paso de verificacion.
errorNoEl intento de pago fallo. El cliente puede reintentar con el mismo u otro metodo de pago.
completedSiEl pago fue exitoso. Puedes procesar el pedido.
cancelledSiEl pedido fue cancelado, ya sea por el cliente o a traves de la API.
expiredSiEl pedido expiro antes de que se realizara un pago exitoso. El periodo de expiracion predeterminado es de 30 minutos.

Solo los estados marcados como Final = Si son terminales. Los pedidos en estado new, processing o error aun pueden transicionar a completed.

Ejemplo: Pedido en procesamiento

Cuando un cliente ha iniciado el pago pero aun no se ha completado:

{
  "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"]
}

Ejemplo: Pedido completado

Una vez que el pago es exitoso, el pedido alcanza el 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"]
}

Detalles de la transaccion

Cada transaccion dentro de un pedido contiene los siguientes campos clave:

CampoDescripcion
payment_methodEl metodo de pago utilizado (ej., credit-card, ideal, apple-pay)
payment_method_brandLa marca o emisor (ej., visa, mastercard, amex)
payment_method_detailsUn objeto con detalles especificos del metodo, como los ultimos cuatro digitos de la tarjeta, caducidad y nombre del titular
statusEl estado de esta transaccion especifica
amountEl importe de la transaccion en centimos
currencyLa moneda de la transaccion

No confies unicamente en que el cliente sea redirigido a tu return_url como confirmacion de pago. Verifica siempre el estado del pedido a traves de la API o mediante un webhook antes de procesar un pedido.

Endpoints relacionados

  • Obtener pedido — obtener el objeto completo del pedido y su estado actual
  • Listar pedidos — listar pedidos con filtro por rango de fechas

On this page