เพิ่งเริ่มเชื่อมต่อ? เปิด Starter Guide · ทดสอบฝาก–ถอนด้วย Local Sandbox →
Quest Production — คู่มือเชื่อมต่อฝากและถอน · อ่าน API spec และดาวน์โหลด OpenAPI ฉบับรวม

Merchant Integration · v1

Gateway API Reference

คู่มือหลังบ้านภาษาไทย → · เข้าสู่ระบบ

คู่มือเชื่อมต่อระบบรับชำระเงินสำหรับร้านค้า — สร้างรายการ รับ QR PromptPay และรับแจ้งผลผ่าน webhook

Base URL https://gateway.alphaquestcom.com Auth X-Api-Key Callback IP 18.136.50.160
สารบัญ
  1. คู่มือหลังบ้านภาษาไทย
  2. การยืนยันตัวตน
  3. ภาพรวมการทำงาน
  4. สร้างรายการชำระเงิน
  5. ดูสถานะรายการ
  6. ยกเลิกรายการ
  7. ดูยอดคงเหลือ
  8. Webhook (แจ้งผล)
  9. รหัสข้อผิดพลาด

1. การยืนยันตัวตน

ทุก request ที่ขึ้นต้นด้วย /v1/ ต้องแนบ API key ของร้านใน header:

X-Api-Key: gw_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
เก็บ key เป็นความลับ — key ขึ้นต้น gw_live_ ใช้ฝั่งเซิร์ฟเวอร์เท่านั้น ห้ามฝังในเว็บ/แอปฝั่งลูกค้า หากรั่วให้แจ้งเพื่อ rotate ทันที (ระบบออก key ใหม่พร้อม webhook secret ใหม่ในคราวเดียว — key เดิมและ secret เดิมใช้ไม่ได้ทันที)

2. ภาพรวมการทำงาน

Idempotency: ทุกครั้งที่สร้างรายการต้องแนบ header Idempotency-Key (สตริงไม่ซ้ำต่อ 1 ออร์เดอร์ เช่นเลขออร์เดอร์ของร้าน) — ยิงซ้ำด้วย key เดิมจะได้รายการเดิม ไม่เกิดรายการซ้ำ

3. สร้างรายการชำระเงิน

POST/v1/payments

Headers

Headerคำอธิบาย
X-Api-Keyจำเป็นAPI key ของร้าน
Idempotency-Keyจำเป็นสตริงไม่ซ้ำต่อออร์เดอร์ (1–128 ตัวอักษร)
Content-Typeจำเป็นapplication/json

Body

FieldTypeคำอธิบาย
amountnumberจำเป็นยอดเงิน (บาท) ตั้งแต่ 20 ถึง 100,000 ทศนิยมไม่เกิน 2 ตำแหน่ง (วงเงินต่อรายการของ Alpha / Quest PROD; นอกช่วงตอบ 422 invalid_amount)
merchant_refstringจำเป็นรหัสอ้างอิงของร้าน (1–64 ตัวอักษร) เช่นเลขออร์เดอร์
descriptionstringไม่บังคับคำอธิบายรายการ (≤255)
return_urlstringไม่บังคับURL ให้ลูกค้ากลับหลังชำระ (ต้องเป็น http/https)

ตัวอย่าง

curl -X POST https://gateway.alphaquestcom.com/v1/payments \
  -H "X-Api-Key: gw_live_xxxxxxxx" \
  -H "Idempotency-Key: ORDER-10023" \
  -H "Content-Type: application/json" \
  -d '{"amount": 800.00, "merchant_ref": "ORDER-10023"}'

Response 201 Created (ยิงซ้ำ key เดิม = 200)

{
  "payment_id": "pay_01M1J9...",
  "status": "pending",
  "amount": 300,
  "currency": "THB",
  "checkout_url": "https://gateway.alphaquestcom.com/p/pay_01M1J9...",
  "qr_data_url": "data:image/png;base64,iVBOR...",
  "fee_amount": null,
  "net_amount": null
}

fee_amount / net_amount เป็น null จนกว่าจะชำระสำเร็จ (ค่าธรรมเนียมคำนวณตอนจ่ายจริง)

4. ดูสถานะรายการ

GET/v1/payments/{payment_id}
curl https://gateway.alphaquestcom.com/v1/payments/pay_01M1J9... \
  -H "X-Api-Key: gw_live_xxxxxxxx"

