ภาพรวมกงล้อนำโชค
ใช้งานได้GET
/api/v1/wheelสถานะกงล้อของสมาชิก — เปิดใช้หรือไม่ สิทธิ์หมุนคงเหลือ ช่องรางวัลทั้งหมด และผลหมุนล่าสุด เรียกครั้งเดียววาดหน้ากงล้อได้ครบ
กงล้อต้องเปิดใช้ที่ระดับ agent — บัญชี/ไซต์ที่ไม่เข้าเงื่อนไขจะได้ enabled = false, spins_available = 0 และ segments/recent เป็น array ว่าง (กรณีนี้ฟิลด์รูปและ config อาจไม่ถูกส่งมา)
สิทธิ์หมุนได้จากยอดฝากสะสม: ทุก ๆ deposit_per_spin_thb ที่ฝากสำเร็จ = 1 สิทธิ์
Headers
| ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| Authorization | string | ใช่ | ใช้ — แนบ Bearer <access_token> ของสมาชิก |
| X-Api-Key | string | ใช่ | API key ของ agent (ak_…) จากหน้า bo |
| X-Timestamp | string | ใช่ | เวลา sign เป็น unix milliseconds (คลาดเคลื่อนได้ ±300 วินาที) |
| X-Nonce | string | ใช่ | ค่าไม่ซ้ำต่อ request (UUIDv4) กัน replay |
| X-Signature | string | ใช่ | hex(HMAC-SHA256(secret, canonical)) — ดูหน้า Authentication |
| X-Player-IP | string | — | IP จริงของผู้เล่น (IPv4/IPv6) — แนะนำให้ส่ง (ใช้ใน login history) |
| X-Player-UA | string | — | User-Agent ของผู้เล่น (optional — ลง login history) |
| X-Request-Id | string | — | correlation id ของฝั่งคุณ — ระบบ echo กลับใน request_uuid (แนะนำให้ส่ง) |
| x-lang | string | — | th (default) หรือ en — ภาษาของ message |
Response
ฟิลด์ใน data
| ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| enabled | boolean | — | กงล้อเปิดใช้อยู่หรือไม่ — ถ้า false ให้ซ่อนหน้ากงล้อ (ต้องเปิดใช้ที่ระดับ agent และบัญชีต้องเข้าเงื่อนไข) |
| wheel_image_url | string | null | — | รูปหน้าปัดกงล้อของ agent (URL พร้อมแสดงผล) |
| pointer_image_url | string | null | — | รูปเข็มชี้ของกงล้อ |
| spins_available | number | — | สิทธิ์หมุนคงเหลือของสมาชิก |
| deposit_per_spin_thb | string | — | ยอดฝากสะสมที่แลกได้ 1 สิทธิ์หมุน (THB) — ใช้แสดงเงื่อนไขรับสิทธิ์ |
| wager_multiplier | string | — | ตัวคูณเทิร์นของรางวัลที่ได้ (เทิร์น = รางวัล × ตัวคูณ) |
| segments | object[] | — | ช่องรางวัลเรียงตาม slot_index — ระบบไม่เปิดเผยความน่าจะเป็นของแต่ละช่อง |
| └ slot_index | number | — | ตำแหน่งช่องบนกงล้อ (เริ่ม 0 ตามเข็มนาฬิกา) |
| └ label | string | — | ข้อความบนช่อง เช่น "20 บาท" |
| └ prize_amount_thb | string | — | มูลค่ารางวัลของช่อง (THB, string) — "0" = ช่องไม่มีรางวัล |
| recent | object[] | — | ผลหมุนล่าสุดของสมาชิก (สูงสุด 10 รายการ ล่าสุดก่อน) |
| └ slot_index | number | — | ช่องที่ออก |
| └ label | string | — | ข้อความช่องที่ออก ณ ตอนนั้น (snapshot) |
| └ prize_amount_thb | string | — | รางวัลที่ได้ (THB, string) |
| └ spun_at | string (ISO 8601) | — | เวลาหมุน |
ตัวอย่าง response
{
"success": true,
"code": 0,
"message": "Wheel fetched successfully",
"data": {
"enabled": true,
"wheel_image_url": "https://cdn.bestsystem.example/wheel/luckybet888-wheel.png",
"pointer_image_url": "https://cdn.bestsystem.example/wheel/luckybet888-pointer.png",
"spins_available": 2,
"deposit_per_spin_thb": "500",
"wager_multiplier": "1",
"segments": [
{ "slot_index": 0, "label": "5 บาท", "prize_amount_thb": "5" },
{ "slot_index": 1, "label": "เสียใจด้วย", "prize_amount_thb": "0" },
{ "slot_index": 2, "label": "10 บาท", "prize_amount_thb": "10" },
{ "slot_index": 3, "label": "20 บาท", "prize_amount_thb": "20" },
{ "slot_index": 4, "label": "เสียใจด้วย", "prize_amount_thb": "0" },
{ "slot_index": 5, "label": "50 บาท", "prize_amount_thb": "50" },
{ "slot_index": 6, "label": "100 บาท", "prize_amount_thb": "100" },
{ "slot_index": 7, "label": "500 บาท", "prize_amount_thb": "500" }
],
"recent": [
{ "slot_index": 2, "label": "10 บาท", "prize_amount_thb": "10", "spun_at": "2026-07-04T13:22:10.000Z" }
]
},
"request_uuid": "3b7e0d9c-4f61-4a28-b5e3-8d2c6f1a9e07"
}Error codes ที่พบได้
| code | ชื่อ | HTTP | ข้อความ |
|---|---|---|---|
| 6201 | WHEEL_NOT_ENABLED | 400 | กงล้อนำโชคยังไม่เปิดใช้งานปัจจุบันกงล้อที่ปิดอยู่จะตอบสำเร็จพร้อม enabled = false แทน — รองรับโค้ดนี้ไว้ด้วยเช่นเดียวกับตอน spin |
| 6203 | WHEEL_NOT_ELIGIBLE | 400 | บัญชีนี้ไม่สามารถใช้กงล้อนำโชคได้ปัจจุบันบัญชีที่ไม่เข้าเงื่อนไขจะได้ enabled = false พร้อมรายการว่างแทน |
| 1001 | UNAUTHORIZED | 401 | ไม่ได้รับอนุญาต |
| 1007 | TOKEN_INVALID | 401 | โทเค็นไม่ถูกต้อง |