Okrajové případy a zpracování chyb
Před nasazením do produkce je třeba zvážit řadu scénářů pro úplnou integraci. Část z nich leží ve vašem kódu, který Twisto explicitně nekontroluje — očekává se jejich dokončení před žádostí o přístup do produkce.
Něco nefunguje? Pište na merchant-tech@twisto.cz s technickými dotazy.
Okrajové případy
Důkladně testujte integraci včetně scénářů:
- Neúplná data
- Neplatná data
- Duplicitní data (např. opakujte stejný požadavek a sledujte chování)
Timeouty a opakované transakce
Někdy kvůli síti nepřijde odpověď. V takovém případě Twisto očekává opakování transakce, dokud nepřijde platná odpověď nebo nevyprší timeout.
Netransakční volání API
Některá volání lze znovu poslat bez označení opakování. Endpoint /checkouts lze například opakovaně volat se stejnými referencemi a payloadem bez problému — každý požadavek je nový a nezávislý na prvním neúspěšném volání.
Transakční volání API
U jiných volání musí být opakování identifikováno, aby nedošlo k dvojímu zaúčtování a chybám duplicity reference objednávky.
U transakčních volání na /charges nebo /refunds musí opakování použít stejnou hlavičku Idempotency-key jako původní požadavek.
| METHOD | TYPE |
|---|---|
| POST /checkouts | Non-transactional |
| POST /checkouts/{id}/cancel | Transactional |
| POST /charges | Transactional |
| POST /refunds | Transactional |
Doporučené časování opakování:
| ATTEMPT NUMBER | DELAY BEFORE ATTEMPT (SECONDS) | TIMEOUT PERIOD (SECONDS) | TOTAL TIME ELAPSED (SECONDS) |
|---|---|---|---|
| 1 | N/A | 20 | 20 |
| 2 | 10 | 10 | 40 |
| 3 | 5 | 5 | 50 |
| 4 | 5 | 5 | 60 |
Kontrola logování
Doporučujeme logovat všechna důležitá data u vás. Vlastní logy budou neocenitelné, pokud server nemůže kontaktovat Twisto nebo je problém s API klíči — v obou případech nemůžeme váš požadavek zalogovat.
Pravidelně logy kontrolujte, ukládají potřebné informace a neukládají citlivé údaje. Hledejte opakující se chyby vyžadující úpravu integrace.
Změna a zabezpečení API klíčů
Držte přihlašovací údaje k API v tajnosti.
Chybové kódy
API používá konzistentní chybové odpovědi a REST stavové kódy.
Pro více informací nebo podkategorii kódů se u stavů mimo 2xx vrací objekt Error s konkrétním kódem a zprávou.
Možné stavové kódy:
| STATUS CODE | DESCRIPTION |
|---|---|
| 2xx | OK Everything worked correctly. |
| 400 | Bad Request There is an error in the request object. |
| 401 | Unauthorized No valid API key provided. |
| 402 | Request Failed Request could not be processed, see error code for more information. |
| 403 | Forbidden Operation is not allowed (customer did not authorise action). |
| 404 | Not Found The resource does not exist. |
| 409 | Conflict The request is a duplicate of a previous request |
| 429 | Too Many Requests Requests are rate limited - you are making too many requests. |
| 5xx | Server Error An error has occurred on Twisto's end. |
Specifické chybové kódy pro jednotlivé endpointy jsou na stránkách endpointů.
U odpovědí BadRequest najdete detail v poli details objektu Error.
"error": {
"code": "string",
"message": "string",
"details": [
{
"name": "string",
"message": "string"
}
]
}