คืน object เดียวกับตอนสร้าง โดย status เป็นค่าใดค่าหนึ่ง:

pending รอชำระ · paid ชำระแล้ว · cancelled ยกเลิก · expired หมดอายุ (ไม่จ่ายใน 60 นาที)

5. ยกเลิกรายการ

POST/v1/payments/{payment_id}/cancel

ยกเลิกได้เฉพาะรายการที่ยังไม่ชำระ — ถ้าจ่ายไปแล้วจะได้ 409 already_paid

curl -X POST https://gateway.alphaquestcom.com/v1/payments/pay_01M1J9.../cancel \
  -H "X-Api-Key: gw_live_xxxxxxxx"

6. ดูยอดคงเหลือ

GET/v1/balance

ยอดสุทธิสะสมของร้าน (หลังหักค่าธรรมเนียม)

{ "balance": 1782.50, "currency": "THB" }

balance เป็นตัวเลข JSON ซึ่งแสดงค่าได้ถูกต้องไม่เกิน 15 หลัก (รวมทศนิยม 2 ตำแหน่ง) หากยอดเกินกว่านั้น endpoint จะตอบ HTTP 500 พร้อม {"error":"...","code":"balance_not_representable"} แทนการส่งตัวเลขที่ถูกปัดเศษ ให้ตรวจยอดจริงในหน้าหลังบ้าน

7. Webhook (แจ้งผล)

เมื่อสถานะรายการเปลี่ยน ระบบยิง POST ไปที่ webhook URL ของร้าน (ตั้งค่าตอนสมัคร) พร้อม headers:

Headerค่า
X-Gateway-Eventpayment.paid หรือ payment.cancelled
X-Gateway-Signaturesha256=<hex> — HMAC-SHA256 ของ raw body ด้วย webhook secret

Payload — payment.paid

{
  "event": "payment.paid",
  "payment_id": "pay_01M1J9...",
  "merchant_ref": "ORDER-10023",
  "amount": 300,
  "paid_amount": 300,
  "fee_amount": 3,
  "net_amount": 297,
  "currency": "THB",
  "paid_at": "2026-09-03T09:42:09.382Z"
}

Payload — payment.cancelled

{
  "event": "payment.cancelled",
  "payment_id": "pay_01M1J9...",
  "merchant_ref": "ORDER-10023",
  "amount": 300,
  "status": "cancelled"  // หรือ "expired"
}

ตรวจลายเซ็น (Node.js)

const crypto = require('crypto')

// rawBody = ตัว body ดิบ (Buffer/string) ก่อน JSON.parse
function verify(rawBody, signatureHeader, webhookSecret) {
  const expected = 'sha256=' +
    crypto.createHmac('sha256', webhookSecret)
          .update(rawBody, 'utf8').digest('hex')
  return crypto.timingSafeEqual(
    Buffer.from(expected), Buffer.from(signatureHeader))
}
การส่งซ้ำ (retry): ถ้า webhook ตอบไม่สำเร็จ (ไม่ใช่ 2xx) ระบบส่งซ้ำตามช่วงเวลา 30 วิ → 2 นาที → 10 นาที → 1 ชม. รวม 5 ครั้ง แล้วหยุด — endpoint ของร้านควร idempotent (รับ event เดิมซ้ำได้)
Whitelist: webhook ยิงมาจาก IP 18.136.50.160 เสมอ — เปิดรับได้เฉพาะ IP นี้ · ควรตอบ 200 ทันทีที่รับได้ แล้วค่อยประมวลผลเบื้องหลัง

8. รหัสข้อผิดพลาด

ข้อผิดพลาดคืน JSON รูปแบบ { "error": "...", "code": "..." }

HTTPcodeความหมาย
401invalid_api_keyAPI key ผิดหรือร้านถูกปิด
403merchant_suspendedร้านถูกระงับ
403ip_not_allowedIP ต้นทางไม่อยู่ในรายการที่ร้านอนุญาตไว้
422missing_idempotency_keyไม่ได้แนบ Idempotency-Key
422invalid_amountamount ไม่ถูกต้อง (20–100,000 บาทต่อรายการ ทศนิยมไม่เกิน 2 ตำแหน่ง)
409idempotency_conflictใช้ Idempotency-Key เดิมแต่ยอดเงินไม่ตรง
409already_paidยกเลิกรายการที่ชำระแล้วไม่ได้
404—ไม่พบรายการ (route not found)
502—ระบบชำระเงินปลายทางขัดข้องชั่วคราว

