สำหรับร้านตัวแทน
คู่มือ Partner API
ให้เว็บหรือบอทของร้านคุณสั่งซื้อจากเราได้เอง ตัดเงินจากยอดมัดจำหรือวงเงินเครดิต ได้ข้อมูลบัญชีกลับมาทันที
เริ่มต้น
- สมัครเป็นตัวแทนที่หน้า "เปิดร้านกับเรา" และรอร้านอนุมัติ
- ติดต่อร้านผ่านหน้าช่วยเหลือเพื่อขอเปิด API ร้านจะสร้างคีย์และรหัสยืนยัน webhook ให้
- เติมมัดจำ หรือตกลงวงเงินเครดิตและรอบวางบิลกับร้าน
การยืนยันตัวตน
ทุกคำขอต้องมีหัว 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 และอีเมลจากบริการดูได้จากหน้าสินค้าของฉันในบัญชีตัวแทนของคุณ