สำหรับตัวแทน

เอกสาร API ซื้อสินค้า

เชื่อมต่อเว็บ SHOPCLONE7 เดิมที่ซื้อผ่าน POST หรือพัฒนาระบบ reseller ใหม่ โดยใช้รหัสอ้างอิงเดิมป้องกันการซื้อซ้ำ และตรวจสถานะออเดอร์ การส่งมอบ และยอดคืนผ่าน order_status.php

รับ API Key สมัคร Master Reseller
โดเมนhttps://adswar.co

เริ่มเชื่อมต่อ API

เติมเครดิตเข้าวอลเล็ตหนึ่งครั้งตั้งแต่ 1,000 บาท เพื่อเริ่มใช้งาน API ไม่นับยอดเติมหลายครั้งรวมกัน

เครดิตใช้ซื้อสินค้าได้ตามปกติ ไม่ใช่ค่าธรรมเนียม เมื่อผ่านเงื่อนไขแล้วไม่ต้องคงยอด 1,000 บาทไว้

การสมัคร Master Reseller เป็นอีกส่วนหนึ่ง ไม่จำเป็นต้องสมัครเพื่อใช้ API

Master Reseller

ส่งข้อมูลเว็บไซต์และช่องทางติดต่อเพื่อให้แอดมินตรวจสอบ ระบบจะแจ้งผลทางอีเมลบัญชีของคุณ

สมัคร Master Reseller
  1. 1

    รับ API Key

    เข้าสู่ระบบ เติมเครดิตเข้าวอลเล็ตหนึ่งครั้งตั้งแต่ 1,000 บาท แล้วไปที่ บัญชี › API ซื้อสินค้า เพื่อสร้างคีย์และระบุ IP เซิร์ฟเวอร์ของเว็บไซต์คุณ

  2. 2

    เชื่อมต่อเว็บไซต์

    ใช้โดเมนและ API Key นี้ที่เซิร์ฟเวอร์ของคุณ บันทึก client_order_id ที่แน่นอนก่อนส่งคำขอซื้อใหม่ทุกครั้ง

  3. 3

    ซิงค์และขายสินค้า

    ซิงค์สินค้าและราคา ชำระด้วยยอดกระเป๋า แล้วตรวจจำนวนที่ได้รับก่อนส่งมอบออเดอร์ให้ลูกค้า

การยืนยันตัวตน

ส่ง header X-API-Key จากเซิร์ฟเวอร์ หรือใช้ api_key ใน query/body แบบเดิม การซื้อรับเฉพาะ POST แบบ multipart, urlencoded หรือ JSON ส่วน GET /api/buy_product จะตอบ 405 เก็บคีย์ให้พ้นจากโค้ดเบราว์เซอร์และ log

curl -X POST "https://adswar.co/api/buy_product?lang=th" \
  -H "X-API-Key: YOUR_API_KEY" \
  --data-urlencode "action=buyProduct" \
  --data-urlencode "id=12" --data-urlencode "amount=2" \
  --data-urlencode "client_order_id=SHOP-20261018-0001"

ป้องกันการซื้อซ้ำและกู้ผลรายการเดิม

  1. บันทึก client_order_id ที่ไม่ซ้ำก่อนส่ง POST เมื่อส่งซ้ำต้องใช้ id, amount และ coupon เดิม โดย replayed=true หมายถึงคืนผลออเดอร์ที่มีอยู่และไม่หักเงินเพิ่ม การซื้อแบบเดิมที่ไม่ส่งรหัสอ้างอิงจะไม่มีการป้องกันซื้อซ้ำ
  2. หาก POST timeout ให้เรียก GET order_status.php ด้วย client_order_id เดิม แม้ยังไม่ได้รับ trans_id การตอบ 404 อาจเกิดขณะคำขอแรกยังทำงาน ให้เก็บรหัสเดิมและห้ามสร้างรหัสอ้างอิงซื้อใหม่
  3. status="success" ไม่ได้แปลว่าส่งครบ ต้องมี delivery_status=delivered โดย requested_amount และ delivered_amount ตรงกับจำนวนที่สั่งเดิม และ remaining_amount=0 ส่วน data เป็น snapshot ของข้อมูลทั้งหมดในขณะนั้น ให้แทน snapshot เดิม ไม่ต่อท้ายข้อมูลซ้ำ
  4. currency และ total เป็นข้อมูลออเดอร์ ADSWAR ส่วน refunded_total คือยอดคืนที่สำเร็จใน ADSWAR และ wallet_refunded_total คือยอดคืนเข้ากระเป๋า ADSWAR ไม่ใช่การคืนเงินให้ลูกค้าบนเว็บคุณโดยอัตโนมัติ และ remaining_amount ไม่ใช่จำนวนที่ยืนยันว่าคืนเงินได้แล้ว

