Reseller API

เชื่อมระบบของคุณกับ NAXSET เพื่อดูสินค้า สั่งซื้อ และติดตามการส่งมอบ เริ่มจากตรวจ API key แล้วทำตามลำดับด้านล่าง

เริ่มใช้งาน 4 ขั้นตอน

  1. 1ตรวจ API key และสิทธิ์ด้วย GET /api/v1/me
  2. 2ดึงรายการสินค้า แล้วขอราคาล่าสุดของสินค้าที่ต้องการ
  3. 3สร้างออเดอร์ด้วย request_id ที่ไม่ซ้ำและ expected_price ล่าสุด
  4. 4เก็บ order_id แล้ว polling สถานะ; ใช้ Webhook เป็นตัวแจ้งเตือนเสริม

API นี้ทำอะไรได้

  • - ดู ค้นหา และอ่านราคาสินค้า
  • - เลือกบัญชีมือสองเป็นรายชิ้น
  • - สร้างออเดอร์และอ่านข้อมูลส่งมอบ
  • - ดูยอดกระเป๋า ส่วนลด และโควตา
  • - รับ Webhook เมื่อออเดอร์สิ้นสุด

ข้อจำกัดที่ควรรู้

  • - API key ออกให้โดยแอดมินเท่านั้น
  • - ไม่มี sandbox ทุกออเดอร์ใช้เงินจริง
  • - เติมเงินได้จากหน้าเว็บเท่านั้น
  • - การคืนเงินและเคลมต้องติดต่อร้าน
  • - ยังไม่มีไฟล์ OpenAPI หรือ Swagger

เอนด์พอยต์ทั้งหมด

