เริ่มต้นใช้งาน
สภาพแวดล้อม โฮสต์ที่ต้องเรียก และหลักการพื้นฐานเรื่องจำนวนเงิน เวลา และสกุลเงิน
สร้างจาก public-api.md โดยอัตโนมัติเวอร์ชัน 1.2.0ปรับปรุงล่าสุด 2026-09-20
#Environment
ชื่อแบรนด์และโดเมนกำหนดผ่านตัวแปรสภาพแวดล้อม (BRAND_DOMAIN ดู docs/rebranding.md)
เอกสารนี้จึงเขียนโฮสต์เป็นตัวแทน <domain> ไว้ สำหรับแบรนด์ที่ให้บริการอยู่ตอนนี้
<domain> คือ paymenow.asia
| Environment | Base URL | ค่าที่ใช้จริง | ข้อมูล |
|---|---|---|---|
| Production | https://api.<domain>/v1 | https://api.paymenow.asia | รายการจริง รับ-จ่ายเงินจริง |
| Sandbox | https://sandbox-api.<domain>/v1 | https://sandbox-api.paymenow.asia | รายการจำลอง ไม่มีเงินจริง |
การเลือก sandbox ใช้ชื่อโฮสต์เท่านั้น ไม่ใช่ path และไม่ใช่ header เกตเวย์ปลายทาง
จะส่งทุกโฮสต์ที่ขึ้นต้นด้วย sandbox ไปยังอินสแตนซ์ sandbox ของ API
(ตรวจด้วย regex ^sandbox[a-z0-9-]*\.) ส่วนโฮสต์อื่นทั้งหมดไปที่ production
และระบบจะไม่เขียน path ใหม่เลย เพราะลายเซ็น HMAC ครอบคลุม path ด้วย
API key ของคุณต้องตรงกับ environment ที่เรียกใช้ หากนำคีย์ของร้านค้า sandbox ไปเรียกบนโฮสต์
production จะยืนยันตัวตนผ่าน แต่ทำงานบนเส้นทางของ production ส่วนคีย์ production บนโฮสต์
sandbox ก็จะทำงานบนอินสแตนซ์ sandbox ให้จับคู่คีย์ pk_demo_… กับ sandbox-api.<domain>
และคีย์ pk_prod_… กับ api.<domain> เสมอ
#ภาพรวม (Overview)
Public API ให้ร้านค้าเชื่อมต่อความสามารถด้านการรับ-จ่ายเงินเข้ากับระบบของตัวเองได้ ทุกคำขอต้องยืนยันตัวตนด้วย HMAC-SHA256
#Production กับ Sandbox
ประเภทของร้านค้า (ตั้งไว้ที่บัญชีร้านค้าของคุณ) เป็นตัวกำหนดเส้นทางของรายการ:
- ร้านค้าแบบ Production: เป็นรายการเงินจริง ประมวลผลผ่านผู้ให้บริการชำระเงิน และข้อมูลถูกบันทึกในตารางรายการของ production
- ร้านค้าแบบ Sandbox: เป็นรายการจำลอง ระบบสร้าง response ขึ้นเองโดยไม่เรียกผู้ให้บริการใด และข้อมูลถูกบันทึกในตาราง sandbox แยกต่างหาก ส่วน QR ที่ได้กลับมาเป็นของจำลอง ไม่ใช่ PromptPay ที่สแกนได้จริง
ทุก response จะมี header X-Environment (sandbox หรือ production) กำกับ
คุณจึงตรวจสอบได้ว่ากำลังคุยกับฝั่งไหน และ response ของ sandbox จะมี
X-Sandbox-Mode: true เพิ่มมาด้วย
#จำนวนเงิน เวลา และสกุลเงิน
- จำนวนเงินทั้งหมดเป็น THB ฟิลด์
currencyถูกตรวจแค่ความยาวและเก็บตามที่ส่งมา ระบบไม่มีการแปลงสกุลเงินและไม่ประมวลผลสกุลเงินอื่น - จำนวนเงินเป็นตัวเลขใน JSON ทศนิยม 2 ตำแหน่ง ส่วนค่าธรรมเนียมใช้การตัดทศนิยมทิ้ง (ไม่ใช่ปัดเศษ) ที่ 2 ตำแหน่ง
- timestamp ใน response เป็น RFC 3339 ตามเวลา Asia/Bangkok (
+07:00) เช่น2026-09-20T17:32:05+07:00ค่านี้เป็นเวลาแบบ ISO-8601 ตามมาตรฐาน ตัวแปลงวันที่ทั่วไปอ่านได้เหมือนเดิม ต่างจากรูปแบบZที่ใช้ก่อนวันที่ 20 ก.ย. 2026 เฉพาะส่วน offset เท่านั้น วันทำการยึดตามเวลา Asia/Bangkok ดังนั้นส่วนวันที่ของ timestamp คือวันทำการไทยแล้ว
หน้านี้แปลจากเอกสารต้นฉบับภาษาอังกฤษ ส่วนที่เป็นค่าทางเทคนิค — path, ชื่อฟิลด์, header, รหัสข้อผิดพลาด และชื่อคอลัมน์ในไฟล์ส่งออก — คงไว้เป็นภาษาอังกฤษตามที่ระบบใช้จริง

