Events API¶
Webhook алдсан (endpoint унтарсан, deploy-ийн үеэр 5xx буцаасан, 8 оролдлого дууссан, машин offline байсан) үед юу
болсныг серверээсээ татаж авах арга. Энэ хуудас 5 минут.
- Хэрэгтэй:
events:readscope-той API түлхүүр (test эсвэл live — түлхүүрийн орчны event-ийг л харна).
1. API¶
| Method | Зам | Хариу |
|---|---|---|
| GET | /api/v1/miniapp/events?type=&after=&created_gte=&limit= |
{"data": [Event], "next_cursor": "evt_…" \| null} — хуучнаас нь |
| GET | /api/v1/miniapp/events/{id} |
Нэг event; өөр апп, өөр орчных эсвэл устсан бол 404 |
- Нэвтрэлт: Basic (API түлхүүр), scope
events:read(дутуу бол403 insufficient_scope+required_scope). Rate limit минутад 600. - Объект нь webhook-ийн body-той byte-ээрээ ижил (хадгалсан, гарын үсэг зурсан тэр body:
id,type,created_at,livemode,app,data.object) — webhook-ийн handler-ийн нэг код хоёуланг боловсруулна. Гарын үсгийн толгой байхгүй: HTTPS ба таны түлхүүр нь баталгаа. - Шүүлтүүр:
type— нэг event төрөл (webhook.testбиш — тест event энэ API-д хэзээ ч гарахгүй,type=webhook.test→400 test_event_not_listed);created_gte— RFC 3339 цаг;limit1–100 (анхдагч 50). - Хуудаслалт:
after= өмнөх хуудасныnext_cursor(тэр event-ээс хойших). Event-ийнidсанамсаргүй, цаг дараалсан биш тул cursor-ыг өөрөө бүү зохио — серверийнхийг дамжуул.next_cursor: null= одоогоор төгсгөл. - Хадгалалт 30 хоног (event үүссэнээс). 30 хоногоос хуучин эсвэл энэ апп, орчны биш
after→400 unknown_cursor—created_gte-ээр дахин эхэл. - Хамгийн сүүлийн ~2 секундийн event жагсаалтад хараахан орохгүй: commit хийгдэж буй event-ийг cursor алгасахгүйн тулд. Дараагийн дуудлагад гарна.
- Тухайн агшинд нэг ч endpoint-гүй байсан, эсвэл шүүлтүүрт таараагүй event ч энд бий.
Алдааны кодууд (invalid_type, test_event_not_listed, invalid_cursor, unknown_cursor, invalid_created_gte, invalid_limit) —
Алдааны код.
2. Нөхөн татах давталт¶
Хүлээн авсан хамгийн сүүлийн event-ийн id-гаа хадгалж, тэндээсээ үргэлжлүүлнэ:
# Эхний удаа: сүүлийн өдрөөс
curl -s -u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET" \
"https://geregeapp.mn/api/v1/miniapp/events?created_gte=2026-10-26T00:00:00Z&limit=100"
# Дараа нь: өмнөх хариуны next_cursor-оос
curl -s -u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET" \
"https://geregeapp.mn/api/v1/miniapp/events?after=evt_…&limit=100"
# Зөвхөн нэг төрөл
curl -s -u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET" \
"https://geregeapp.mn/api/v1/miniapp/events?type=payment_intent.requires_capture&created_gte=2026-10-26T00:00:00Z"
next_cursornullболтол хуудаслана; event бүрийг webhook-тэй ижил idempotent кодоор (eventid-аар dedupe — webhook-ээр аль хэдийн ирсэн бол алгасна) боловсруулна (Idempotent handler).- Сүүлийн event-ийн
id-г хадгал;next_cursor: nullбол дараагийн удаа тэрid-аарafterхий. - Бараа олгох, захиалга хаахаас өмнө объектыг (
GET /payment-intents/{id}) дахин унш — event нь тухайн агшны зураг.
Webhook-ийг огт ашиглахгүй систем ч (жишээ нь хаалттай сүлжээн дэх машин) энэ API-г хэдэн секунд тутам polling хийж болно — rate limit-дээ багтаана уу.
3. Объектоор тулгах¶
Event-ээс гадна объектуудыг шууд уншиж болно — тэд үргэлж одоогийн үнэн:
# Нэг захиалгын intent-үүд (reference = таны захиалгын дугаар)
curl -s -u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET" \
"https://geregeapp.mn/api/v1/miniapp/payment-intents?reference=order_8812"
# Төлөвөөр, хуудаслан (шинээс нь; after = өмнөх хуудасны сүүлийн id)
curl -s -u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET" \
"https://geregeapp.mn/api/v1/miniapp/payment-intents?status=succeeded&limit=100"
# Тооцоо (live түлхүүрээр; cursor = өмнөх хариуны next_cursor)
curl -s -u "$GEREGE_CLIENT_ID:$GEREGE_CLIENT_SECRET" \
"https://geregeapp.mn/api/v1/miniapp/settlements?limit=100"
Өдөр тутмын бүрэн тулгалт (тайлан, тооцоо) — Тулгалт, Тайлан. Хуудаслалт, шүүлтүүрийн дүрэм: API-ийн нийтлэг дүрэм.