GETตรวจสอบคีย์ · ยอดเงิน · โควตา
ยิงคำขอนี้เป็นอันแรกหลังได้รับคีย์ เพื่อยืนยันว่าคีย์ใช้งานได้จริง · นอกจากนั้นมันยังตอบสี่เรื่องที่หน้าอื่นถือว่าคุณรู้อยู่แล้ว: **คีย์นี้ทำอะไรได้บ้าง** (`scopes`) · **กระเป๋าของคุณมีเงินเท่าไหร่และเป็นสกุลอะไร** (`wallet`) · **คุณได้ส่วนลดกี่เปอร์เซ็นต์ แยกตามประเภทสินค้า** (`discount`) · **วันนี้ยิงได้อีกกี่คำขอ** (`quota`) · ⚠️ ระบบนี้ **ไม่มีการสมัครเอง ไม่มีคีย์ทดสอบ และไม่มี sandbox** คีย์ออกให้โดยแอดมินของร้านเท่านั้น ทุกคำขอตั้งแต่นี้ไปวิ่งบนระบบจริง และทุกคำสั่งซื้อใช้เงินจริง
GETไล่ดูและค้นหาสินค้า
ไล่ดูและค้นหาสินค้าในแคตตาล็อก ทีละ platform · สามเรื่องที่ต้องรู้ก่อนเขียนโค้ด: **(1)** `platform` เป็นพารามิเตอร์เดียวที่บังคับ และขอทุก platform พร้อมกันในคำขอเดียวไม่ได้ ถ้าจะดึงทั้งแคตตาล็อกต้องวนทีละ platform · **(2)** สินค้าทุกชิ้นมี `type` ซึ่งเป็นตัวบอกว่าคุณจะสั่งซื้อมันยังไง — `cdkey` (คีย์เกม) กับ `account1` (บัญชีใหม่ที่ยังไม่เคยใช้) สั่งด้วย `product_id` อย่างเดียว ส่วน `account2` (บัญชีมือสอง) ต้องไปเลือกบัญชีรายชิ้นมาก่อนแล้วส่ง `item_id` มาด้วย · **(3)** ราคาที่ได้จากหน้านี้เป็นเงินบาทและหักส่วนลดของคีย์คุณมาแล้ว **แต่ยังไม่ใช่ราคาสุดท้าย** เพราะหน้านี้ข้ามการคิดราคาขั้นต่ำรายสินค้า ราคาที่ได้จึงอาจต่ำกว่าราคาจริงเล็กน้อย — **ก่อนสั่งซื้อต้องไปอ่านราคาจากเอนด์พอยต์รายชิ้นเสมอ**
GETดูสินค้ารายชิ้น
ดูรายละเอียดล่าสุดและ **ราคาจริงที่ใช้สั่งซื้อได้** ของสินค้าหนึ่งชิ้น · สิ่งที่ต้องทำต่อขึ้นกับ `type` ของสินค้าชิ้นนั้น · **`cdkey` กับ `account1`** — `price` ที่ได้จากหน้านี้คือค่าที่ต้องส่งเป็น `expected_price` ตอนสั่งซื้อ และใช้แค่ `product_id` ก็สั่งได้เลย · **`account2`** — ยังสั่งจากหน้านี้ไม่ได้ เพราะสินค้ามือสองหนึ่งรายการมีบัญชีขายอยู่หลายชิ้น คนละสภาพคนละราคา ต้องไปต่อที่ `GET /api/v1/products/{product_id}/items` เลือกบัญชีมาหนึ่งชิ้น แล้วใช้ราคาและ `item_id` ของชิ้นนั้นแทน
GETดูบัญชีมือสองรายชิ้นที่ขายอยู่
ดูบัญชีมือสองที่ขายอยู่จริงใต้สินค้า `account2` หนึ่งรายการ เพื่อเลือกมาหนึ่งชิ้นก่อนสั่งซื้อ · **ใช้ได้กับ `account2` เท่านั้น** เพราะ `cdkey` กับ `account1` สั่งด้วย `product_id` อย่างเดียว ไม่มีรายชิ้นให้เลือก · สินค้า `account2` หนึ่งรายการเปรียบเหมือนกล่องที่มีบัญชีขายอยู่หลายชิ้น แต่ละชิ้นมีเกมในบัญชี เลเวล และราคาไม่เหมือนกัน · **ขั้นตอนคือ เลือกมาหนึ่งชิ้น แล้วตอนสร้างออเดอร์ให้ส่ง `item_id` ของชิ้นนั้น พร้อมกับ `price` ของชิ้นนั้นเป็น `expected_price` — ไม่ใช่ราคาของตัวสินค้า**
POSTสร้างออเดอร์
ซื้อสินค้าหนึ่งชิ้นแล้วจ่ายด้วยเงินในกระเป๋าของคุณ · **`cdkey` (คีย์เกม) กับ `account1` (บัญชีเกมใหม่ที่ยังไม่เคยใช้) ได้รับสินค้าทันทีในคำขอนี้** · **ส่วน `account2` (บัญชีมือสอง) จะได้รับสินค้าทีหลังทาง callback หรือด้วยการอ่านออเดอร์ซ้ำ** เพราะต้องเข้าไปตรวจสอบบัญชีก่อนซื้อ ซึ่งใช้เวลานานเกินกว่าจะรอจบในคำขอเดียว คำขอนี้จึงแค่รับเรื่องเข้าคิวไว้ · ทุกคำตอบมี `order_id` ติดมาด้วย เก็บไว้เสมอเพราะเป็นทางเดียวที่จะกลับมาดูออเดอร์นี้ได้ · ถ้าคำขอ timeout หรือคุณไม่แน่ใจว่ามันสำเร็จ ให้ส่งคำขอเดิมซ้ำด้วย `request_id` เดิม ห้ามเปลี่ยนเป็นค่าใหม่
GETอ่านออเดอร์รายตัว
อ่านสถานะและผลของออเดอร์หนึ่งรายการ · **นี่คือแหล่งข้อมูลหลักที่ใช้ตามผลออเดอร์** ให้เช็คที่นี่เป็นหลัก ไม่ใช่รอ callback อย่างเดียว เพราะ callback เป็นตัวช่วยแจ้งเตือน แต่ถ้ามันส่งไม่ถึงคุณ ข้อมูลจริงก็ยังอ่านได้จากที่นี่เสมอ · คำตอบทั้งหมดอยู่ที่สามฟิลด์: `status` = ออเดอร์ไปถึงขั้นไหนแล้ว · `charged` = เงินในกระเป๋าถูกหักไปหรือยัง · `delivery` = ตัวสินค้า ซึ่งจะมีค่าเมื่อ `status` เป็น `completed` · รูปของ `delivery` ขึ้นกับ `type` ของออเดอร์นั้น — `cdkey`/`account1` ได้คีย์ ส่วน `account2` ได้ข้อมูลล็อกอินของบัญชี
GETดูออเดอร์ล่าสุด
ดูออเดอร์ล่าสุดของคุณไม่เกิน 100 รายการ เรียงจากใหม่ไปเก่า · **เอนด์พอยต์นี้ไม่ใช่ประวัติออเดอร์ทั้งหมด และไม่ควรใช้แทนฐานข้อมูลฝั่งคุณ** — ไม่มีตัวกรอง ไม่มีการเลื่อนหน้า และออเดอร์ที่เก่ากว่า 100 รายการล่าสุดจะเข้าถึงผ่านทางนี้ไม่ได้อีกเลย · วิธีที่ถูกคือ **เก็บ `order_id` ของทุกออเดอร์ไว้ฝั่งคุณตั้งแต่ตอนสั่ง** แล้วเวลากระทบยอดค่อยอ่านทีละรายการด้วย `GET /api/v1/orders/{order_id}` · ลิสต์นี้เอาไว้ไล่ดูคร่าว ๆ หรือเอาไว้ตามหาออเดอร์ที่คุณทำ `order_id` หายไปจริง ๆ
PUTตั้งค่า Webhook
ตั้ง เปลี่ยน หรือปิด URL ที่จะให้เราแจ้งเมื่อออเดอร์เดินมาถึงสถานะสุดท้าย · **หน้านี้ว่าด้วยการลงทะเบียนปลายทางอย่างเดียว** ส่วนหน้าตาของคำขอที่เรายิงไปหาคุณ วิธีตรวจลายเซ็น และนโยบายการยิงซ้ำ อยู่ที่หน้า Callback ที่เราส่งไปหาคุณ (`/developers/webhooks/callback`) · ปลายทางผูกกับ **คีย์ API หนึ่งใบ** ไม่ใช่กับบัญชี ถ้าคุณใช้หลายคีย์ต้องตั้งแยกทีละใบ
POSTCallback ที่เราส่งไปหาคุณ
เมื่อออเดอร์เดินมาถึงสถานะสุดท้าย (สำเร็จ · ล้มเหลว · ถูกคืนเงิน) เราจะยิง `POST` ไปที่ URL ที่คุณลงทะเบียนไว้ พร้อมข้อมูลออเดอร์เต็ม ๆ และลายเซ็นให้คุณตรวจว่าคำขอนั้นมาจากเราจริง · ปลายทางฝั่งคุณต้องทำสามอย่างตามลำดับนี้: **(1) ตรวจลายเซ็นจากเนื้อคำขอดิบ ก่อนแกะ JSON → (2) ตอบ 2xx กลับมาให้เร็วที่สุด → (3) ค่อยเอาไปทำงานต่อ โดยกันการทำซ้ำด้วย `order_id`** · ⚠️ callback เป็นตัวช่วยแจ้งเตือน **ไม่ใช่แหล่งความจริง** ระบบฝั่งคุณต้องทำงานถูกต้องได้แม้ callback ส่งไม่ถึงสักใบ (อ่านคำเตือนท้ายหน้า)