Агуулгыг алгасах

Өөрчлөлтийн түүх

«Mini апп-ууд» (mn.gerege.miniapp) модулийн хувилбар бүр, шинээс нь. API-ийн хувилбар нь модулийнхтай ижил (sdk/openapi/gerege.v1.yaml-ийн info.version). ⚠ — хуучин интеграцийг өөрчлөх шаардлагатай өөрчлөлт.

1.15.1 — 2026-11-02

Засвар. Байгууллагын админд хамаатай мэдэгдэл и-мэйлээр ч ирнэ, хүний төлбөрийн мэдэгдэл зөвхөн хонх ба push-ээр; консолын хаяг /apps/miniapp.

Цөм 1.83.1-ээс мэдэгдэл анхдагчаар зөвхөн хонхоор (nexus.Notification.SendEmail). И-мэйлээр ч явна: miniapp.kyb.* (операторын шийдвэр, дарааллын мэдээ), miniapp.agreement.signed, miniapp.key.live_created|live_rolled|live_revoked|expiring, miniapp.webhook.failing|disabled, miniapp.payout.self_set, miniapp.payout_link.requested — ховор, хийх ажил, админ утсандаа апп суулгаагүй байж болно. И-мэйлгүй: miniapp.payment.captured|refunded — худалдан авалт бүрт гардаг, push төлсөн утсанд хүрсэн, хуулга нь хэтэвчинд. Шийдвэр notify.go-ийн mailed хүснэгтэд, тест нь шинэ төрөл бүрийг тэнд байлгана. Цэс ба мэдэгдлийн холбоос /apps/miniapp/… (цөм 1.81.0 /module/…-ийг /apps/… болгосон), хэтэвч рүү /account/wallet (цөм 1.80.0).

1.15.0 — 2026-11-02

Шинэ боломж. Байгууллагын админ апп-ын payout-ыг өөрийн Gerege Wallet данс руу өөрөө тохируулна; хяналтад илгээхэд идэвхтэй live webhook endpoint; launch-ийн мөр 400 хоног хадгалагдана.

PUT /api/v1/miniapp/dev/apps/{id}/payout {account_id}: байгууллагын админ, дахин нэвтрэлттэй, sandbox биш — данс идэвхтэй MNT, эзэмшигч нь org:<энэ байгууллага> байвал; өөр данс 422 account_not_owned (оператортой холбогдоно), ашиглах боломжгүй 422 account_unavailable. Audit payout_account_set, операторын админуудад miniapp.payout.self_set. Өмнөх төлбөр ба буцаалт хуучин данстаа; операторын PUT /review/apps/{id}/payout хэвээр. Хяналтад илгээх ба батлахад webhook_url биш, live орчны идэвхтэй endpoint (№1 эсвэл API-аар нэмсэн) шаардана — disabled/auto_disabled тооцогдохгүй, кодын хэлбэр (not_ready, webhook_url) хэвээр. miniapp_launches 400 хоногоос хуучныг цагийн purge job апп бүрээр, 5000-аар устгана (шинжилгээний 366 хоног бүтэн). Төлбөрийн hold KYC хязгаарт захирагдана (bank 1.5.0) — хэтэрвэл 403 limit_exceeded, intent failed.

1.14.0 — 2026-10-29

Шинэ боломж. Бизнесийн профайл (KYB): байгууллага маягтаа бөглөж, холбоо барих хаягаа кодоор баталгаажуулж, баримтаа хавсаргаад илгээнэ; оператор баталж tier, хязгаарыг тогтооно. Серверийн тооцоолдог go-live checklist.