ภาพประกอบจากหน้าจอ Quest วันที่ 15 กันยายน 2026 ใช้ร้านที่ยังไม่มีรายการชำระและยังไม่ได้ตั้งบัญชีธนาคาร จึงแสดงยอดศูนย์หรือไม่มีรายการ ชื่อร้านและข้อมูลบนหน้าจอของคุณอาจต่างจากภาพ

คู่มือใช้งานหลังบ้าน Quest แบบเข้าใจง่าย

เริ่มใช้งานครั้งแรก

  1. เปิด หน้าเข้าสู่ระบบ Quest
  2. ใส่ชื่อผู้ใช้ที่ได้รับจากผู้ดูแล และรหัสผ่านที่ได้รับแยกต่างหาก
  3. กดเข้าสู่ระบบ แล้วตรวจว่าหน้าจอแสดงชื่อร้านของคุณ
  4. ไปที่ ยอดจ่ายและบัญชี เพื่อเพิ่มและเลือกบัญชีธนาคารรับเงิน
  5. ถ้ามีพนักงานช่วยดูรายการ ให้สร้างบัญชีของแต่ละคนในเมนู สมาชิก

ชื่อผู้ใช้ข้างต้นใช้สำหรับล็อกอิน ไม่ได้หมายความว่ามีกล่องอีเมลสำหรับรับส่งข้อความ เมื่อเลิกใช้งานเครื่องที่ใช้ร่วมกับคนอื่น ให้กดออกจากระบบ

อยากทำอะไร ต้องเข้าเมนูไหน

สิ่งที่ต้องการทำเมนู
ดูยอดรับและภาพรวมร้านภาพรวม
หารายการของลูกค้า ตรวจว่าจ่ายหรือยังรายการชำระเงิน
ตั้งบัญชีรับเงินและดูรอบโอนยอดจ่ายและบัญชี
เพิ่มคนเข้ามาช่วยดูร้านสมาชิก
เปิดร้านย่อยแยกจากร้านหลักร้านลูก
ตรวจว่า Quest ส่งผลชำระไปให้เว็บร้านหรือยังWebhooks
ดูว่าใครทำอะไรในระบบประวัติการใช้งาน

ทุกครั้งที่มีช่องเลือกร้าน ให้ตรวจว่าเลือกร้านหลักหรือร้านลูกที่ต้องการอยู่ คำว่า “ทุกร้าน” หมายถึงร้านในสิทธิ์ของบัญชีคุณ

1. ภาพรวม — ดูยอดร้านอย่างรวดเร็ว

ภาพรวมร้านและปฏิทินรายได้
ภาพ 1 · ภาพรวมร้านและปฏิทินรายได้
อ่านยอดสะสมจาก 3 ช่องด้านบน แล้วเลือกวันที่ในปฏิทินเพื่อดูรายได้ของวันนั้น

หน้าจอจะแสดงยอดหลัก 3 ช่อง:

ตัวเลขเหล่านี้เป็นยอดสะสม ไม่ใช่ยอดเงินที่จะโอนเข้าธนาคารวันนี้ หากต้องการดูเงินที่จะได้รับ ให้ไป ยอดจ่ายและบัญชี

กราฟแนวโน้มแสดงยอดรับ 30 วันล่าสุด ส่วนรายการล่าสุดช่วยให้เห็นรายการที่เพิ่งเกิดขึ้น กด ดูรายการทั้งหมด เพื่อค้นหารายการเพิ่มเติม

2. รายการชำระเงิน — ลูกค้าจ่ายแล้วหรือยัง

ช่องค้นหาและตัวกรองรายการชำระเงิน
ภาพ 2 · ช่องค้นหาและตัวกรองรายการชำระเงิน
ใส่ ID หรือ Ref → เลือกสถานะและวันที่ → กด กรอง หากต้องการไฟล์รายงาน ใช้ Export CSV หรือ Export Excel

วิธีหารายการ

  1. เข้า รายการชำระเงิน
  2. ที่ช่อง ค้นหา ID / Ref ใส่หมายเลขรายการ หรือเลขออร์เดอร์ของร้าน ใส่บางส่วนก็ได้
  3. ถ้ามีร้านลูก ให้เลือกร้านที่ถูกต้อง
  4. เลือกช่วงวันที่หรือสถานะ แล้วกด กรอง
  5. ตรวจเลขอ้างอิง ยอดเงิน สถานะ และเวลาจ่ายให้ตรงกับลูกค้า

