> For the complete documentation index, see [llms.txt](https://docs.ecommerce.seb.ee/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ecommerce.seb.ee/seb-docs-draft/seb-docs-public-lv/integracija/api-klienta-sdk/celvezi/kludu-apstrade.md).

# Kļūdu apstrāde

Apstrādājiet SDK izņēmumus, diagnosticējiet API kļūdas un piemērojiet drošas atkārtošanas un noildzes politikas.

## Izņēmumu hierarhija

Visas SDK kļūdas ir atvasinātas no viena kopīga pamata, **`ECommException`** (Java bez pārbaudes, `\RuntimeException` PHP valodā, `Exception` C# valodā, `Error` TypeScript):

| Exception                 | Tiek izsviests, ja                                                                                                                      |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `AuthenticationException` | OAuth žetona iegūšana neizdodas (nepareizi akreditācijas dati, žetona galapunkts nav sasniedzams vai atgriež kļūdas/kropļotas atbildes) |
| `ConnectionException`     | Tīkla/transporta kļūme: DNS, savienojums atteikts, noildze                                                                              |
| `SerializationException`  | Atbildes pamattekstu nevar parsēt kā gaidīto JSON                                                                                       |
| `EncryptionException`     | JWE šifrēšana vai atslēgas iegūšana neizdodas                                                                                           |
| `InvalidRequestException` | (pašlaik tikai Java) pieprasījuma izveides laikā trūkst obligāta lauka                                                                  |
| `ApiServerException`      | Webhook uztvērējs neizdodas palaist vai darboties                                                                                       |
| `EgwBootstrapException`   | Klienta izveide neizdodas (trūkst konfigurācijas, nav atrasts adapteris)                                                                |
| `ECommException` (pamata) | **API HTTP kļūdu atbildes (4xx/5xx)** — skatiet tālāk                                                                                   |

## API kļūdu lasīšana

Kad API noraida izsaukumu (4xx) vai neizdodas (5xx), pašreizējā versija izmet pamata **`ECommException`** kura ziņojumā ir operācijas nosaukums un HTTP statuss, piem. `Klienta kļūda operācijā initiateCitPayment: 400`.

Lai alfa versijā diagnosticētu API kļūdu, ieslēdziet SDK žurnālu un korelējiet pēc `X-Request-ID` galvenes — izlasiet reģistrēšanas norādījumus sadaļā [Drošības mehānika](/seb-docs-draft/seb-docs-public-lv/integracija/api-klienta-sdk/celvezi/drosibas-mehanismi.md#logging) pirmkārt, jo kļūdu pamatteksti tiek reģistrēti bez maskēšanas. Žurnāls ir nepieciešams, jo strukturētais kļūdas pamatteksts (`ErrorResponse` ar `apiClientMessages[].code/text/category`tiek reģistrēts caur SDK žurnālu, bet netiek pievienots izņēmumam: jūs nevarat veidot atzarojumu pēc API kļūdas koda, parādīt API ziņojumu operatoram vai kodā atšķirt "nepareiza summa" no "veikala līgums nav zināms". Neparsējiet izņēmuma ziņojumu; tā formāts nav līgums.

Šī ir kļūda, kuru paredzēts labot, nevis paredzētais kļūdu līgums. Izņēmumu saskarne vēlākā laidienā saņems piekļuves metodes, un `ECommException` tiks saglabāta kā pamata klase, lai esošie `catch` bloki turpinātu darboties.

Praktisks piemērs (parādīts Java; katrā valodā līdzvērtīgi):

```java
try {
    var response = client.payments().initiateCitPayment(b -> ...);
} catch (AuthenticationException e) {
    // akreditācijas datu/konfigurācijas problēma — nemēģiniet akli atkārtot; informējiet operāciju komandu
} catch (ConnectionException e) {
    // transporta problēma — skatiet tālāk sniegtos atkārtošanas norādījumus
} catch (ECommException e) {
    // API noraidīja vai neizdevās izsaukums; ziņojumā ir HTTP statuss
}
```

Klienta puses validācija atšķiras atkarībā no valodas: Java izmet `InvalidRequestException` būvēšanas laikā par trūkstošiem obligātajiem laukiem; PHP, C# un Node.js pašlaik neveic klienta puses validāciju — tā pati kļūda parādās kā `ECommException` servera puses 400.

## Atkārtojumi, idempotence, noildzes

SDK nekad neko neatkārto. Katru operāciju izpilda tieši vienu reizi; pašreizējā laidienā nav iebūvētas aizkaves un nav idempotences atslēgas mehānisma. Tam ir viena būtiska sekas:

> ⚠️ **Nenosūtiet akli atkārtoti stāvokli mainošus izsaukumus pēc `ConnectionException` vai noildzes.** Maksājuma iniciēšana, ieturēšana, atmaksa vai atcelšana var būt sasniegusi serveri, pat ja jūs nekad neredzējāt atbildi. Atgūstieties, vispirms vaicājot stāvokli — `getPaymentInformation(paymentId)` (vai atmaksas/žetona ekvivalenta) — un sūtiet atkārtoti tikai tad, ja ir skaidri redzams, ka operācija nav stājusies spēkā. Droši atkārtot var tikai lasīšanas režīma izsaukumus (`getPaymentInformation`, `getShopDetails`, `getToken`, `getBankAccounts`).

Katram pieprasījumam ir ģenerēta **`X-Request-ID`** galvene (UUID). Vai šis ID tiek atspoguļots API kļūdu atbildēs un ir izmantojams korelācijai ar atbalstu: **\[Jāprecizē — apstiprinājums]**

Noildzes politika ir **10 s savienojumam / 30 s lasīšanai, visās valodās** — noklusējums, ko piemēro SDK.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.ecommerce.seb.ee/seb-docs-draft/seb-docs-public-lv/integracija/api-klienta-sdk/celvezi/kludu-apstrade.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
