Cost+Docs

Cereri de status

Verificați statusul comenzilor și tranzacțiilor

Fiecare plată în Cost+ este reprezentată de o comandă care conține una sau mai multe tranzacții. Puteți verifica statusul curent al oricărei comenzi interogând API-ul, fie prin polling, fie bazându-vă pe webhook-uri.

Preluarea statusului comenzii

Trimiteți o cerere GET la /v1/orders/\{id\}/ pentru a prelua obiectul complet al comenzii, inclusiv statusul curent și toate tranzacțiile asociate.

GET /v1/orders/b9ae6.../

Deși polling-ul funcționează pentru verificarea statusului comenzii, webhook-urile sunt abordarea recomandată pentru integrări de producție. Acestea oferă notificări în timp real fără costul suplimentar al apelurilor API repetate.

Statusurile comenzii

O comandă progresează prin următoarele statusuri:

StatusFinalDescriere
newNuComanda tocmai a fost creată. Nu s-a efectuat nicio tentativă de plată.
processingNuO tentativă de plată este în curs. Clientul poate finaliza 3D Secure sau un alt pas de verificare.
errorNuTentativa de plată a eșuat. Clientul poate reîncerca cu aceeași metodă de plată sau cu alta.
completedDaPlata a fost efectuată cu succes. Puteți onora comanda.
cancelledDaComanda a fost anulată, fie de client, fie prin API.
expiredDaComanda a expirat înainte ca o plată să fie efectuată cu succes. Perioada implicită de expirare este de 30 de minute.

Doar statusurile marcate ca Final = Da sunt terminale. Comenzile cu statusul new, processing sau error pot trece încă la completed.

Exemplu: Comandă în procesare

Când un client a inițiat plata, dar aceasta nu este încă finalizată:

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

Exemplu: Comandă finalizată

Odată ce plata este efectuată cu succes, comanda ajunge la statusul 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"]
}

Detalii tranzacție

Fiecare tranzacție dintr-o comandă conține următoarele câmpuri cheie:

CâmpDescriere
payment_methodMetoda de plată utilizată (de ex., credit-card, ideal, apple-pay)
payment_method_brandBrandul sau emitentul (de ex., visa, mastercard, amex)
payment_method_detailsUn obiect cu detalii specifice metodei, cum ar fi ultimele patru cifre ale cardului, data expirării și numele titularului
statusStatusul acestei tranzacții specifice
amountSuma tranzacției în cenți
currencyMoneda tranzacției

Nu vă bazați doar pe redirecționarea clientului la return_url ca confirmare a plății. Verificați întotdeauna statusul comenzii prin API sau printr-un webhook înainte de a onora o comandă.

Endpoint-uri asociate

On this page