ถ้าไม่พบ ให้ล้างข้อความค้นหา ขยายช่วงวันที่ และตรวจร้านที่เลือกก่อน เวลา BKK บนหน้าจอคือเวลาประเทศไทย

คำในตารางหมายถึงอะไร

คำบนหน้าจอความหมาย
IDหมายเลขรายการของ Quest มักขึ้นต้นด้วย pay_
Refเลขอ้างอิงหรือเลขออร์เดอร์ที่เว็บร้านส่งมา
ยอดยอดเงินของรายการ
Feeค่าธรรมเนียมรับชำระของรายการนั้น; — หมายถึงยังไม่มีค่าที่บันทึก
สร้างเมื่อเวลาที่สร้างรายการ
จ่ายเมื่อเวลาที่ระบบบันทึกว่าชำระสำเร็จ

อ่านสถานะให้ถูก

สถานะภาษาไทยง่าย ๆควรทำอย่างไร
createdเพิ่งสร้างรายการยังไม่ถือว่าจ่ายแล้ว
pendingรอชำระหรือรอผลยืนยันยังไม่ถือว่าจ่ายแล้ว
paidระบบยืนยันว่าชำระแล้วตรวจ Ref และยอดให้ตรง ก่อนดำเนินการตามออร์เดอร์
cancelledรายการถูกยกเลิกไม่ใช่สถานะคืนเงิน
expiredหมดเวลาชำระถ้าลูกค้ายังไม่ได้จ่าย ให้เริ่มรายการใหม่จากเว็บร้าน

ถ้าลูกค้าส่งสลิป แต่รายการยังไม่เป็น paid: เก็บ ID, Ref, ยอด, เวลาจ่าย และสลิป ส่งให้ผู้ดูแลตรวจสอบ อย่าให้ลูกค้าจ่ายซ้ำทันที และอย่าอาศัยภาพสลิปหรือการกลับมาหน้าเว็บอย่างเดียวเพื่อตัดสินว่าชำระสำเร็จ

เมนูนี้ใช้ดูและค้นหารายการ บัญชีร้านค้าไม่มีปุ่มยืนยันเงินเข้าด้วยตนเอง รายการชำระใหม่สร้างจากเว็บร้านหรือ API ที่เชื่อมกับ Quest

3. ยอดจ่ายและบัญชี — ตั้งว่าจะรับเงินที่ไหน

ฟอร์มเพิ่มบัญชีธนาคารที่ยังไม่ได้กรอกข้อมูล
ภาพ 3 · ฟอร์มเพิ่มบัญชีธนาคารที่ยังไม่ได้กรอกข้อมูล
เลือกธนาคาร กรอกเลขบัญชีและชื่อบัญชี แล้วกด เพิ่ม ภาพแสดงข้อความตัวอย่างในฟอร์ม ไม่ใช่บัญชีธนาคารจริง

หัวข้อในหน้าจออาจเขียนว่า Settlement ซึ่งหมายถึงการสรุปยอดเพื่อโอนเงินให้ร้าน

เพิ่มบัญชีรับเงิน

  1. เข้า ยอดจ่ายและบัญชี แล้วเลือกร้าน
  2. เลื่อนลงไปที่ เพิ่มบัญชีธนาคาร
  3. เลือกธนาคาร กรอกเลขบัญชี และชื่อบัญชีตามธนาคาร
  4. กด เพิ่ม
  5. ที่บัญชีที่ต้องการรับเงิน กด ใช้บัญชีนี้ และตรวจว่าถูกเลือกเป็นบัญชีหลักแล้ว

ปุ่ม ปิดใช้ ทำให้บัญชีนั้นไม่พร้อมใช้งาน จึงควรตรวจบัญชีหลักก่อนกด หากมีรอบจ่ายที่สร้างไว้แล้ว ให้ตรวจบัญชีในรอบนั้นด้วย อย่าสมมติว่าการเปลี่ยนบัญชีหลักเปลี่ยนทุกรอบย้อนหลัง

ตัวเลือกเกี่ยวกับยอดรับเงิน