delivery_status: pending = รอส่ง, partial = ได้บางส่วน, delivered = ครบแล้ว, cancelled = ยกเลิก, refunded = คืนเงินครบ, needs_review = ต้องตรวจสอบ ใช้ poll_after_seconds เพื่อตรวจ pending/partial ต่อ และตรวจสถานะผิดปกติก่อนส่งลูกค้าหรือคืนเงิน

curl --get "https://adswar.co/api/order_status.php" \
  -H "X-API-Key: YOUR_API_KEY" \
  --data-urlencode "lang=th" \
  --data-urlencode "client_order_id=SHOP-20261018-0001"
GET/api/profile.php

ข้อมูลบัญชีและยอดเงินในกระเป๋า

พารามิเตอร์

X-API-Keyจำเป็นAPI Key ใน header นี้ หรือใช้พารามิเตอร์ api_key แบบเดิมแทนได้

ตัวอย่างผลลัพธ์

{
  "status": "success",
  "msg": "Data retrieved successfully!",
  "data": { "username": "reseller01", "money": "1250.5", "currency": "THB" }
}
GET/api/products.php

หมวดหมู่และสินค้า (ราคาตามระดับของคุณ)

พารามิเตอร์

X-API-Keyจำเป็นAPI Key ใน header นี้ หรือใช้พารามิเตอร์ api_key แบบเดิมแทนได้
langไม่บังคับพารามิเตอร์ query สำหรับภาษาของชื่อสินค้าและข้อความ: th, en, vi

ตัวอย่างผลลัพธ์

{
  "status": "success",
  "msg": "Data retrieved successfully!",
  "categories": [
    {
      "id": "1", "parent_id": 0, "name": "Facebook", "icon": "https://.../facebook.png",
      "products": [
        { "id": "12", "name": "Facebook US | 2FA", "price": "35", "amount": 80,
          "description": "...", "flag": "us", "min": "1", "max": "500" }
      ]
    }
  ]
}
GET/api/product.php

ข้อมูลสินค้าหนึ่งรายการ

พารามิเตอร์

X-API-Keyจำเป็นAPI Key ใน header นี้ หรือใช้พารามิเตอร์ api_key แบบเดิมแทนได้
productจำเป็นID สินค้า

ตัวอย่างผลลัพธ์

{
  "status": "success",
  "msg": "Data retrieved successfully!",
  "product": [
    { "id": "12", "name": "Facebook US | 2FA", "price": "35", "amount": 80,
      "description": "...", "flag": "us", "min": 1, "max": 500 }
  ]
}
POST/api/buy_product

ซื้อผ่าน POST: action=buyProduct, id, amount; coupon และ client_order_id ไม่บังคับ

พารามิเตอร์

actionจำเป็นใช้ buyProduct เสมอ
X-API-Keyจำเป็นAPI Key ใน header นี้ หรือใช้พารามิเตอร์ api_key แบบเดิมแทนได้
idจำเป็นID สินค้าที่ต้องการซื้อ
amountจำเป็นจำนวนที่ซื้อ (อยู่ในช่วง min – max ของสินค้า)
couponไม่บังคับโค้ดส่วนลด
client_order_idไม่บังคับแนะนำสำหรับออเดอร์ใหม่: ไม่ซ้ำภายในบัญชี reseller ยาว 1–128 ตัว เริ่มด้วยอักษรอังกฤษหรือตัวเลข ใช้อักษรอังกฤษ ตัวเลข . _ : - ได้ เมื่อส่งซ้ำต้องใช้รหัสอ้างอิง id, amount และ coupon เดิม
Idempotency-Keyไม่บังคับheader ทางเลือกแทน client_order_id หากส่งทั้งสองต้องมีค่าเดียวกัน

ตัวอย่างผลลัพธ์

{
  "status": "success",
  "msg": "Order created successfully!",
  "trans_id": "AW261012A6YQJM7H",
  "client_order_id": "SHOP-20261018-0001",
  "replayed": false,
  "order_status": "COMPLETED",
  "payment_status": "PAID",
  "delivery_status": "delivered",
  "requested_amount": 2,
  "delivered_amount": 2,
  "remaining_amount": 0,
  "currency": "THB",
  "total": "70.00",
  "refunded_total": "0.00",
  "wallet_refunded_total": "0.00",
  "poll_after_seconds": null,
  "data": ["demo_user_01|demo_password_01", "demo_user_02|demo_password_02"]
}
GET/api/order.php

ตรวจข้อมูลส่งมอบแบบเดิม ตอบ 404 หากยังไม่มีบัญชีพร้อมส่ง

