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.
errorDaO defecțiune tehnică a pus capăt comenzii. Creați o nouă comandă dacă clientul ar trebui să încerce din nou.
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 plata să fie efectuată cu succes. Perioada de expirare implicită 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://api.costplus.online/pay/...",
  "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://api.costplus.online/pay/...",
  "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
amountValoarea tranzacției în unitatea minoră ISO 4217 a monedei
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