ตัวเลือกใช้อย่างไร
เงินกันไว้ในบัญชี (reserve)กันเงินส่วนหนึ่งไว้ในยอดร้าน เช่น กัน 500 บาท เงินส่วนนี้จะไม่ถูกนำออกไปรวมยอดจ่ายตามปกติ
ยอดที่ต้องการรับโอนรอบถัดไปจำกัดยอดสำหรับรอบถัดไปครั้งเดียว ใส่ 0 เพื่อยกเลิกการจำกัด ไม่ใช่กดโอนทันที
แผนกระจายเงินโอนแบ่งยอดไปหลายบัญชีตามลำดับ เงินที่เหลือไปบัญชีหลัก ถ้ายอดไม่พอจะจัดสรรเท่าที่มี

แผนกระจายเงินใช้ซ้ำในแต่ละรอบจนกว่าจะแก้ไข หากรับเงินบัญชีเดียว ก็ไม่จำเป็นต้องเพิ่มแผนนี้

หน้าจอปัจจุบันระบุรอบตัดยอด 22:00 น. การตัดรอบหรือบันทึกยอดที่ต้องการรับ ไม่ใช่การรับประกันว่าเงินจะเข้าธนาคารทันที ให้ดูสถานะรอบจ่ายและเวลาที่ผู้ดูแลยืนยัน

สถานะรอบจ่าย

สถานะบนหน้าจอความหมาย
รอ admin review / pendingรอผู้ดูแลตรวจสอบ
อนุมัติแล้ว รอโอน / approvedผ่านการอนุมัติ แต่ยังไม่ใช่สถานะโอนแล้ว
โอนแล้ว / paidระบบบันทึกว่าโอนแล้ว ตรวจบัญชีและเลขอ้างอิงประกอบ
ปฏิเสธ / rejectedผู้ดูแลไม่อนุมัติ ให้ดูเหตุผล
ไม่มีบัญชี / no_accountต้องเพิ่มหรือเลือกบัญชีรับเงินให้เรียบร้อย
รวมในรอบถัดไปแล้ว / supersededรอบเดิมถูกรวมเข้าในรอบถัดไป ให้ติดตามรอบใหม่

กด รายละเอียด ในแถวของรอบจ่ายเพื่อดูยอดและรายการประกอบ

4. สมาชิก — เพิ่มคนช่วยดูร้าน

ฟอร์มเพิ่มสมาชิกโดยไม่แสดงรายชื่อผู้ใช้
ภาพ 4 · ฟอร์มเพิ่มสมาชิกโดยไม่แสดงรายชื่อผู้ใช้
กรอกอีเมลและรหัสผ่าน → เลือกสิทธิ์ → กด เพิ่มสมาชิก ภาพนี้แสดงเฉพาะฟอร์ม ไม่แสดงบัญชีที่มีอยู่
  1. เข้า สมาชิก
  2. กรอกอีเมลและรหัสผ่านอย่างน้อย 8 ตัวอักษร
  3. เลือกสิทธิ์ แล้วกด เพิ่มสมาชิก
สิทธิ์เหมาะกับใคร
พนักงาน (staff)คนช่วยดูข้อมูลและรายการ ไม่มีสิทธิ์จัดการสมาชิกหรือบัญชีรับเงิน
เจ้าของ (owner)คนที่ได้รับอนุญาตให้จัดการร้าน สมาชิก และการตั้งค่ารับเงิน

ปุ่ม ลบ ใช้ปิดการใช้งานบัญชีสมาชิก ไม่ใช่ลบประวัติรายการของร้าน และไม่สามารถลบบัญชีตัวเองจากหน้านี้ได้

ปุ่ม rotate API key ของร้าน: ออก API key ใหม่พร้อม webhook secret ใหม่ ในคราวเดียว และทำให้ key เดิมกับ secret เดิมใช้ไม่ได้ทันที ต้องยืนยันรหัส 2FA ก่อนทำ (บัญชีที่ยังไม่เปิด 2FA จะกดไม่ได้) ถ้าเว็บร้านเชื่อม API อยู่ ต้องให้คนดูแลเว็บเปลี่ยนทั้งสองค่าให้ตรงกัน จึงไม่ควรกดเพื่อทดลองหรือเข้าใจว่าเป็นการเปลี่ยนรหัสผ่านล็อกอิน

5. การจัดการร้านค้าย่อย (Sub-merchant)