พารามิเตอร์

X-API-Keyจำเป็นAPI Key ใน header นี้ หรือใช้พารามิเตอร์ api_key แบบเดิมแทนได้
orderจำเป็นรหัสคำสั่งซื้อ (trans_id) ที่ได้รับตอนซื้อ

ตัวอย่างผลลัพธ์

{
  "status": "success",
  "msg": "Order retrieved successfully!",
  "trans_id": "AW261012A6YQJM7H",
  "data": ["uid|password|2fa", "uid|password|2fa"]
}
GET/api/order_status.php

สถานะออเดอร์ การชำระเงิน การส่งมอบ และยอดคืน โดยใช้ order หรือ client_order_id

พารามิเตอร์

X-API-Keyจำเป็นAPI Key ใน header นี้ หรือใช้พารามิเตอร์ api_key แบบเดิมแทนได้
orderไม่บังคับรหัสออเดอร์ trans_id หรือส่ง client_order_id ต้องมีอย่างน้อยหนึ่งค่า หากส่งทั้งสองต้องอ้างถึงออเดอร์เดียวกัน
client_order_idไม่บังคับรหัสอ้างอิงที่ส่งตอนซื้อ หรือใช้ order แทน รหัสอ้างอิงตรวจได้ภายในบัญชี reseller ของคุณเท่านั้น
langไม่บังคับพารามิเตอร์ query สำหรับภาษาของชื่อสินค้าและข้อความ: th, en, vi

ตัวอย่างผลลัพธ์

{
  "status": "success",
  "msg": "Order retrieved successfully!",
  "trans_id": "AW261012A6YQJM7H",
  "client_order_id": "SHOP-20261018-0001",
  "replayed": false,
  "order_status": "CONFIRMED",
  "payment_status": "PAID",
  "delivery_status": "partial",
  "requested_amount": 2,
  "delivered_amount": 1,
  "remaining_amount": 1,
  "currency": "THB",
  "total": "70.00",
  "refunded_total": "0.00",
  "wallet_refunded_total": "0.00",
  "poll_after_seconds": 5,
  "data": ["demo_user_01|demo_password_01"]
}

รหัสข้อผิดพลาด

ข้อผิดพลาดมี status="error", msg, error_code และรหัส HTTP ให้ตัดสินใจจากฟิลด์ข้อมูล เพราะข้อความอาจเปลี่ยนตามภาษา

{ "status": "error", "msg": "...", "error_code": "IDEMPOTENCY_CONFLICT" }
  • 400ขาดพารามิเตอร์ ID หรือจำนวนไม่ถูกต้อง สินค้าไม่พอ
  • 401API Key ไม่ถูกต้องหรือบัญชีถูกล็อก
  • 402ยอดเงินในกระเป๋าไม่พอ
  • 403IP ไม่อยู่ในรายการที่อนุญาต (มี client_ip แนบมา)
  • 404ไม่พบสินค้าหรือออเดอร์ ส่วน order.php แบบเดิมอาจตอบ 404 เมื่อยังไม่มีข้อมูลพร้อมส่ง
  • 405endpoint ซื้อสินค้ารับเฉพาะ POST
  • 409IDEMPOTENCY_CONFLICT: รหัสอ้างอิงเคยใช้กับข้อมูลการซื้ออื่น ให้ตรวจออเดอร์เดิม
  • 429ทำรายการเร็วเกินไป กรุณารอสักครู่
  • 503API หรือข้อมูลส่งมอบไม่พร้อม หรือออเดอร์ปิดแล้ว รหัสนี้เพียงอย่างเดียวไม่ได้ยืนยันว่าคืนเงิน ต้องตรวจออเดอร์เดิม

หมายเหตุ

  • ราคาที่ส่งกลับคือราคาตามระดับของคุณ คิดเป็นสกุลเงินหลักของร้าน
  • คำสั่งซื้อชำระด้วยยอดเงินในกระเป๋า — เติมเงินก่อนที่หน้าเติมเงิน
  • จัดคิวซื้อทีละรายการต่อบัญชี reseller เมื่อพบ 429 ให้ใช้ Retry-After หรือ retry_after_seconds หากมี และลดความถี่การเรียก
  • ใช้ order_status.php ตรวจออเดอร์ที่รอส่งหรือปิดแล้ว ออเดอร์ที่มีอยู่ตอบ data=[] ได้ ส่วน order.php แบบเดิมยังตอบ 404 เมื่อไม่มีบัญชี การยังไม่พบรหัสอ้างอิงไม่ได้ยืนยันว่าคำขอที่ทำงานอยู่จะไม่สร้างออเดอร์ภายหลัง