Cost+Docs

Autorizări, Capturi și Anulări

Gestionați fluxurile de autorizare, captură și anulare a plăților

Unele metode de plată suportă un flux în doi pași: mai întâi autorizați (rezervați fonduri), apoi capturați (colectați fondurile) sau anulați (eliberați rezervarea).

Moduri de captură

Setați capture_mode pe comandă pentru a controla când sunt capturate fondurile:

ModComportament
manualCapturați explicit când sunteți pregătit (de ex., după expediere). Dacă nu capturați înainte ca comanda să expire, autorizarea este pierdută și nu poate fi capturată.
delayedFondurile sunt capturate automat în momentul în care expiration_period se scurge.
POST /v1/orders/ (manual capture)
{
  "currency": "EUR",
  "amount": 5000,
  "capture_mode": "manual",
  "return_url": "https://www.example.com",
  "webhook_url": "https://www.example.com/webhook",
  "transactions": [
    {
      "payment_method": "credit-card"
    }
  ]
}

Cu captura manual, trebuie să capturați înainte ca perioada de expirare a comenzii să se încheie. Odată expirată, autorizarea este eliberată și fondurile nu pot fi capturate. Setați o expiration_period adecvată pentru termenul dvs. de onorare.

Puteți seta capture_mode la nivel de comandă fără a specifica transactions. Pagina de plată găzduită va afișa atunci doar metodele de plată care suportă modul de captură specificat.

Verificarea sumelor disponibile pentru captură

Înainte de a captura, puteți verifica cât este disponibil pentru captură solicitând amount_details:

curl -u YOUR_API_KEY: \
  "https://api.costplus.online/v1/orders/{order_id}/?fields[]=amount_details"

Răspunsul include un obiect amount_details:

{
  "amount": 5000,
  "amount_details": {
    "capturable": 5000,
    "captured": 0,
    "refundable": 0,
    "refunded": 0,
    "voidable": 5000,
    "voided": 0
  }
}

Linii de comandă

Când folosiți capturi și anulări pe linie de comandă, utilizați aceste tipuri:

TipDescriere
physicalProdus fizic
discountSumă de reducere
shipping_feeCost de expediere
sales_taxTaxă de vânzare
digitalProdus digital
gift_cardCard cadou
store_creditCredit de magazin
surchargeSuprataxă

Capturarea plăților

Captură pe linie de comandă

POST /v1/orders/{id}/transactions/{transaction_id}/captures/orderlines
Request body
{
  "description": "Shipping item #1",
  "order_line": {
    "merchant_order_line_id": "item-001",
    "quantity": 1
  }
}

Captură pe sumă

POST /v1/orders/{id}/transactions/{transaction_id}/captures/amount
Request body
{
  "description": "Partial capture",
  "amount": 2500
}

Anularea plăților

Anularea eliberează fondurile autorizate înapoi către client.

Anulare pe linie de comandă

POST /v1/orders/{id}/transactions/{transaction_id}/voids/orderlines
Request body
{
  "description": "Voiding item #2",
  "order_line": {
    "merchant_order_line_id": "item-002",
    "quantity": 1
  }
}

Anulare pe sumă

POST /v1/orders/{id}/transactions/{transaction_id}/voids/amount
Request body
{
  "description": "Partial void",
  "amount": 1500
}

Parametri de interogare

Adăugați parametri de interogare pentru a include detalii suplimentare în răspuns:

ParametruDescriere
?fields[]=order_line_detailsInclude detalii pe linie de comandă
?fields[]=amount_detailsInclude detalii despre sumă

Blocare optimistă

Endpoint-urile de captură și anulare suportă blocare optimistă bazată pe ETag prin headerul if-match. Aceasta previne condițiile de cursă când mai multe sisteme încearcă să captureze aceeași tranzacție.

Capture with optimistic locking
curl -X POST https://api.costplus.online/v1/orders/{id}/transactions/{tid}/captures/amount \
  -u {api_key}: \
  -H "Content-Type: application/json" \
  -H "if-match: \"etag-value\"" \
  -d '{"description": "Capture", "amount": 2500}'

Dacă ETag-ul nu corespunde (comanda a fost modificată de la ultima dvs. preluare), veți primi un răspuns 412 Precondition Failed.

Cost+ suportă o singură captură per autorizare, iar anulările pot fi procesate doar înainte de orice captură. Planificați strategia de captură în consecință.

Endpoint-uri asociate

On this page