ฟอร์มสร้างร้านลูก
ภาพ 5 · ฟอร์มสร้างร้านลูก
กรอก code ชื่อร้าน และ fee_bps ให้ตรงที่ตกลง หากต้องการบัญชีล็อกอินให้กรอกอีเมลและรหัสผ่านทั้งคู่ ก่อนกด สร้างร้านลูก

ร้านค้าย่อย (Sub-merchant) คือร้านที่อยู่ใต้ร้านหลัก โดยมี API key, webhook, ค่าธรรมเนียม และยอดเงินของตัวเอง เมนูบนหน้าจอยังใช้ชื่อ ร้านลูก ผู้ทำรายการต้องเป็น เจ้าของร้าน (owner) ของร้านหลัก

ขั้นตอนที่ 1: เข้าเมนูจัดการ

  1. เข้าสู่ระบบหลังบ้านด้วยบัญชีเจ้าของร้านหลัก
  2. เลือกเมนู ร้านลูก แล้วเลื่อนไปที่กรอบ เพิ่มร้านลูก
  3. ตรวจระดับร้านลูกที่ระบบแสดงก่อนกรอกข้อมูล ระบบกำหนดระดับถัดไปให้อัตโนมัติ เช่น ร้านหลักระดับ agent จะสร้างร้านลูกระดับ member

ขั้นตอนที่ 2: กรอกข้อมูลร้านค้าย่อย

  1. code: ใส่รหัสร้านที่ไม่ซ้ำ เช่น myshop-a ใช้ตัวอักษรอังกฤษพิมพ์เล็ก ตัวเลข ขีดกลาง หรือขีดล่าง รวม 2–32 ตัว และเริ่มด้วยตัวอักษรหรือตัวเลข
  2. ชื่อ: ใส่ชื่อร้านที่อ่านแล้วรู้ว่าเป็นร้านไหน
  3. webhook URL: ใส่ URL ที่ระบบของร้านลูกใช้รับแจ้งผลชำระเงิน ถ้ายังไม่พร้อม เว้นว่างแล้วเพิ่มภายหลังได้
  4. fee_bps: ใส่ค่าธรรมเนียมรับชำระเป็นจำนวนเต็ม เช่น 100 = 1% หรือ 160 = 1.60% ฟอร์มเริ่มต้นที่ 100 ให้ตรวจและแก้เป็นอัตราที่ตกลงก่อนสร้าง
  5. อีเมลเข้าใช้ / รหัสผ่าน: ถ้าต้องการให้ร้านลูกล็อกอิน ให้กรอกทั้งสองช่อง โดยรหัสผ่านอย่างน้อย 8 ตัว ถ้ายังไม่ต้องการบัญชีเข้าใช้ ให้เว้นว่างทั้งคู่แล้วเพิ่มภายหลัง

ค่าถอนของร้านลูกจะสืบทอดจากร้านหลัก ตอนสร้างร้าน ช่อง fee_bps ในหน้านี้ใช้กำหนดค่ารับชำระเท่านั้น

ขั้นตอนที่ 3: สร้างร้านและเก็บข้อมูลเชื่อมต่อ

  1. ตรวจรหัสร้าน ชื่อ ค่าธรรมเนียม และอีเมลอีกครั้ง แล้วกด สร้างร้านลูก
  2. เมื่อสร้างสำเร็จ ให้เก็บ API key และ webhook secret ทันที เพราะระบบแสดงเพียงครั้งเดียว
  3. ส่งข้อมูลเชื่อมต่อให้ผู้พัฒนาระบบของร้านผ่านช่องทางส่วนตัว API key ใช้เรียก API ส่วน webhook secret ใช้ตรวจสอบแจ้งผลที่ส่งมาถึงร้าน ทั้งสองอย่างไม่ใช่รหัสผ่านเข้าเว็บ
  4. กลับเมนู ร้านลูก และตรวจว่ารหัสร้านใหม่อยู่ในรายการและมีสถานะ เปิด หากสร้างบัญชีเข้าใช้ด้วย ให้ร้านลูกทดลองล็อกอินด้วยอีเมลและรหัสผ่านที่ตั้งไว้

