gov-pay
Үндсэн ойлголтууд

Төлбөр

Нэхэмжлэл төлөх болон төлбөрийн статус шалгах

Төлбөр хийх

POST /api/v1/payments

Эхлээд GET /invoices/...-аар нэхэмжлэлийг авч id (UUID)-г нь олж байж төлнө.

Төлбөрийн бие нь нэг нэхэмжлэлinvoiceId (заавал) ба amount (сонголттой). amount өгөхгүй бол нэхэмжлэлийн бүтэн дүнгээр, өгвөл тэр дүнгээр (custom/хэсэгчилсэн) төлнө. source болон төлөгчийн мэдээлэл бүгд хадгалсан нэхэмжлэлээс автоматаар авагдана.

{ "invoiceId": "5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b" }

Custom (хэсэгчилсэн) дүнгээр:

{ "invoiceId": "5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b", "amount": 10000 }

Нэг хүсэлтэд нэг нэхэмжлэл төлнө. Хариунд буцах invoiceIds[] нь дотоод боловсруулалтын төлөө массив хэлбэртэй ч public API одоогоор нэг нэхэмжлэл авна.

Хариу (амжилттай): 201 Created

qpay дотор төлбөр төлөх QR (qrText, base64 qrImage), нэг товчийн deeplink (shortUrl), мөн банк/wallet апп тус бүрийн deeplink (urls[]) ирнэ — эдгээрийг хэрэглэгчдээ харуулна.

{
  "success": true,
  "id": "9c0e7b21-3f4a-4d5e-8b6c-1a2d3e4f5a6b",
  "status": "submitted",
  "amount": 150000,
  "invoiceId": "5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b",
  "invoiceIds": ["5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b"],
  "qpay": {
    "qrText": "0002010102121531...F2",
    "qrImage": "iVBORw0KGgoAAAANSUhEUg...",
    "shortUrl": "https://s.qpay.mn/ZUj7oWhecy",
    "urls": [
      {
        "name": "qPay wallet",
        "description": "qPay хэтэвч",
        "logo": "https://s3.qpay.mn/.../launcher-icon-ios.jpg",
        "link": "qpaywallet://q?qPay_QRcode=0002010102121531...F2"
      }
    ]
  }
}

id нь төлбөрийн дотоод UUID — статус шалгах болон цуцлахад үүнийг ашиглана. Амжилтгүй бол 422 + { "success": false, "refNum", "message" }.

qpay нь GovPay системээс үргэлж үүсгэгддэг. Аль стандартаар үүсгэхийг партнерийн qrStandard тохиргоо тодорхойлно:

  • qrStandard=qpay — QPay стандарт (EMVCo tag 27, AID + QPP_QR).
  • qrStandard=govstd — Төрийн стандарт (EMVCo tag 26, MN scheme).

qrImage base64 PNG (data:image/png;base64,<qrImage> болгож харуулна). qrStandard-ийг солихыг хүсвэл GovPay-тэй холбогдоно уу.

Идемпотент хүсэлт

Давхар төлбөрөөс сэргийлэхийн тулд X-Idempotency-Key header ашиглана. Ижил key-тэй давтан хүсэлт өмнөх үр дүнг ("message": "idempotent"-тэйгээр) буцаана:

curl -X POST \
  -H "X-API-Key: YOUR_KEY" \
  -H "X-Idempotency-Key: unique-request-id-123" \
  -H "Content-Type: application/json" \
  -d '{"invoiceId":"5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b"}' \
  "https://sandbox-tts.qpay.mn/api/v1/payments"

Статус шалгах

Төлбөрийн id (UUID)-аар шалгана — refNum биш:

GET /api/v1/payments/{id}

Хариу:

{
  "id": "9c0e7b21-3f4a-4d5e-8b6c-1a2d3e4f5a6b",
  "status": "confirmed",
  "amount": 150000,
  "invoiceId": "5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b",
  "invoiceIds": ["5f8d0a3e-1b2c-4d6e-8a9f-0c1d2e3f4a5b"],
  "paidAt": "2026-05-27T10:30:00.000Z"
}

Төлбөр цуцлах

DELETE /api/v1/payments/{id}
{ "id": "9c0e7b21-...", "canceled": true }

Төлбөрийн статус

СтатусУтга
pendingБоловсруулж байна
submittedЗасгийн газарт илгээгдсэн
confirmedБаталгаажсан
failedАмжилтгүй
canceledЦуцлагдсан