Хуулийн нэр ба регистр нь байгууллагыг eID-ийн төлөөллөөр нээх үед цөмд бүртгэгдсэнээс (tenant_profiles) ирнэ — цөм 1.68.0 ХУР-ыг хассан тул ТТД, хаяг, захирал, эзэмшигчдийг байгууллага бичиж, оператор улсын бүртгэлийн гэрчилгээтэй тулгана. Тусламж/техник/санхүүгийн имэйлийг цөмийн nexus.EmailVerifier (цөм 1.70.0), тусламжийн утсыг SMS кодоор (phone 1.1.0) баталгаажуулна; вэбсайт, лого (512×512 PNG), хуулийн хуудсыг илгээхэд SSRF-хамгаалалттай шалгана. Баримт nexus.Files-д. Бичилт, илгээлт зөвхөн байгууллагын админ (илгээх нь дахин нэвтрэлттэй). Оператор: /review/merchants дараалал, approve (tier new | standard | custom), request-info, reject, restrict/unrestrict, limits — бүгд audit, админуудад мэдэгдэл. GET /dev/account ба /dev/apps/{id}/go-live алхам бүрийг серверээс. MINIAPP_GO_LIVE=on үед апп илгээхэд гэрээ ба илгээсэн профайл, live intent-д гэрээ, батлагдсан хоригдоогүй профайл, tier-ийн хязгаар (нэг төлбөр, Улаанбаатарын өдөр — байгууллагын lock дор) шаардана; анхдагч off — тооцоолж харуулна, хориглохгүй.

1.13.0 — 2026-10-27

Шинэ боломж. Live түлхүүр ба IP хязгаарлалт консолоос дахин нэвтрэлттэй, хувь хүний sandbox байгууллага, live webhook endpoint-ийн эрх, QR-ийн терминал, нэхэмжлэх маягийн 7 хоногийн хугацаа ба төлбөрийн тайлбарын фишинг хамгаалалт.

Live түлхүүр үүсгэх, солих, IP өөрчлөх нь miniapp.keys.live ба сүүлийн 10 минутын нэвтрэлт (цөмийн nexus.FreshSignIn) шаардана; хуучин POST /credentials-ийн live secret ч мөн адил, test secret нь miniapp.develop. IP allowlist нь цөмийн nexus.ClientIP-ээр (итгэмжлэгдсэн proxy-ийн ард) ажиллана. Хяналтад илгээхэд нэртэй live түлхүүр ч тооцогдоно; хүчингүй болсон анхдагч түлхүүр тооцогдохгүй. Хуулийн этгээдгүй хүний sandbox байгууллагад апп урьдчилан суусан ирнэ: test бүхэлдээ ажиллана, live түлхүүр, хяналтад илгээх, гэрээ, payout холболт 409 sandbox_only, апп-ын slug sbx--ээр эхэлнэ (бусад байгууллагад sbx- хориотой). Webhook endpoint-ийн бичилт miniapp.develop, live endpoint-ийн URL, secret, устгалт (мөн №1 ба POST /webhook) miniapp.keys.live + дахин нэвтрэлт; GET /dev/webhook-event-types нь шүүж болох event-уудыг mn/en нэртэй өгнө. Консол: төлбөрийн timeline-д гишүүний нэр (actor_name), байгууллагын бүх терминал, дэд худалдагч (GET /dev/terminals, /dev/sub-merchants). Төлбөр: qr intent терминал нэрлэж болно (kiosk, касс — «нэг нээлттэй сагс» зөвхөн terminal-д), qr/redirect-ийн expires_in 7 хоног хүртэл, тайлбарт вэб/имэйл хаяг, утасны дугаар 400 description_not_allowed, GET /payment-intents/{id} буцаалтуудтайгаа. Засвар: идэвхгүй болгосон дэд худалдагчийн өмнө авсан төлбөрийг capture хийнэ; claim хийгээгүй test intent-ийг консолоос баталгаажуулахад 409 not_claimed (500 биш); консолын test intent capture_within, min_age-ийг хадгална; tester-ийн launch code-ийг зөвхөн test түлхүүр солино; app.status_changed, consent.revoked, settlement.paid шууд эхний оролдлоготой; /events?type=webhook.test → 400 test_event_not_listed; insufficient_scope-д code талбар.

1.12.0 — 2026-10-27

