wire docs

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).
401API key байхгүй эсвэл хүчингүй.
403dan_verification_required — акаунтын эзэн API ашиглахаас өмнө иргэний баталгаажуулалт (ДАН) хийх шаардлагатай.
403connector_required — төлбөр үүсгэхийн өмнө дор хаяж нэг төлбөрийн оператортой холбогдоно. Dashboard → Суваг.
403settlement_account_required — орлого хүлээн авах дансаа сонгоогүй байна. Dashboard → Данс.
404Object олдсонгүй.
409Idempotency зөрчил.
429Rate limit — түр хүлээгээд дахин оролд.
5xxСерверийн алдаа — idempotent хүсэлтийг дахин оролдоход аюулгүй.

Түгээмэл гацдаг 400/409 кодууд

КодШалтгаан ба шийдэл
payment_intent_unexpected_stateCheckout session нь зөвхөн requires_payment_method статустай intent дээр үүснэ. Intent аль хэдийн confirm хийгдсэн, цуцлагдсан эсвэл TTL (default 10 минут) дуусаж авто-цуцлагдсан байна. Hosted checkout ашиглаж байгаа бол /confirm-ыг бүү дууд — шинэ intent үүсгээд шууд session үүсгэ.
checkout_url_invalidsuccess_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);
}

Энэ хуудсанд