ถ้าอีเมลซ้ำ: หากข้อความแจ้งว่า “สร้างร้านลูกแล้ว” ให้กลับไปตรวจรายการก่อน อย่าสร้างร้านซ้ำ ให้เพิ่มบัญชีด้วยอีเมลอื่นในร้านที่สร้างแล้ว หากไม่ได้รับ API key ให้ใช้ขั้นตอนออก key ใหม่ด้านล่าง

การจัดการ: แก้ชื่อร้าน ค่ารับชำระ หรือ webhook

  1. เข้า ร้านลูก แล้วหาร้านจาก code ให้ตรง
  2. แก้ช่อง ชื่อ, webhook URL หรือ fee_bps ที่ต้องการ
  3. กด บันทึก ในกรอบของร้านนั้น
  4. หลังหน้าโหลดใหม่ ตรวจว่าค่าที่แก้แสดงถูกต้อง ช่องรหัสร้านและค่าถอนไม่มีให้แก้ในฟอร์มนี้

การจัดการ: เพิ่มหรือลบบัญชีเข้าใช้ของร้านลูก

  1. ในกรอบร้านที่ต้องการ ไปที่ บัญชีเข้าใช้ (ดูอย่างเดียว)
  2. กรอก อีเมล และ รหัสผ่าน อย่างน้อย 8 ตัว แล้วกด เพิ่มบัญชี
  3. ตรวจว่าอีเมลปรากฏในตารางและมีสถานะ ใช้งาน จากนั้นส่งข้อมูลล็อกอินให้เจ้าของบัญชีทางส่วนตัว
  4. เมื่อต้องการยกเลิกบัญชี ให้ตรวจอีเมลแล้วกด ลบ ในแถวนั้นและยืนยัน บัญชีจะถูกปิดใช้งาน ไม่ใช่การลบร้าน

บัญชีที่เพิ่มจากหน้านี้เป็น พนักงาน (staff) ดูอย่างเดียว เห็นข้อมูลร้านของตัวเอง ไม่ใช่บัญชีเจ้าของร้าน และร้านระดับ member สร้างร้านลูกต่อไม่ได้

การจัดการ: ระงับร้านหรือเปิดใช้อีกครั้ง

  1. ตรวจ code ของร้านที่จะจัดการให้ตรง
  2. กด ระงับ แล้วตรวจว่าสถานะเปลี่ยนเป็น ปิด ระหว่างระงับ API key ของร้านจะใช้เรียก API ไม่ได้
  3. เมื่อต้องการให้กลับมาใช้งาน กด เปิดใช้ แล้วตรวจว่าสถานะกลับเป็น เปิด

การจัดการ: ออก API key ใหม่

  1. แจ้งผู้ดูแลระบบของร้านให้พร้อมเปลี่ยนทั้ง key และ webhook secret เพราะทั้งคู่จะใช้ไม่ได้ทันทีเมื่อออกชุดใหม่
  2. ตรวจรหัสร้าน แล้วกด rotate key ยืนยัน และใส่รหัส 6 หลักจากแอป 2FA (บัญชีต้องเปิด 2FA ก่อน)
  3. เก็บ API key ใหม่และ webhook secret ใหม่ ที่ระบบแสดงครั้งเดียว แล้วส่งให้ผู้ดูแลระบบผ่านช่องทางส่วนตัว
  4. ให้ผู้ดูแลเปลี่ยนทั้งสองค่าในระบบเชื่อมต่อ แล้วทดสอบเรียก API และรับ webhook อีกครั้ง การกดปุ่มนี้ไม่เปลี่ยนรหัสผ่านล็อกอิน

ขอบเขตการจัดการ: ร้านหลักจัดการได้เฉพาะร้านลูกระดับถัดลงมาโดยตรง ส่วนหน้าภาพรวมและรายการสามารถรวมข้อมูลร้านที่อยู่ใต้สิทธิ์ของตนได้

6. Webhooks — เว็บร้านได้รับผลชำระหรือยัง

หน้าตรวจการส่งแจ้งผลไปยังเว็บร้าน
ภาพ 6 · หน้าตรวจการส่งแจ้งผลไปยังเว็บร้าน
ค้นด้วย Payment ID หรือ Ref แล้วเลือกสถานะและกด ค้นหา ข้อความไม่มีรายการหมายถึงยังไม่มีผลตามตัวกรอง