Шинэ боломж. Худалдагчийн гэрээ: оператор хувилбартай текст нийтэлж, байгууллагын төлөөлөгч түүнд байгууллагын нэрийн өмнөөс eID-ээр гарын үсэг зурна.

Гэрээ нь merchant, developer, dpa төрөлтэй, огноо-хувилбартай (2026-11-01), Монгол эх ба англи орчуулгатай; нийтлэгдсэн текст өөрчлөгдөхгүй. «eID-ээр гарын үсэг зурах» нь байгууллагын нэр, регистр, баримтын дугаар, текстийн SHA-256-тай PDF-ийг серверт үүсгэж цөмийн OrganisationSigner-ээр (PAdES-BASELINE-LT, eID onBehalfOf) хүний утас руу илгээнэ — төлөөллийг eID өөрөө шалгана. Гарын үсэгтэй PDF, түүний ба гарын үсэггүй баримтын hash, хувилбар, eID-ийн баталсан байгууллага, гарын үсэг зурагчийн нэр, сертификат, цаг хадгалагдана; хүний регистр ил хадгалагдахгүй. Гарын үсэг эхлүүлэхэд 1.8.0-ийн miniapp.agreements.sign эрх (админд л) хэрэгтэй, fresh sign-in шаардахгүй — PIN2 нь баталгаа. Консол хүсэлтийг poll хийнэ, хаагдсан ч agreement-signatures job дуусгана.

1.11.0 — 2026-10-27

Шинэ боломж. Терминалын хэрэгсэл: олноор бүртгэх (JSON эсвэл CSV), sticker-ийн PDF (QR, код, NFC тэмдэг, тайрах тэмдэг), терминал бүрийн статистик.

POST /terminals/batch (консол ба live түлхүүр; test түлхүүр 403 live_only) нэг хүсэлтээр 500 хүртэл терминал бүртгэнэ: мөр бүрийг бичихээс өмнө шалгаж, нэг буруу мөр бүхэлд нь татгалзана; reference-тэй мөр давтагдахгүй (existing), sub_merchant_code-оор дэд худалдагчаа нэрлэж болно; CSV-ийн толгой мөр label, location, reference, sub_merchant_code. POST/GET /terminals/print-sheet нь сонгосон (эсвэл бүх идэвхтэй) терминалын PDF: A4 дээр 24 шошго, 50 ба 40 мм-ийн ганц шошго (40 мм — NFC sticker), ширээний tent card; шошго бүрт терминалын URL-ийн QR (алдаа засах Q, ≥ 25 мм), «Gerege App-аар төлөх», нэр, байршил, гараар бичих код, NFC тэмдэг, тайрах тэмдэг ба TrimBox; монгол үсгийг Montserrat фонтоор шигтгэнэ. GET /dev/apps/{id}/terminals/{tid}/stats нь өдөр бүрийн intent, claim, төлөв, capture ба буцаалтын дүн, сүүлийн төлбөр, нээлттэй сагс — хүн хэзээ ч биш.

1.10.0 — 2026-10-27

Шинэ боломж. Хөгжүүлэгчийн самбар: байгууллагын бүх төлбөрийн жагсаалт, дэлгэрэнгүй ба цагийн хэлхээ, консолоос capture / цуцлах / буцаах / claim суллах, тайлан (statements), sandbox-ын симуляц, байгууллагын audit. Нууцлалын засвар: апп-ын түүх операторын ажилтан, payout дансны эзэмшигчийн id-г байгууллагад харуулахаа болив.

