สำหรับตัวแทน
เอกสาร API ซื้อสินค้า
เชื่อมต่อเว็บ SHOPCLONE7 เดิมที่ซื้อผ่าน POST หรือพัฒนาระบบ reseller ใหม่ โดยใช้รหัสอ้างอิงเดิมป้องกันการซื้อซ้ำ และตรวจสถานะออเดอร์ การส่งมอบ และยอดคืนผ่าน order_status.php
เริ่มเชื่อมต่อ API
เติมเครดิตเข้าวอลเล็ตหนึ่งครั้งตั้งแต่ 1,000 บาท เพื่อเริ่มใช้งาน API ไม่นับยอดเติมหลายครั้งรวมกัน
เครดิตใช้ซื้อสินค้าได้ตามปกติ ไม่ใช่ค่าธรรมเนียม เมื่อผ่านเงื่อนไขแล้วไม่ต้องคงยอด 1,000 บาทไว้
การสมัคร Master Reseller เป็นอีกส่วนหนึ่ง ไม่จำเป็นต้องสมัครเพื่อใช้ API
Master Reseller
ส่งข้อมูลเว็บไซต์และช่องทางติดต่อเพื่อให้แอดมินตรวจสอบ ระบบจะแจ้งผลทางอีเมลบัญชีของคุณ
สมัคร Master Reseller- 1
รับ API Key
เข้าสู่ระบบ เติมเครดิตเข้าวอลเล็ตหนึ่งครั้งตั้งแต่ 1,000 บาท แล้วไปที่ บัญชี › API ซื้อสินค้า เพื่อสร้างคีย์และระบุ IP เซิร์ฟเวอร์ของเว็บไซต์คุณ
- 2
เชื่อมต่อเว็บไซต์
ใช้โดเมนและ API Key นี้ที่เซิร์ฟเวอร์ของคุณ บันทึก client_order_id ที่แน่นอนก่อนส่งคำขอซื้อใหม่ทุกครั้ง
- 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"
ป้องกันการซื้อซ้ำและกู้ผลรายการเดิม
- บันทึก client_order_id ที่ไม่ซ้ำก่อนส่ง POST เมื่อส่งซ้ำต้องใช้ id, amount และ coupon เดิม โดย replayed=true หมายถึงคืนผลออเดอร์ที่มีอยู่และไม่หักเงินเพิ่ม การซื้อแบบเดิมที่ไม่ส่งรหัสอ้างอิงจะไม่มีการป้องกันซื้อซ้ำ
- หาก POST timeout ให้เรียก GET order_status.php ด้วย client_order_id เดิม แม้ยังไม่ได้รับ trans_id การตอบ 404 อาจเกิดขณะคำขอแรกยังทำงาน ให้เก็บรหัสเดิมและห้ามสร้างรหัสอ้างอิงซื้อใหม่
- status="success" ไม่ได้แปลว่าส่งครบ ต้องมี delivery_status=delivered โดย requested_amount และ delivered_amount ตรงกับจำนวนที่สั่งเดิม และ remaining_amount=0 ส่วน data เป็น snapshot ของข้อมูลทั้งหมดในขณะนั้น ให้แทน snapshot เดิม ไม่ต่อท้ายข้อมูลซ้ำ
- 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"
/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" }
}/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" }
]
}
]
}/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 }
]
}/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"]
}/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"]
}/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 เมื่อไม่มีบัญชี การยังไม่พบรหัสอ้างอิงไม่ได้ยืนยันว่าคำขอที่ทำงานอยู่จะไม่สร้างออเดอร์ภายหลัง