Partner API v1

API Documentation

เชื่อมต่อสินค้า ยอดเงิน และคำสั่งซื้อผ่าน API พร้อมระบบ API Key, IP Whitelist และ Rate Limit เพื่อช่วยลดความเสี่ยงตอนเปิด API ให้พาร์ทเนอร์ใช้งาน

https://acc-market.net/api/v1

Authentication

Bearer API Key

ส่ง key ผ่าน header เท่านั้น ไม่รองรับการส่ง key ผ่าน query string

Rate Limit

Read 60/min, Order 10/min

จำกัดตามบัญชีและ IP เพื่อกันยิงถี่เกินไป

Security

IP Whitelist

ล็อกให้ API Key ใช้งานได้เฉพาะ IP ที่กำหนด

API Key ของฉัน

เข้าสู่ระบบเพื่อจัดการ API Key

หน้าคู่มือเปิดอ่านได้ทุกคน แต่การสร้าง key และตั้ง whitelist ต้องเป็นสมาชิกที่เข้าสู่ระบบแล้ว

เข้าสู่ระบบ

วิธีเริ่มเชื่อมต่อ

01

สร้าง API Key

เข้าสู่ระบบแล้วกดสร้าง key ในหน้านี้ เก็บ key ไว้ฝั่ง server เท่านั้น

02

ตั้งค่า IP Whitelist

ใส่ IP ของ server ที่จะเรียก API เพื่อลดความเสี่ยงจาก key หลุด

03

ทดสอบยอดเงิน

เรียก /balance ด้วย Authorization header เพื่อยืนยันว่าเชื่อมต่อสำเร็จ

04

เริ่มสั่งซื้อ

ดึงสินค้า เลือก product_id แล้ว POST /orders เมื่อพร้อมซื้อจริง

Header ที่ต้องส่งทุกครั้ง

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

ถ้า server บางตัวส่ง Bearer ไม่ผ่าน สามารถใช้ X-API-Key: YOUR_API_KEY ได้เช่นกัน

Flow ที่แนะนำ

  1. 1.เรียก /health เพื่อเช็คว่า API เปิดอยู่
  2. 2.เรียก /balance เพื่อเช็ค key และยอดเงิน
  3. 3.เรียก /products เพื่อเลือกสินค้าและดู stock
  4. 4.ส่ง POST /orders เฉพาะตอนพร้อมซื้อจริง
Method Path รายละเอียด Auth
GET /api/v1/health ตรวจสถานะ API ไม่ต้องใช้ key
GET /api/v1/balance ตรวจยอดเงินของบัญชี ต้องใช้ key
GET /api/v1/products ดึงรายการสินค้าแบบแบ่งหน้า ต้องใช้ key
GET /api/v1/products/{id} ดึงรายละเอียดสินค้า 1 รายการ ต้องใช้ key
POST /api/v1/orders สร้างคำสั่งซื้อและรับข้อมูลสินค้า ต้องใช้ key
GET /api/v1/orders/{history_id} ดูรายละเอียดคำสั่งซื้อของตัวเอง ต้องใช้ key
GET /api/v1/health

ตรวจสถานะ API

Public

ใช้ตรวจว่า API เปิดให้บริการอยู่หรือไม่ เหมาะสำหรับ health check ของระบบพาร์ทเนอร์

Example Request

curl "https://acc-market.net/api/v1/health"

Example Response

{
  "ok": true,
  "data": {
    "status": "ok",
    "service": "partner-api"
  },
  "meta": {
    "timestamp": "2026-05-30T03:00:00+07:00",
    "version": "v1"
  }
}

หมายเหตุ

  • Endpoint นี้ไม่ต้องใช้ API Key
GET /api/v1/balance

ตรวจยอดเงิน

API Key

ใช้ตรวจยอดเงินคงเหลือของบัญชีที่ผูกกับ API Key ก่อนสร้างคำสั่งซื้อ

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://acc-market.net/api/v1/balance"

Example Response

{
  "ok": true,
  "data": {
    "balance": 1000,
    "currency": "THB",
    "username": "demo_user"
  },
  "meta": {
    "timestamp": "2026-05-30T03:00:00+07:00",
    "version": "v1"
  }
}

หมายเหตุ

  • ถ้าได้ 401 ให้เช็ค API Key และ header
  • ถ้าได้ 403 ให้เช็ค IP Whitelist
GET /api/v1/products

ดึงรายการสินค้า

API Key

ใช้ดึงรายการสินค้า ราคา สต็อก และสถานะพร้อมขายแบบแบ่งหน้า

Parameters / Query

