Appearance
Authentication
ทุก endpoint ใน Dealer API ต้องผ่านการ authenticate ด้วย 2 headers พร้อมกัน
Required Headers
| Header | ประเภท | คำอธิบาย |
|---|---|---|
x-partner-id | string | Partner ID ที่ได้รับจากทาง P2W Topup |
x-signature | string | HMAC-SHA256 signature (hex) |
การสร้าง HMAC Signature
Algorithm
secretKey จะได้รับจากทาง P2W Topup
HMAC-SHA256(secretKey, payload)Payload String
{METHOD}|{PATH}|{RAW_BODY}| ส่วน | คำอธิบาย | ตัวอย่าง |
|---|---|---|
{METHOD} | HTTP method ตัวพิมพ์ใหญ่ | GET, POST |
{PATH} | PATH ของ API ที่เรียกใช้งาน | /api/v1/orders |
{RAW_BODY} | Raw request body (string) สำหรับ GET ใช้ {} | {"packageID":"abc"} |
ตัวอย่าง (Node.js)
javascript
const crypto = require('crypto');
// --- GET Request ---
const method = 'GET';
const path = '/api/v1/games';
const body = '{}'; // GET ใช้ {} เสมอ
const secretKey = 'your_secret_key';
const payload = `${method}|${path}|${body}`;
const signature = crypto
.createHmac('sha256', secretKey)
.update(payload)
.digest('hex');
// ใช้ signature นี้ใน header x-signaturejavascript
const crypto = require('crypto');
// --- POST Request ---
const method = 'POST';
const path = '/api/v1/orders';
const body = JSON.stringify({ packageID: 'PKG001', refID: 'REF123', topupInfo: { uid: '123456' } });
const secretKey = 'your_secret_key';
const payload = `${method}|${path}|${body}`;
const signature = crypto
.createHmac('sha256', secretKey)
.update(payload)
.digest('hex');
// ใช้ signature นี้ใน header x-signatureตัวอย่าง Request
http
GET /api/v1/games HTTP/1.1
Host: your-host.com
x-partner-id: ABCD1234EF567890
x-signature: a3f8c2d1e4b7a9f0...http
POST /api/v1/orders HTTP/1.1
Host: your-host.com
Content-Type: application/json
x-partner-id: ABCD1234EF567890
x-signature: d9e1f3a2b4c8071e...
{
"packageID": "PKG001",
"refID": "REF123",
"topupInfo": { "uid": "123456" }
}Error Responses
| Code | HTTP | คำอธิบาย |
|---|---|---|
MISSING_PARTNER_ID | 401 | ไม่มี header x-partner-id |
VENDOR_NOT_FOUND | 401 | ไม่พบ Partner ID ในระบบ |
VENDOR_INACTIVE | 403 | Vendor ถูก deactivate |
IP_NOT_WHITELISTED | 403 | IP ไม่ได้อยู่ใน whitelist |
MISSING_SIGNATURE | 401 | ไม่มี header x-signature |
INVALID_SIGNATURE | 401 | Signature ไม่ถูกต้อง |