GET /dev/payments — апп, орчин, төлөв, presentment, терминал, дэд худалдагч, огноо, дүн, хайлтаар (pi_…, reference, user_ref) шүүж cursor-оор, эсвэл format=csv (≤ 100 000 мөр, miniapp.finance). GET /dev/payments/{pi} — буцаалтууд, цагийн хэлхээ (хэн: app, person, job, dashboard:<гишүүн>), webhook-ууд. POST …/capture, …/cancel, …/unclaim, …/refunds (шалтгаан заавал) нь апп-ын backend-ийн яг ижил замаар (ижил guard, ledger key, event), Idempotency-Key заавал, miniapp.payments эрх, audit-д бичигдэнэ; 1 000 000₮ ба түүнээс их live буцаалтад сүүлийн 10 минутын дахин нэвтрэлт шаардана. GET /dev/refunds. Тайлан: GET /dev/statements ба худалдагчийн backend-ийн GET /statements — мөнгөний хөдөлгөөн бүр Улаанбаатарын өдрөөр (captured, refunded, fee, settlement_paid, carry), клирингийн үлдэгдэлтэй, JSON эсвэл CSV (UTF-8 BOM). Sandbox: консолоос claimless (qr, redirect, terminal) test intent pay_url-тай, …/simulate (claim, confirm, decline, expire) ба терминалын …/simulate-tap — бодит урсгалтай ижил webhook. Статистикт presentment, терминал, дэд худалдагчаар задаргаа. GET /dev/audit — байгууллагын бүх апп-ын (ба апп-гүй) түүх; байгууллагын гишүүн биш хүний id хэзээ ч гарахгүй. Хүний user_id самбарын ямар ч хариунд байхгүй. Нууцлалын засвар: GET /dev/apps/{id}/audit өмнө нь операторын ажилтан ба payout дансны эзэмшигчийн actor_user_id-г (ба операторын payout мөрөнд дансны эзэмшигчийн id-г) апп-ыг унших эрхтэй гишүүн бүрт харуулдаг байсан — одоо /dev/audit шиг зөвхөн байгууллагын гишүүнийг id, нэрээр, бусдыг төрлөөр нь (actor.kind: operator | person) харуулж actor_user_id null.

1.9.0 — 2026-10-27

Шинэ боломж. Олон webhook endpoint (орчин бүрт 5 хүртэл, event шүүлтүүр, тус бүр өөрийн secret ба хүргэлтийн лог) ба алдсан event-ээ татах events API.

Апп-ын одоогийн webhook_url нь live ба test-ийн endpoint №1 болж шилжив — ижил URL, ижил secret, ижил гарын үсэг, хүлээгдэж буй event алдагдаагүй; POST /dev/apps/{id}/webhook хэвээр. Endpoint-ийг консол (/dev/apps/{id}/webhook-endpoints) ба client credentials-аар (/webhook-endpoints) удирдана: URL, тайлбар, event_types (хоосон = бүгд), active/disabled, secret солих (хуучин нь 24 цаг хамт гарын үсэг зурна), endpoint бүрт тест илгээх. Хүргэлтийн лог endpoint-оор шүүгдэж (endpoint_id, type), event бүрийн endpoint тус бүрийн оролдлогыг харуулна; дахин илгээхэд endpoint сонгож болно. Бүх хүргэлт нь 24 цаг амжилтгүй endpoint-ийн тухай байгууллагын админд анхааруулга, 5 хоног бол автоматаар унтарна (auto_disabled). GET /events, /events/{id}: webhook-тэй яг ижил биет, credential-ийн орчинд, 30 хоног, (created_at, id) cursor.

1.8.0 — 2026-10-27

Шинэ боломж. API түлхүүр ба scope: апп бүрт олон нэртэй түлхүүр, эрхийн scope, давхцалтай солих, хүчингүй болгох, сүүлд хэрэглэсэн цаг; хөгжүүлэгчийн платформын шинэ эрх.

