Cost+Docs

Autorizace, zachycení a zrušení

Správa toků autorizace, zachycení a zrušení plateb

Některé platební metody podporují dvoukrokový tok: nejprve autorizace (rezervace prostředků), poté zachycení (stržení prostředků) nebo zrušení (uvolnění rezervace).

Režimy zachycení

Nastavte capture_mode na objednávce pro kontrolu, kdy jsou prostředky zachyceny:

RežimChování
manualProstředky zachytíte explicitně, když jste připraveni (např. po odeslání). Pokud nezachytíte před vypršením objednávky, autorizace je ztracena a nelze ji zachytit.
delayedProstředky jsou automaticky zachyceny v okamžiku vypršení expiration_period.
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"
    }
  ]
}

S režimem manual zachycení musíte zachytit prostředky před vypršením doby platnosti objednávky. Po vypršení je autorizace uvolněna a prostředky nelze zachytit. Nastavte vhodný expiration_period pro váš proces plnění.

Můžete nastavit capture_mode na úrovni objednávky bez uvedení transactions. Hostovaná platební stránka pak zobrazí pouze platební metody, které podporují zvolený režim zachycení.

Kontrola zachytitelných částek

Před zachycením můžete zkontrolovat, kolik je k dispozici pro zachycení, dotazem na amount_details:

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

Odpověď obsahuje objekt amount_details:

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

Řádky objednávky

Při použití zachycení a zrušení podle řádku objednávky používejte tyto typy:

TypPopis
physicalFyzický produkt
discountSleva
shipping_feeNáklady na dopravu
sales_taxDPH
digitalDigitální produkt
gift_cardDárková karta
store_creditKredit obchodu
surchargePříplatek

Zachycení plateb

Zachycení podle řádku objednávky

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
  }
}

Zachycení podle částky

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

Zrušení plateb

Zrušení uvolní autorizované prostředky zpět zákazníkovi.

Zrušení podle řádku objednávky

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
  }
}

Zrušení podle částky

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

Parametry dotazu

Přidejte parametry dotazu pro zahrnutí dalších detailů v odpovědi:

ParametrPopis
?fields[]=order_line_detailsZahrnout rozpis řádků objednávky
?fields[]=amount_detailsZahrnout rozpis částek

Optimistické zamykání

Endpointy pro zachycení a zrušení podporují optimistické zamykání na základě ETag prostřednictvím hlavičky if-match. To zabraňuje race conditions, když se více systémů pokouší zachytit stejnou transakci.

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}'

Pokud ETag neodpovídá (objednávka byla od vašeho posledního načtení změněna), obdržíte odpověď 412 Precondition Failed.

Cost+ podporuje jedno zachycení na autorizaci a zrušení lze zpracovat pouze před jakýmkoli zachycením. Plánujte svou strategii zachycení odpovídajícím způsobem.

Související endpointy

On this page