Sandbox
การทำงานของ sandbox ยอดทดสอบ สถานการณ์จำลอง และ endpoint ช่วยทดสอบ
สร้างจาก public-api.md โดยอัตโนมัติเวอร์ชัน 1.2.0ปรับปรุงล่าสุด 2026-09-20
#การทดสอบด้วย Sandbox
#Sandbox ทำงานอย่างไร
Sandbox เกิดจากสองอย่างประกอบกัน คือ บัญชีร้านค้าแบบ sandbox และ โฮสต์ sandbox:
- เรียกไปที่
https://sandbox-api.<domain>/v1/…(ปัจจุบันคือhttps://sandbox-api.paymenow.asia) - ใช้ข้อมูลยืนยันตัวตนของ sandbox (
pk_demo_…/sk_demo_…)
รายการใน sandbox ถูกเก็บในตารางแยกต่างหาก ไม่เคยถูกส่งถึงผู้ให้บริการชำระเงินจริง
และคืน payload ของ QR แบบจำลอง (ไม่มี qr_code_image) ส่วนการเข้าและตัดยอดคงเหลือ
ทำงานเหมือนจริง การถอนใน sandbox จึงยังต้องมียอดคงเหลือใน sandbox ด้วย
ติดต่อฝ่ายสนับสนุนเพื่อขอข้อมูลยืนยันตัวตนของ sandbox
#จำนวนเงินสำหรับทดสอบ
ใน sandbox จำนวนเงินบางค่าจะให้ผลลัพธ์ที่กำหนดไว้ตายตัว:
| จำนวนเงิน | ผลของการรับเงิน | ผลของการจ่ายเงินออก |
|---|---|---|
100.00 | completed | completed |
500.00 | completed | completed |
1000.00 | completed | completed |
200.00 | pending | processing (ค่าเริ่มต้น) |
999.99 | failed | failed |
| ค่าอื่น ๆ | pending | processing |
ตัวช่วย
/sandbox/test-amountsยังแสดง888.88ว่าเป็นตัวกระตุ้นtimeoutอยู่ แต่ความจริงยังไม่ได้ทำไว้ ค่า888.88ทำงานเหมือนจำนวนเงินอื่นทุกประการ ให้ใช้ headerX-Sandbox-Scenario: timeoutแทน
อย่าลืมว่าขั้นต่ำเด็ดขาด (รับเงิน 50 บาท จ่ายเงินออก 100 บาท) มีผลใน sandbox ด้วย
ค่า 100.00 จึงเป็นยอดทดสอบการรับเงินที่น้อยที่สุดที่ใช้ได้จริง
#สถานการณ์ทดสอบ
สั่งผลลัพธ์ที่ต้องการได้ด้วย header X-Sandbox-Scenario ซึ่งมีผลเหนือกว่าการกำหนดด้วยจำนวนเงิน
และจะถูกละเว้นสำหรับร้านค้าแบบ production
| สถานการณ์ | การรับเงิน | การจ่ายเงินออก |
|---|---|---|
auto_approve | completed | completed |
auto_fail | failed | failed |
auto_pending | pending | processing |
timeout | คำขอค้างราว 35 วินาที แล้วได้ 504 TIMEOUT | เหมือนกัน |
invalid_account | (ไม่มีผล) | 400 INVALID_ACCOUNT |
เมื่อรายการรับเงินใน sandbox เข้าสู่ completed หรือ failed ทันทีและคุณส่ง webhook_url
มาด้วย ระบบจะยิง webhook เหมือนกับใน production ตัวรับ webhook ของคุณจึงทดสอบได้ครบวงจร
ตัวอย่าง:
curl -X POST https://sandbox-api.paymenow.asia/v1/payments/deposit \
-H "X-Sandbox-Scenario: auto_approve" \
-H "X-API-Key: your_sandbox_api_key" \
-H "X-Signature: ..." \
-H "X-Timestamp: ..." \
-H "Content-Type: application/json" \
-d '{"amount": 500.00, "currency": "THB", "reference_id": "TEST-001", "bank_code": "004", "bank_account_no": "1234567890", "bank_account_name": "Test Payer"}'#endpoint ตัวช่วยของ sandbox
ให้บริการเฉพาะบนโฮสต์ sandbox และ ไม่ต้องยืนยันตัวตน:
| Endpoint | คืนค่าอะไร |
|---|---|
GET /sandbox/test | ยืนยันว่าโหมด sandbox ทำงานอยู่ |
GET /sandbox/credentials | ตัวอย่างข้อมูลยืนยันตัวตนแบบคงที่ (ไว้ดูเป็นตัวอย่าง ใช้งานจริงไม่ได้) |
GET /sandbox/test-amounts | ตารางจำนวนเงินทดสอบ (ดูข้อควรระวังเรื่อง 888.88 ด้านบน) |
จำกัดที่ 300 คำขอต่อนาทีต่อหนึ่ง IP ที่ชั้นเกตเวย์
#Header ใน Response
| Header | ค่า | คำอธิบาย |
|---|---|---|
X-Environment | sandbox หรือ production | ฝั่งใดเป็นผู้ตอบคำขอนี้ |
X-Sandbox-Mode | true | เฉพาะร้านค้าแบบ sandbox |
X-Request-ID | ข้อความทึบ | รหัสสำหรับติดตาม สะท้อนค่า X-Request-ID ที่คุณส่งมา (ถ้ามี) |
หน้านี้แปลจากเอกสารต้นฉบับภาษาอังกฤษ ส่วนที่เป็นค่าทางเทคนิค — path, ชื่อฟิลด์, header, รหัสข้อผิดพลาด และชื่อคอลัมน์ในไฟล์ส่งออก — คงไว้เป็นภาษาอังกฤษตามที่ระบบใช้จริง