Консолоос (POST /dev/apps/{id}/keys) test түлхүүр үүсгэнэ: нэр, scope (payments:read, payments:write, refunds:write, terminals:, sub_merchants:, payout_links:write, settlements:read, events:read, webhooks:write, oauth:token) эсвэл бэлэн багц, дуусах хугацаа. Client id нь gk_test_…, secret нь gks_test_…<checksum> — нэг л удаа харагдана. Солих (roll) нь шинэ түлхүүр гаргаж, хуучныг 0 – 7 хоногийн давхцлын дараа зогсооно; хүчингүй болгох нь шууд. Server route бүр шаардах scope-оо нэрлэдэг, дутуу бол 403 insufficient_scope (required_scope). Test түлхүүрт терминал, дэд худалдагч, payout-link, webhook endpoint бичих scope олгогдохгүй. Одоогийн mapp… хос «Анхдагч түлхүүр» болж тухайн орчны бүх scope-той ажилласаар; POST /credentials шинэ secret гаргахад хуучин нь тэр дороо зогсоно. Live түлхүүрийг энэ API-аар үүсгэх, IP хязгаарлалт нь цөмд дахин нэвтрэлт ба хүсэлт гаргагчийн IP гартал (Wave 2) хаалттай — live secret POST /credentials-ээр хэвээр. Шинэ эрх: miniapp.develop (менежер), miniapp.keys.live (зөвхөн админ — менежер live түлхүүрийн шинэ API-д хандахгүй), miniapp.payments, miniapp.finance (менежер), miniapp.agreements.sign (админ). Цэсний бүлэг «Хөгжүүлэгч»: апп-ууд ба баг (цөмийн гишүүдийн дэлгэц); тойм, төлбөр, үлдэгдэл, бизнес, KYB-ийн цэс нь тэдгээрийн консолын дэлгэцтэй хамт (цөмийн дараагийн хувилбар) нэмэгдэнэ. Хугацаа дуусахаас 7 ба 1 хоногийн өмнө мэдэгдэл, live түлхүүрийн өөрчлөлт бүрт админуудад мэдэгдэл.

1.7.0 — 2026-10-27

Шинэ боломж. «Gerege App-аар төлөх»: худалдагч (merchant) апп, claim-аар хүнтэй болох QR / redirect / терминалын төлбөр, дэд худалдагч ба тэдний тооцоо.

kind=merchant апп launcher-т гарахгүй, entry URL, manifest шаардахгүй (review нь хуулийн хуудас ба оператор). Худалдагчийн backend client credentials-аар qr, redirect (бүртгэлтэй return host руу буцаана), terminal presentment-тэй intent үүсгэж pay_url авна; хүн QR уншуулах эсвэл терминалын sticker/NFC-ээр POST /payments/claim хийж, нас ба eID шалгалтын дараа ердийн төлөх цонхоор төлнө. Худалдагч төлбөр бүрт санамсаргүй user_ref авна. Терминалд нэг л нээлттэй intent; manual capture-д capture_within (60 с – 7 хоног); payment_intent.claimed ба payment_intent.expired event; webhook enqueue хийгдэхэд шууд илгээнэ. Дэд худалдагч бүр өөрийн клиринг 2500-<seg>, өөрийн тооцоо, payout данс нь эзэмшигч (хүн, эсвэл байгууллагын дансны хувьд түүний админ) Gerege App дотор баталсан холболтоор. Операторын payout-д дансны эзэмшигч бүртгэгдэнэ. Нүүр хуудас /pay/<token>-д нийтийн GET /pay/{token}, /pay/t/{code}.

1.6.0 — 2026-10-26

Шинэ боломж. Нүүр дэлгэцийн layout-д баннер хэсэг ба «Тун удахгүй» үйлчилгээ.

