Errors
API алдааг хэрхэн дохиолдог, SDK-ууд хэрхэн илэрхийлдэг вэ.
Wire нь ердийн HTTP статус код ашигладаг: амжилтад 2xx, client-ийн алдаанд
(буруу оролт, auth, idempotency зөрчил) 4xx, серверийн алдаанд 5xx.
Алдааны хариу нь машинд уншигдах code, хүнд уншигдах message, болон support
хүсэлтэд иш татаж болох request_id агуулна.
Алдааны дугтуй
Алдаа бүр ижил бүтэцтэй — статус кодоос үл хамааран нэг л error объект:
{
"error": {
"type": "invalid_request_error",
"code": "amount_invalid",
"message": "...",
"param": "amount",
"request_id": "req_..."
}
}| Талбар | Утга |
|---|---|
type | Алдааны ангилал (жишээ нь invalid_request_error, api_error). |
code | Тогтвортой, машинд уншигдах код — таны branch логик үүн дээр тулгуурлана. |
message | Хүнд зориулсан тайлбар. Текст нь өөрчлөгдөж болох тул үүн дээр бүү branch хий. |
param | Аль оролт буруу байсныг заана (байвал). |
request_id | Тухайн хүсэлтийн танигч. Логдоо хадгалж, дэмжлэг хүсэхдээ иш тат. |
Түгээмэл код
| Статус | Утга |
|---|---|
400 | Буруу хүсэлт (жишээ нь amount_too_small). |
401 | API key байхгүй эсвэл хүчингүй. |
403 | dan_verification_required — акаунтын эзэн API ашиглахаас өмнө иргэний баталгаажуулалт (ДАН) хийх шаардлагатай. |
403 | connector_required — төлбөр үүсгэхийн өмнө дор хаяж нэг төлбөрийн оператортой холбогдоно. Dashboard → Суваг. |
403 | settlement_account_required — орлого хүлээн авах дансаа сонгоогүй байна. Dashboard → Данс. |
404 | Object олдсонгүй. |
409 | Idempotency зөрчил. |
429 | Rate limit — түр хүлээгээд дахин оролд. |
5xx | Серверийн алдаа — idempotent хүсэлтийг дахин оролдоход аюулгүй. |
Түгээмэл гацдаг 400/409 кодууд
| Код | Шалтгаан ба шийдэл |
|---|---|
payment_intent_unexpected_state | Checkout session нь зөвхөн requires_payment_method статустай intent дээр үүснэ. Intent аль хэдийн confirm хийгдсэн, цуцлагдсан эсвэл TTL (default 10 минут) дуусаж авто-цуцлагдсан байна. Hosted checkout ашиглаж байгаа бол /confirm-ыг бүү дууд — шинэ intent үүсгээд шууд session үүсгэ. |
checkout_url_invalid | success_url / cancel_url нь бүтэн (absolute) http(s) хаяг байх ёстой. Хоёулаа заавал биш — орхивол hosted хуудас өөрийн «амжилттай» дэлгэцээ харуулна. |
idempotency_in_flight (409) | Ижил Idempotency-Key-тэй эхний хүсэлт боловсруулагдаж дуусаагүй байхад давхар хүсэлт ирсэн. Эхний хариугаа хүлээгээд (эсвэл 1–2 секунд байгаад) дахин илгээ — бэлэн болсон хариу replay болно. |
SDK дэх алдаа боловсруулалт
SDK бүр code, request_id, status_code-г илрүүлдэг typed алдаа гаргана.
var werr *wire.Error
if errors.As(err, &werr) {
fmt.Println(werr.Code, werr.RequestID, werr.StatusCode)
}try:
client.payment_intents.create(amount=-1)
except wire.WireError as e:
print(e.code, e.request_id, e.status_code)import { WireError } from "@buildry-wire/wire";
try {
await wire.paymentIntents.create({ amount: -1 });
} catch (e) {
if (e instanceof WireError) console.log(e.code, e.requestId, e.statusCode);
}