Худалдагч, дэд худалдагч, терминал¶
Худалдагч апп (
kind: "merchant") дотор хоёр нэмэлт объект: терминал (хаана төлөх) ба дэд худалдагч (хэний мөнгө). Хэрэглээ ба API: Gerege App-аар төлөх.
1. Худалдагч¶
Gerege App-аас гадуурх таны систем — вэб дэлгүүр, апп, касс, kiosk, вендинг. Launcher-т гарахгүй, manifest-гүй;
бүртгэлээр scope нь profile.basic + payments. Review нь хуулийн хуудсууд (privacy, terms, support — 200
хариулах), webhook URL, live secret-ийг шаардана; дараа нь оператор бизнесийг шалгаж батлаад payout дансыг
тохируулна. kind ба return_hosts нь мэдрэг талбар — зөвхөн ноорог эсвэл татгалзсан үед өөрчлөгдөнө
(409 needs_review): төлсний дараа хүнийг хаашаа илгээхийг review харсан байх ёстой.
2. Терминал¶
Байнгын цэг: QR sticker, NFC tag, вендинг машин, касс.
- Sticker дүнгүй. Терминалын
url(https://geregeapp.mn/pay/t/<code>) зөвхөн терминалыг нэрлэнэ. Дүн нь тухайн мөчид терминалд уясан нээлттэй intent-ээс — sticker-ийг хэн ч хуулж болно, гэхдээ дүнг өөрчилж чадахгүй. - Нэг терминал — нэг нээлттэй сагс, орчин бүрт. Claim хийгдээгүй нээлттэй intent терминалд live-д нэг, test-д нэг
(
409 terminal_busyнь нээлттэйг нэрлэнэ). Test сагс бодит машиныг хаахгүй; апп-ын эзэн ба тест хэрэглэгчид терминал уншуулахад test сагсыг эхэлж, бусад хүн зөвхөн live-ийг авна; нийтийн/pay/tхуудас зөвхөн live-ийг харуулна. - Бүртгэлийн нэр төлөх цонхонд.
label,locationхүний утсанд Face ID-аас өмнө гарна. Өөр sticker наасан бол хүн буруу машины нэрийг харж зогсоно. codeөөрчлөгдөхгүй. Сервер олгоно (10 тэмдэгт).reference— таны машины дугаар, апп дотор өвөрмөц (дахинPOST→ тэр терминал).- Бичих нь live түлхүүр эсвэл консол. Терминал хоёр орчинд нэг бүртгэл тул test түлхүүр уншина л (
403 live_only) — алдагдсан sandbox secret бодит машины эзэмшигчийг сольж, live мөнгийг өөр тийш чиглүүлэх ёсгүй. status: "disabled"терминалын сагсыг token-оор ч төлөхгүй (409 terminal_disabled).
3. Дэд худалдагч¶
Олон эзэмшигчтэй платформ (vending.mn — машин бүр өөр эзэнтэй; kiosk hub — үйлчилгээ үзүүлэгч бүр) нэг худалдагч апп дотор эзэмшигч бүрийг дэд худалдагч болгоно. Платформ нь худалдагч (merchant of record); эзэмшигч бүр өөрийн payout данс, өөрийн тооцоотой — дүрэм (шимтгэл, хуваарь) нь апп-ынх.
code— таны платформын эзэмшигчийн id, өөрчлөгдөхгүй (400 code_immutable); ижилcode-оор дахинPOST→ тэр мөр.display_nameхүний төлөх цонхонд гарна.- Терминал дэд худалдагчтай бол түүний intent автоматаар тэр дэд худалдагчийнх.
4. Payout холболт — эзэмшигч өөрөө батална¶
Таны сервер эзэмшигчийн орлогыг дурын данс руу чиглүүлж чадахгүй. Чадвал таны сервер эвдрэхэд бүх эзэмшигчийн мөнгийг нэг дор өөр тийш эргүүлэх зам болно. Тиймээс:
таны сервер ─ POST /sub-merchants/{id}/payout-link {account} (live) ─▶ Gerege
│ мэдэгдэл
дансны эзэмшигч (хүн / байгууллагын админ) ◀┘
Gerege App: «{апп}-ын хүсэлт» + нөхцөл → Face ID → батлах / татгалзах
дэд худалдагч.payouts_configured = true ◀─ батлагдвал
- Хэн батлах: дэвтэрт бүртгэлтэй дансны эзэмшигч — хүний данс бол тэр хүн; байгууллагын данс бол тухайн байгууллагын одоогийн админуудын аль нэг (батлах агшинд дахин шалгана).
- Нөхцөл (
terms): батлах нь «энэ данс руу орсон төлбөрүүдийн буцаалт (90 хоногийн дотор) энэ данснаас хасагдана» гэдгийг зөвшөөрөх — тооцоо асаагүй үед буцаалт шууд эзэмшигчийн данснаас гардаг. - Хүсэлт 7 хоногт хүчинтэй; төлөв
pending | approved | declined | canceled | superseded | expired. - Payout батлагдаагүй дэд худалдагчийн live intent үүсэхгүй (
409 payouts_not_configured). Test-д хамаарахгүй. - Payout холболт хүсэх нь зөвхөн live түлхүүр (
403 live_only).
5. Хэрэглээний загварууд¶
| Худалдагч апп | Дэд худалдагч | Терминал | |
|---|---|---|---|
| Ганц дэлгүүр | 1 | — | касс бүр (сонголтоор) |
| Вендинг платформ | 1 (платформ) | машины эзэмшигч бүр | машин бүр |
| Kiosk hub | 1 (hub) | үйлчилгээ үзүүлэгч бүр | kiosk бүр «удахгүй» (qr intent-д terminal_id одоо зөвшөөрөгдөхгүй) |
| POS нийлүүлэгч | 1 (нийлүүлэгч) | дэлгүүр бүр | касс бүр |
Дэлгүүр өөрөө худалдагч байж, POS нийлүүлэгчид түлхүүр үүсгэх эрх олгох (partner authorization) — «удахгүй».