Шинэ «banner» хэсэг: 1–10 зураг (https:// эсвэл /brand/… хаяг), гарчиг, тайлбар, дарахад нээх mini app (нийтлэхэд шалгана) эсвэл https холбоос. featured, grid, category хэсэгт «soon» — mini app биш, нэр ба дүрстэй үйлчилгээ; дарахад апп «Тун удахгүй» гэж хэлнэ, бодит апп гармагц оператор slug-аар нь солино. Хүнд нээгдэхгүй апп руу хөтлөх баннер хасагдана; зөвхөн «тун удахгүй»-тэй хэсэг үлдэнэ.

1.5.0 — 2026-10-23

Шинэ боломж. Төлбөр төлөгдөх ба буцаагдах үед төлсөн хүнд мэдэгдэл (хонх ба push).

Ledger capture-ийг баталгаажуулмагц хүн «Төлбөр төлөгдлөө» (дүн, апп-ын нэр), буцаалт амжилттай болмогц «Төлбөр буцаагдлаа» (дүн, апп-ын нэр; апп-ын өөрийн бичсэн текст push-д орохгүй) мэдэгдэл авна; дарахад хэтэвч нээгдэнэ. Kind нь miniapp.payment.captured / miniapp.payment.refunded, түлхүүр нь intent эсвэл буцаалтын id тул нэг үйл явдлыг нэг л удаа хэлнэ. Manual capture, reconcile job-оор дууссан дуудлага ч мөн адил. Test горимын төлбөр хэнд ч мэдэгдэхгүй; мэдэгдэл бүтэлгүйтвэл төлбөр хэвээр.

1.4.0 — 2026-10-23

Шинэ боломж. profile.phone scope: хүн зөвшөөрвөл SMS-ээр баталгаажсан утасны дугаар.

Manifest-д profile.phone зарласан апп-д хүн host-ийн зөвшөөрлийн дэлгэцээр (имэйлтэй адил) зөвшөөрнө; /me ба launch-ийн profile-д E.164 хэлбэрийн дугаар (+97699112233) mn.gerege.phone-оос. Дугаараа баталгаажуулаагүй хүнд талбар огт байхгүй.

1.3.0 — 2026-10-22

Шинэ боломж. Тооцоо (settlement), 1-р үе шат: операторын тогтоосон динамик шимтгэл ба хуваарь, апп бүрийн клиринг данс, T+N цэвэр тооцоо, settlement.paid webhook. Унтраалттай (MINIAPP_SETTLEMENTS=off|shadow|on).

Оператор апп бүрт хувилбартай төлбөрийн дүрэм (effective_from; хүчин төгөлдөр болсныг засахгүй) тогтооно: шимтгэл = round_half_up(дүн × fee_bps / 10000) + fee_fixed, fee_min/fee_max, refund_fee; хуваарь daily / weekdays / weekly:<өдөр> / manual, Улаанбаатарын цагаар, T+N. Дүрэмгүй бол шимтгэл 0, ажлын өдөр 10:00, T+1. Апп асаалттай үед capture апп-ын 2500-<seg> клиринг рүү орж, тооцоогоор 4500 (шимтгэл) ба payout данс (цэвэр) руу шилжинэ; holdback байхгүй. Settle хийгдсэн төлбөрийн буцаалт клирингээс гарна; хүрэлцэхгүй бол settlement_shortfall-аар татгалзана (авлага — 2-р үе шат). Шилжихээс өмнөх төлбөр хуучин замаараа. API: /review/apps/{id}/payment-rules, /settlement, /settle, /review/settlements, /review/refund-shortfalls; /dev/apps/{id}/payment-rule, /settlements; GET /api/v1/miniapp/settlements. Intent-д fee/net.

1.2.0 — 2026-10-22

Шинэ боломж. OMAS 1.0 нийцэл, хөгжүүлэгчийн sandbox (webhook хүргэлт, тест хэрэглэгч, тест төлбөр), операторын нүүрний layout, хөгжүүлэгчийн аналитик.

Launch нь requires_verified/min_age-ийг мөрдөж 403 verification_required / age_restricted буцаана; token ба /me-д OMAS ref; manifest шалгалт 512 icon (PNG 512×512) ба legal хуудсуудыг шалгана; операторын max_amount. Консолын API: webhook/deliveries (+retry, тест event), test-users (зөвхөн байгууллагын идэвхтэй гишүүд), test-intents (+confirm, OMAS тест дүн). app.status_changed ба consent.revoked event. Оператор нүүрний layout-ыг хувилбартай нийтэлж, буцаана; хүн GET /api/v1/miniapp/layout. Хөгжүүлэгч өдөр бүрийн launch, хүн, consent, төлбөрийн тоо (Улаанбаатарын өдрөөр).

1.1.0 — 2026-10-22

Шинэ боломж. Mini app-ийн төлбөр — payment intent, хүний баталгаажуулалт (core-server hold), payout данс руу capture, цуцлах/хугацаа дуусахад суллах, буцаалт, гарын үсэгтэй webhook.

Mini app-ийн backend хүний access token-оор (payments scope, Idempotency-Key заавал) POST /api/v1/miniapp/payment-intents дээр intent үүсгэнэ; дүн нь backend-ийнх, хүн өөрийн дүнгээ оруулах зам байхгүй. Хүн host-ийн өөрийн UI-д (/api/v1/miniapp/payments/{id}) апп-ын нэр, дүнг харж, өөрийн данснаас баталгаажуулна — энэ нь modules/bank-ийн Ledger-ээр дамжин core-server дээр payment_auth hold тавина (данс тухайн хүнийх эсэхийг ledger-ээс асууна). automatic intent шууд capture хийгдэнэ; manual intent-ийг апп 7 хоногийн дотор capture эсвэл cancel хийнэ (cancel = hold суллах). Capture нь операторын review-ээр тохируулсан payout данс руу (PUT /api/v1/miniapp/review/apps/{id}/payout) — хөгжүүлэгч өөрөө өөрчилж чадахгүй. Буцаалт capture-ийн дараа 90 хоногийн дотор, нийлбэр нь төлсөн дүнгээс хэтрэхгүй (SQL WHERE). Төлөвийн шилжилт бүр нэг UPDATE … WHERE; ledger-ийн дуудлага бүрийн key дуудлагаас өмнө бичигдэж, timeout болбол reconcile job ижил key-гээр дахин асууна. Webhook (payment_intent., refund.) шилжилттэй нэг transaction-д outbox-д орж, nexus.JobRunner-ийн job-оор HMAC-SHA256(secret, t.body) гарын үсэгтэй, 1м–24ц давталттай хүргэгдэнэ; secret солиход хуучин нь 24 цаг хамт гарын үсэг зурна. Мөн хугацаа дууссан launch code, grant, token-ийг цэвэрлэх job. Тест credential-ийн intent core-д хүрэхгүй.

1.0.0 — 2026-10-22

Шинэ боломж. Mini app платформ — хөгжүүлэгчийн консол, операторын хяналт, хүний зөвшөөрөл ба нээлт, mini app-ийн backend-д зориулсан token солилцоо.

openpay-ийн miniapp-platform-ийг (OMAS 1.0) модуль болгон шилжүүлэв. Апп суулгасан байгууллага mini app бүртгэж, ноорог дээрээ засварлаж, /.well-known/gerege-miniapp.json (эсвэл openpay-miniapp.json) manifest-ээр origin-оо баталгаажуулж, test/live түлхүүр гаргаад хяналтад илгээнэ; secret-ийг ганц удаа харуулж, зөвхөн hash-ийг хадгална. Хяналтыг зөвхөн MINIAPP_OPERATOR_TENANT_ID байгууллага шийднэ (хоосон бол хаалттай); түдгэлзүүлэхэд аппын бүх token даруй хүчингүй. Хүн нийтлэгдсэн апп-уудыг харж, зөвшөөрөл өгч, нээнэ — нээлт бүр 60 секундын, нэг удаагийн launch code гаргана (нэг удаагийн дүрэм SQL-ийн UPDATE … WHERE used_at IS NULL дотор). Mini app-ийн backend client credential-ээр /api/v1/miniapp/oauth/token дээр кодоо access + эргэлддэг refresh token-оор солино (дахин ашигласан код, refresh гинжийг бүхэлд нь цуцална), /api/v1/miniapp/me нь хүнийг платформын id-гаар биш апп тус бүрийн нууц нэрээр (pairwise subject) хэлнэ. Дараагийнх: төлбөрийн intent (modules/bank → core-server hold), settlement, webhook хүргэлт, layout.