Webhook คือข้อความอัตโนมัติที่ Quest ส่งไปแจ้งเว็บร้าน เช่น แจ้งว่าลูกค้าจ่ายแล้ว จ่ายแล้วแต่เว็บร้านยังไม่เปลี่ยนสถานะ ให้เริ่มตรวจหน้านี้

  1. เข้า Webhooks
  2. ค้นด้วย Payment ID หรือ Ref แล้วกด ค้นหา
  3. ตรวจสถานะการส่งและรหัส HTTP
สถานะความหมาย
queuedรอส่ง หรือรอส่งซ้ำตามรอบ
deliveredเว็บปลายทางตอบรับสำเร็จ แต่ควรตรวจด้วยว่าเว็บร้านบันทึกออร์เดอร์แล้ว
failedการส่งล้มเหลว ต้องตรวจข้อมูลการส่ง
deadระบบหยุดส่งอัตโนมัติ เช่น ลองส่งครบจำนวนแล้ว

HTTP คือผลตอบจากเว็บปลายทาง โดย 2xx เช่น 200 หมายถึงตอบรับสำเร็จ ส่วน — อาจหมายถึงไม่มีผลตอบ HTTP ที่บันทึกไว้ ต้องตรวจรายละเอียดเพิ่มเติม

บัญชีร้านไม่มีปุ่มส่งซ้ำเอง หากต้องการให้ส่งซ้ำ ให้ส่ง Payment ID และข้อมูลแถวนี้ให้ผู้ดูแล พร้อมให้คนดูแลเว็บร้านตรวจ URL และตัวรับข้อความ

สถานะจ่ายเงินกับสถานะส่งข้อความเป็นคนละเรื่อง: รายการอาจเป็น paid แล้ว แต่ webhook ยังส่งไม่สำเร็จได้ อย่าสร้างรายการจ่ายใหม่เพียงเพราะแจ้งผลไม่ถึงเว็บร้าน

7. ประวัติการใช้งาน — ใครทำอะไรไว้

หน้าประวัติการใช้งานที่กรอง payment.created
ภาพ 7 · หน้าประวัติการใช้งานที่กรอง payment.created
เลือก event และช่วงวันที่ แล้วกด กรอง ตัวอย่างนี้กรองเหตุการณ์สร้างรายการชำระเงิน จึงไม่แสดงประวัติส่วนตัวอื่น

หน้าจออาจเขียนว่า Audit ใช้ตรวจประวัติการทำงาน เช่น เพิ่มสมาชิก เปลี่ยน key หรือแก้ข้อมูลร้าน เลือกตัวกรองที่มีบนหน้าจอเพื่อหารายการที่ต้องการ

ถ้าพบการเปลี่ยนแปลงที่ไม่คุ้นเคย ให้บันทึกวันเวลา ผู้ทำรายการ และรายละเอียด ส่งให้ผู้ดูแลตรวจสอบ

ปัญหาที่พบบ่อย

อาการเริ่มตรวจจากตรงไหน
เข้าไม่ได้ตรวจ URL ชื่อผู้ใช้ และรหัสผ่าน ระวังช่องว่างที่ติดมาตอนคัดลอก; ถ้ายังไม่ได้ให้ติดต่อผู้ดูแล
ไม่มีเมนูสมาชิกหรือร้านลูกตรวจว่าเข้าด้วยบัญชีเจ้าของร้าน ไม่ใช่พนักงาน; ร้านระดับ member ไม่มีเมนูสร้างร้านลูก
ไม่พบรายการลูกค้าตรวจ Ref ร้านที่เลือก ช่วงวันที่ และตัวกรองสถานะ
ลูกค้าบอกจ่ายแล้ว แต่ยัง pendingเก็บ ID/Ref ยอด เวลาและสลิป ส่งผู้ดูแลตรวจ ไม่ให้จ่ายซ้ำทันที
Quest เป็น paid แต่เว็บร้านยังไม่อัปเดตตรวจ Webhooks แล้วประสานคนดูแลเว็บร้าน
ยังไม่ได้รับเงินถอนตรวจบัญชีรับเงิน reserve ยอดจำกัดรอบถัดไป และสถานะรอบจ่าย
ไม่เห็นเมนูสลิปหรือตรวจสอบรายการเป็นเมนูของผู้ดูแลระบบ ไม่ได้เปิดให้บัญชีร้านค้า

เช็กลิสต์ประจำวัน

ไม่ต้องส่งรหัสผ่าน, API key หรือ webhook secret ในข้อความแจ้งปัญหา