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

Events API

Webhook алдсан (endpoint унтарсан, deploy-ийн үеэр 5xx буцаасан, 8 оролдлого дууссан, машин offline байсан) үед юу болсныг серверээсээ татаж авах арга. Энэ хуудас 5 минут.

  • Хэрэгтэй: events:read scope-той 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 цаг; limit 1–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"
  1. next_cursor null болтол хуудаслана; event бүрийг webhook-тэй ижил idempotent кодоор (event id-аар dedupe — webhook-ээр аль хэдийн ирсэн бол алгасна) боловсруулна (Idempotent handler).
  2. Сүүлийн event-ийн id-г хадгал; next_cursor: null бол дараагийн удаа тэр id-аар after хий.
  3. Бараа олгох, захиалга хаахаас өмнө объектыг (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-ийн нийтлэг дүрэм.