Sandbox — test горим¶
Энэ хуудсыг уншсаны дараа та бодит мөнгө хөдөлгөхгүйгээр интеграцаа хэрхэн турших, юу одоо ажилладаг, юу хараахан ажиллахгүйг мэднэ. Хугацаа: 5 минут. Хэрэгтэй: хөгжүүлэгчийн консолд бүртгэлтэй апп ба түүний test түлхүүр.
Test түлхүүр¶
Аль орчинд ажиллах нь түлхүүрээр шийдэгдэнэ: test түлхүүрээр үүсгэсэн intent livemode: false, тэр түлхүүрээр
зөвхөн test объектууд харагдана. Test ба live өгөгдөл хэзээ ч холилдохгүй — жагсаалт, GET, webhook-ийн livemode
бүгд тусдаа.
| Түлхүүр | Client id | Secret | Хэрхэн авах |
|---|---|---|---|
| API түлхүүр (test) | gk_test_… |
gks_test_… |
консол → Түлхүүр → «Шинэ түлхүүр», нэр, preset эсвэл scope (POST /dev/apps/{id}/keys) |
| Анхдагч түлхүүр (test) | mapp_test_… |
gma_cs_… |
POST /dev/apps/{id}/credentials — тухайн орчны бүх scope |
| Live | gk_live_… / mapp_… |
gks_live_… / gma_cs_… |
консолын «Түлхүүр»-ээс (эсвэл POST /dev/apps/{id}/credentials): miniapp.keys.live эрх ба сүүлийн 10 минутын нэвтрэлт (403 fresh_sign_in_required бол дахин нэвтэрч давтана); апп батлагдсаны дараа л ажиллана; sandbox байгууллагад хэзээ ч |
Test түлхүүр апп ноорог, батлагдаагүй байхад ч шууд ажиллана. Secret нэг удаа л харагдана.
export GEREGE_CLIENT_ID=gk_test_xxxxxxxxxxxxxxxxxxxx
export GEREGE_CLIENT_SECRET=gks_test_…
curl -s "https://geregeapp.mn/api/v1/miniapp/payment-intents?limit=5" \
-u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET"
Test горимд юу өөр вэ¶
- Мөнгө хөдлөхгүй. Core banking-д хандахгүй, hold тавигдахгүй; payout данс тохируулаагүй байсан ч болно.
- Үр дүнг дүнгийн сүүлийн хоёр орон шийднэ — Тест дүн.
- Capture шууд
succeeded, буцаалт шуудsucceededболно (ledger-ийн хариу хүлээхгүй). - Хугацаа (
expires_in,capture_within) live-тай яг адил ажиллана — хугацаа өнгөрсөн intentexpiredболно. - Webhook-ууд live-тай ижил төрөл, ижил хэлбэрээр ирнэ,
livemode: false. Endpoint нь орчин бүрт тусдаа — test endpoint-ийг (жишээ нь tunnel) live-д хүрэлгүй нэмнэ (Локал webhook). Апп-ын анхны webhook URL (endpoint №1) хоёр орчинд хамт — тэндlivemode-оор ялгана. GET /settlementstest түлхүүрээр үргэлж хоосон — тооцоо зөвхөн live мөнгөнд.- Test түлхүүрт live-only scope (
terminals:write,sub_merchants:write,payout_links:write,webhooks:write) олгогдохгүй: терминал, дэд худалдагч, payout холболтыг test түлхүүр уншина, бичих нь403 live_only. Бүртгэл нь хоёр орчинд нэг тул (алдагдсан sandbox secret бодит машиныг өөрчлөх ёсгүй) тэднийг live түлхүүр эсвэл консолоор бүртгэнэ. Sticker-ийн PDF хэвлэхийг (POST /terminals/print-sheet) test түлхүүр ч хийнэ. - Нэг терминал дээр test сагс ба live сагс зэрэг нээлттэй байж болно (терминалд claim хийгдээгүй нээлттэй intent
орчин бүрт нэг). Test сагсыг зөвхөн апп-ын эзэн ба тест хэрэглэгчид авна; бусад хүнд, нийтийн
/pay/t/<code>хуудсанд зөвхөн live сагс харагдана.
Юуг одоо эцэс хүртэл турших боломжтой¶
| Урсгал | Одоо | Тэмдэглэл |
|---|---|---|
Claimless intent (qr, redirect, terminal) үүсгэх, давтах, жагсаах, цуцлах, unclaim, capture, буцаалт |
✓ | test түлхүүрээр; pay_url хариунд ирнэ |
Claimless intent-ийг утсаар төлөх — Gerege App-ын QR товч, «NFC уншуулах», камераар /pay/… холбоос (Universal Link), sticker-т утсаа хүргэх |
✓ | Gerege App iOS build 122+ (TestFlight); тест хэрэглэгч эсвэл апп-ын эзэн; test intent-д Face ID → мөнгө хөдлөхгүй |
Компьютер дээрх https://geregeapp.mn/pay/<token> QR хуудас, /pay/t/<code> терминалын хуудас |
✓ | терминалын хуудас зөвхөн live сагсыг харуулна |
| Хүний талыг утасгүй тоглуулах (claim, төлөх, болих, хугацаа дуусгах, sticker-т хүргэх) | ✓ | Утасгүй турших |
Mini app-ын intent (presentment: "app") — консолын тест intent эсвэл тест хэрэглэгч Gerege App-аас нээж төлөх |
✓ | ноорог апп тест хэрэглэгчийн launcher-т гарна |
| Терминал, дэд худалдагч, payout холболтыг унших; sticker-ийн PDF | ✓ | бичих нь live түлхүүр эсвэл консол |
| Webhook endpoint (орчин бүрт ≤ 5), хүргэлт, «дахин илгээх», тест илгээлт; events API | ✓ | Локал webhook, Events API |
| App Clip | «удахгүй» | App Clip |
| Хуулийн этгээдгүй хүнд зориулсан sandbox байгууллага | ✓ | доорх «Sandbox байгууллага» |
Утсаар турших
Test claimless intent-ийг зөвхөн апп-ын эзэн ба тест хэрэглэгчид claim хийнэ; бусад хүнд тэр
intent байхгүй мэт (404). Тиймээс утсаар турших хүн таны байгууллагын гишүүн байж, тест хэрэглэгчээр нэмэгдсэн
байна. Уншуулах QR-ийг pay_url-аас үүсгэж эсвэл терминалынхаа sticker-ийг ашиглана (NFC-г турших).
Sandbox байгууллага (хуулийн этгээдгүй хөгжүүлэгч)¶
Компанигүй хөгжүүлэгч профайлаасаа (Профайл → Байгууллагууд → «Sandbox нээх») нэг sandbox байгууллага нээнэ — «Mini апп ба төлбөр» тэнд урьдчилан суусан ирнэ. Энэ бол ердийн байгууллага: консол, баг, эрх ижил, test горим бүхэлдээ ажиллана (test түлхүүр, endpoint, симуляц, терминал, дэд худалдагч, test intent).
- Тест хэрэглэгч = та өөрөө (апп-ын эзэн) ба sandbox-доо урьсан гишүүд (Тест хэрэглэгч).
- Апп-ын
slugньsbx--ээр эхэлнэ (sbx-myshop;^sbx-[a-z0-9-]{3,27}$, бусад бол400 sandbox_slug) — жинхэнэ нэрийг жинхэнэ байгууллага эзэмшинэ;sbx-угтварыг sandbox биш байгууллага ашиглахгүй. - Live юу ч болохгүй: live түлхүүр, live secret, review-д илгээх, гэрээнд гарын үсэг, payout холболт, апп-ын payout →
409 sandbox_only. - Live болохдоо байгууллагаа (хуулийн этгээд) нээж тэнд апп-аа шинээр бүртгэнэ — sandbox-оос юу ч зөөгдөхгүй.
Test-ээс live руу¶
Live руу шилжихэд зөвхөн түлхүүр солигдоно: client id/secret-ийг live түлхүүрээр сольж, live орчны webhook endpoint-оо (өөрийн secret-тэй) тохируулна. Код, route, хэлбэр бүгд адил. Test өгөгдөл live руу шилжихгүй; терминал, дэд худалдагчийн бүртгэл аль хэдийн нэг тул дахин бүртгэх шаардлагагүй. Live болохоос өмнө Go-live checklist-ийг давна уу. Ойлголтын тайлбар: Test ба live.