ขีดจำกัดอัตราการเรียก
เพื่อรับประกันประสิทธิภาพและความน่าเชื่อถือของ PayerScan API สำหรับร้านค้าทุกราย เราบังคับใช้ขีดจำกัดอัตราการเรียก API ด้วยโครงสร้างควบคุมแบบคู่ (Burst และ Sustained)
ขอบเขตการจำกัด
ขีดจำกัดอัตราการเรียกใช้ ต่อ API Key หากไม่มี API Key จะใช้ที่อยู่ IP แทน หมายความว่า:
- หลายเซิร์ฟเวอร์ที่ใช้ API Key เดียวกัน แชร์ขีดจำกัดร่วมกัน
- ร้านค้าต่างกันที่มี API Key ต่างกัน มีขีดจำกัดอิสระ
API สร้างใบแจ้งหนี้ (POST /payment/crypto)
| ประเภทขีดจำกัด | เกณฑ์ |
|---|---|
| Burst (สูงสุดทันที) | 5 คำขอ / วินาที |
| Sustained | 60 คำขอ / นาที |
API ตรวจสอบใบแจ้งหนี้ (GET /invoice/:trans_id)
| ประเภทขีดจำกัด | เกณฑ์ |
|---|---|
| Burst (สูงสุดทันที) | 20 คำขอ / วินาที |
| Sustained | 200 คำขอ / นาที |
เมื่อเกินขีดจำกัด
หากระบบของคุณเกินเกณฑ์ที่กำหนด API จะตอบกลับ:
- HTTP Status Code:
429 Too Many Requests
เกินขีดจำกัด burst (POST /payment/crypto):
{
"status": "error",
"message": "Too many requests per second. Please slow down.",
"error_code": "RATE_LIMIT_EXCEEDED",
"limit_type": "burst",
"retry_after_seconds": 1
}
เกินขีดจำกัด sustained (POST /payment/crypto):
{
"status": "error",
"message": "Rate limit exceeded. Maximum 60 requests per minute.",
"error_code": "RATE_LIMIT_EXCEEDED",
"limit_type": "sustained",
"retry_after_seconds": 60
}
ค่า message และ retry_after_seconds แตกต่างกันตาม endpoint เช่น endpoint GET จะตอบกลับ "Maximum 200 requests per minute." พร้อม "retry_after_seconds": 60
Header ขีดจำกัดอัตราการเรียก
API ส่ง header ขีดจำกัดอัตราการเรียกมาตรฐานในทุก response:
| Header | คำอธิบาย |
|---|---|
RateLimit-Limit | จำนวนคำขอสูงสุดที่อนุญาตในหน้าต่างปัจจุบัน |
RateLimit-Remaining | จำนวนคำขอที่เหลือในหน้าต่างปัจจุบัน |
RateLimit-Reset | เวลา (วินาที) จนกว่าหน้าต่างขีดจำกัดจะรีเซ็ต |
ใช้ header เหล่านี้เพื่อตรวจสอบการใช้งานและหลีกเลี่ยงการเกินขีดจำกัด
กำหนดค่ากลไก Exponential Backoff ในไลบรารีคำขอของคุณ (เช่น Axios-retry) เพื่อลองใหม่อัตโนมัติหลังจากค่า retry_after_seconds เมื่อพบข้อผิดพลาด HTTP 429