สมัครสมาชิก
ใช้งานได้POST
/api/v1/auth/registerสำหรับให้สมาชิกสมัครสมาชิกใหม่
Headers
| ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| Authorization | string | — | ไม่ใช้ — endpoint นี้เป็น public ไม่ต้องแนบ 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 |
Request bodyapplication/json
| ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| phone | string | ใช่ | เบอร์มือถือไทยของสมาชิก (รูปแบบ 0XXXXXXXXX 10 หลัก) — 1 เบอร์สมัครได้ 1 บัญชีต่อ agent |
| password | string | ใช่ | รหัสผ่าน 6-72 ตัวอักษร |
| full_name | string | — | ชื่อ-นามสกุล (ไม่เกิน 100 ตัวอักษร) — ควรตรงกับชื่อบัญชีธนาคาร |
| bank | object | ใช่ | ข้อมูลธนาคาร |
| └ bank_code | string | ใช่ | รหัสธนาคารมาตรฐานของระบบ เช่น KBANK, SCB, BBL |
| └ account_number | string | ใช่ | เลขบัญชีธนาคาร |
| └ account_name | string | ใช่ | ชื่อ - สกุล |
| acquisition_channel | string | — | ช่องทางที่สมาชิกรู้จักเว็บ (dropdown ตอนสมัครตรง) — ถ้ามากับลิงก์แนะนำที่กำหนดช่องทางไว้ ระบบใช้ค่าจากลิงก์แทน; ไม่ส่ง = DIRECTYOUTUBE | FACEBOOK | LINE | TIKTOK | GOOGLE | INSTAGRAM | TWITTER | DIRECT | BACKOFFICE | OTHER |
| referral_code | string | — | โค้ดลิงก์แนะนำ (?ref=<code> ไม่เกิน 32 ตัวอักษร) — โค้ดผิด/หมดอายุ/ข้าม agent จะถูกเพิกเฉย (สมัครสำเร็จตามปกติ ไม่ error) |
ตัวอย่าง request
{
"phone": "0812345678",
"password": "P@ssw0rd123",
"full_name": "สมชาย ใจดี",
"bank": {
"bank_code": "KBANK",
"account_number": "1234567890",
"account_name": "สมชาย ใจดี"
},
"acquisition_channel": "FACEBOOK",
"referral_code": "AB12CD34"
}Response
ฟิลด์ใน data
| ฟิลด์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| access_token | string | — | JWT สำหรับแนบ Authorization: Bearer — สมัครเสร็จเข้าสู่ระบบให้ทันที |
| expires_in | number | — | อายุ access token เป็นวินาที (900 = 15 นาที) |
| refresh_token | string | — | สำหรับขอ access token ใหม่ มีอายุ 7 วัน |
| user | object | — | ข้อมูลสรุปของสมาชิกที่สร้างใหม่ |
| └ id | string | — | id สมาชิก (uuid) |
| └ username | string | — | username (prefix ของ agent + เบอร์โทร ตัวพิมพ์เล็ก ≤20 ตัวอักษร) |
| └ role | string | — | บทบาทMEMBER |
| └ status | string | — | สถานะบัญชี — สมัครใหม่เป็น ACTIVE ทันที |
| └ member_tier | string | null | — | ระดับสมาชิก — เริ่มที่ NEW |
| └ full_name | string | null | — | ชื่อ-นามสกุล |
| └ selected_promotion_id | string | null | — | โปรฝากเงินที่สมาชิกเลือกไว้ (สมัครใหม่ = null) |
ตัวอย่าง response
{
"success": true,
"code": 0,
"message": "สำเร็จ",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIs…",
"expires_in": 900,
"user": {
"id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0",
"username": "abc0812345678",
"role": "MEMBER",
"status": "ACTIVE",
"member_tier": "NEW",
"full_name": "สมชาย ใจดี",
"selected_promotion_id": null
}
},
"request_uuid": "3c9d2f61-7b04-4e8a-9f27-1a5c8e0d4b72"
}Error codes ที่พบได้
| code | ชื่อ | HTTP | ข้อความ |
|---|---|---|---|
| 1004 | USER_ALREADY_EXISTS | 409 | ผู้ใช้นี้มีอยู่แล้วเบอร์นี้เคยสมัครกับ agent นี้แล้ว (username ซ้ำ) |
| 4001 | VALIDATION_ERROR | 400 | ข้อมูลไม่ถูกต้อง |
| 4002 | BAD_REQUEST | 400 | คำขอไม่ถูกต้องไม่รู้จักโดเมน agent หรือ prefix+เบอร์ยาวเกิน 20 ตัวอักษร |
| 9003 | TOO_MANY_REQUESTS | 429 | คำขอมากเกินไป กรุณาชะลอความเร็วเกิน rate limit ของกลุ่ม auth (10 ครั้ง/นาที/IP) |