Parameter Type Required Description
page integer ไม่บังคับ หน้าที่ต้องการ ค่าเริ่มต้น 1
limit integer ไม่บังคับ จำนวนต่อหน้า 1-100 ค่าเริ่มต้น 50
search string ไม่บังคับ ค้นหาจากชื่อสินค้าหรือหมวดหมู่
category_id integer ไม่บังคับ กรองสินค้าตามหมวดหมู่

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://acc-market.net/api/v1/products?page=1&limit=50"

Example Response

{
  "ok": true,
  "data": {
    "products": [
      {
        "id": 1,
        "name": "Product name",
        "category": { "id": 27, "name": "Hotmail - Outlook" },
        "description": "รายละเอียดสินค้า",
        "price": 3,
        "stock": 120,
        "available": true,
        "min_order": 1,
        "max_order": 120,
        "type": "api"
      }
    ],
    "pagination": { "page": 1, "limit": 50, "total": 120, "total_pages": 3 }
  },
  "meta": { "timestamp": "2026-05-30T03:00:00+07:00", "version": "v1" }
}

หมายเหตุ

  • รายการสินค้าจะไม่เปิดเผยข้อมูล stock detail
  • ใช้ product_id จาก response นี้ไปสร้างคำสั่งซื้อ
GET /api/v1/products/{id}

ดูรายละเอียดสินค้า

API Key

ใช้ตรวจข้อมูลสินค้าเฉพาะรายการก่อนสั่งซื้อ เช่น ราคา สต็อก และจำนวนขั้นต่ำ/สูงสุด

Parameters / Query

Parameter Type Required Description
id integer บังคับ รหัสสินค้าจาก /products อยู่ใน path

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://acc-market.net/api/v1/products/1"

Example Response

{
  "ok": true,
  "data": {
    "product": {
      "id": 1,
      "name": "Product name",
      "price": 3,
      "stock": 120,
      "available": true,
      "min_order": 1,
      "max_order": 120,
      "type": "api"
    }
  },
  "meta": { "timestamp": "2026-05-30T03:00:00+07:00", "version": "v1" }
}

หมายเหตุ

  • ถ้าสินค้าปิดขายหรือหมด จะได้ 404 หรือ available=false จาก list
POST /api/v1/orders

สร้างคำสั่งซื้อ

API Key

ใช้สั่งซื้อจริง ระบบจะตัดยอดเงิน ล็อกสต็อก และคืนข้อมูลสินค้าที่ซื้อสำเร็จใน response

Request Body

Parameter Type Required Description
product_id integer บังคับ รหัสสินค้า
amount integer บังคับ จำนวนที่ต้องการซื้อ 1-100

Example Request

curl -X POST "https://acc-market.net/api/v1/orders" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_id":1,"amount":1}'

Example Response

{
  "ok": true,
  "data": {
    "order": {
      "order_id": "ORD-000123",
      "history_id": 123,
      "product_id": 1,
      "product_name": "Product name",
      "quantity": 1,
      "total": 3,
      "items": [
        { "id": 456, "data": "[email protected]|password" }
      ],
      "created_at": "2026-05-30T03:00:00+07:00"
    }
  },
  "meta": { "timestamp": "2026-05-30T03:00:00+07:00", "version": "v1" }
}

หมายเหตุ

  • Endpoint นี้เป็นการซื้อจริงและมีการตัดยอดเงิน
  • ควรเรียก /products หรือ /products/{id} ก่อน เพื่อเช็ค stock และราคา
GET /api/v1/orders/{history_id}

ดูรายละเอียดคำสั่งซื้อ

API Key

ใช้ดึงข้อมูลคำสั่งซื้อย้อนหลังของบัญชีเดียวกับ API Key

Parameters / Query

Parameter Type Required Description
history_id integer บังคับ รหัสคำสั่งซื้อจาก response ตอนสร้าง order

Example Request

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://acc-market.net/api/v1/orders/123"

Example Response

{
  "ok": true,
  "data": {
    "order": {
      "order_id": "ORD-000123",
      "history_id": 123,
      "total": 3,
      "items": [
        { "id": 456, "product_id": 1, "data": "[email protected]|password" }
      ],
      "created_at": "2026-05-30T03:00:00+07:00"
    }
  },
  "meta": { "timestamp": "2026-05-30T03:00:00+07:00", "version": "v1" }
}

หมายเหตุ

  • ระบบจะคืนเฉพาะ order ของบัญชีตัวเองเท่านั้น

Error Codes

400

ข้อมูลที่ส่งมาไม่ถูกต้อง

401

API Key ไม่ถูกต้องหรือไม่ได้ส่งมา

403

IP ไม่อยู่ใน whitelist

402

ยอดเงินไม่พอ

409

สินค้าไม่เพียงพอ

429

เรียก API ถี่เกินไป

502

API ต้นทางสั่งซื้อไม่สำเร็จ

503

ยังไม่ได้ตั้งค่า API ต้นทาง

500

ระบบเกิดข้อผิดพลาด