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

คู่มือ Partner API

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

เริ่มต้น

  1. สมัครเป็นตัวแทนที่หน้า "เปิดร้านกับเรา" และรอร้านอนุมัติ
  2. ติดต่อร้านผ่านหน้าช่วยเหลือเพื่อขอเปิด API ร้านจะสร้างคีย์และรหัสยืนยัน webhook ให้
  3. เติมมัดจำ หรือตกลงวงเงินเครดิตและรอบวางบิลกับร้าน

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

ทุกคำขอต้องมีหัว Authorization แบบ Bearer เก็บคีย์ไว้ฝั่งเซิร์ฟเวอร์เท่านั้น ห้ามใส่ในหน้าเว็บหรือแอป

curl https://api.luminapluspremium.com/api/v1/partner/v1/balance \
  -H "Authorization: Bearer lp_live_xxxxxxxxxxxxxxxx"

คำสั่งทั้งหมด

  • GET /partner/v1/productsสินค้า ราคาส่งของคุณ และสต๊อกคงเหลือ (null = ร้านส่งให้เอง ไม่มีจำนวน)
  • GET /partner/v1/balanceยอดคงเหลือ วงเงินเครดิต ยอดที่สั่งได้อีก และยอดค้างชำระ
  • POST /partner/v1/ordersสั่งซื้อ: variantId, quantity, reference (เลขอ้างอิงของคุณ ส่งซ้ำได้ไม่สั่งซ้ำ), inviteEmail (เฉพาะแพ็กเกจเชิญอีเมล)
  • GET /partner/v1/ordersรายการสั่งซื้อ ล่าสุดก่อน (limit, offset)
  • GET /partner/v1/orders/:idคำสั่งซื้อพร้อมข้อมูลบัญชีที่ส่งให้ (เฉพาะที่ยังใช้งานได้)
  • GET /partner/v1/statement?from=&to=ใบวางบิลของช่วงเวลา (ISO 8601)
curl -X POST https://api.luminapluspremium.com/api/v1/partner/v1/orders \
  -H "Authorization: Bearer lp_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"variantId":"<variantId>","quantity":1,"reference":"SHOP-10023"}'

# 201
{"data":{"id":"…","orderNumber":"LPAPI20261026-1A2B3C4D","reference":"SHOP-10023",
 "status":"FULFILLED","total":"80.00","items":[{"productName":"Netflix","variantName":"30 วัน",
 "deliveries":[{"status":"ACTIVE","expiresAt":"…","seat":"จอ 3",
 "credential":{"email":"…","password":"…"}}]}]},"replayed":false}

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

  • 401 API_KEY_REQUIRED / API_KEY_INVALID · ไม่มีคีย์ คีย์ถูกยกเลิก หรือบัญชีถูกระงับ
  • 402 INSUFFICIENT_BALANCE · ยอดไม่พอ ดูค่า needed และ available ในคำตอบ
  • 404 VARIANT_NOT_AVAILABLE · แพ็กเกจปิดการขายหรือไม่มีอยู่
  • 409 OUT_OF_STOCK · สต๊อกหมด ไม่มีการตัดเงิน
  • 400 QUANTITY_LIMIT · สั่งเกินจำนวนต่อครั้ง ดูค่า max

แจ้งผลกลับ (webhook)

เมื่อคำสั่งซื้อส่งของแล้ว ระบบจะ POST ไปที่ลิงก์ของคุณ ตรวจลายเซ็นก่อนเชื่อทุกครั้ง แล้วค่อยดึงข้อมูลบัญชีด้วย GET /partner/v1/orders/:id ถ้าตอบไม่สำเร็จ ระบบจะลองใหม่ทุกนาทีนาน 1 วัน

POST <your webhook URL>
X-LuminaPlus-Timestamp: 1767225600
X-LuminaPlus-Signature: sha256=<hex>

{"event":"order.delivered","orderId":"…","orderNumber":"…","reference":"SHOP-10023","status":"FULFILLED"}

// Node.js
const expected = "sha256=" + crypto.createHmac("sha256", WEBHOOK_SECRET)
  .update(timestamp + "." + rawBody).digest("hex");
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))
  && Math.abs(Date.now() / 1000 - Number(timestamp)) < 300;

มัดจำ เครดิต และการวางบิล

ทุกคำสั่งซื้อตัดจากยอดคงเหลือ ถ้ามีวงเงินเครดิต ยอดติดลบได้ถึงวงเงินนั้น คำสั่งซื้อที่คืนเงินหรือยกเลิกจะคืนยอดให้อัตโนมัติ ร้านวางบิลตามรอบที่ตกลงกัน

ปัญหาและการเคลม

ร้านตัวแทนติดต่อเราได้โดยตรงที่หน้าช่วยเหลือ เรื่องจากร้านตัวแทนจะถึงร้านเป็นอันดับแรก รหัส OTP และอีเมลจากบริการดูได้จากหน้าสินค้าของฉันในบัญชีตัวแทนของคุณ