💳 ระบบชำระเงินออนไลน์
ในหน้านี้
เมนู: รายงาน & การเงิน → ช่องทางชำระเงิน (เฉพาะ admin) · ด้านบนของหน้าจะมี chip แสดงช่องทางที่ พร้อมใช้ แล้ว
ภาพรวมช่องทาง
| ช่องทาง | ยืนยันการชำระ | ค่าธรรมเนียม | ต้องมี |
|---|---|---|---|
| PromptPay QR | สลิป → ตรวจอัตโนมัติ/เจ้าหน้าที่ | ไม่มี | เบอร์/เลขพร้อมเพย์ |
| โอนบัญชีธนาคาร | สลิป → ตรวจอัตโนมัติ/เจ้าหน้าที่ | ไม่มี | เลขบัญชี |
| Omise — PromptPay อัตโนมัติ | ทันที webhook | ตามสัญญา Omise | บัญชี Omise |
| Omise — บัตร | ทันที (3-D Secure) | ตามสัญญา Omise | บัญชี Omise |
| Stripe Checkout | ทันที webhook | ตามสัญญา Stripe | บัญชี Stripe |
| ชำระที่สาขา (พัสดุ) | เจ้าหน้าที่รับเงินสดตอนรับพัสดุ | — | เปิดจองพัสดุออนไลน์ |
PromptPay QR + โอนธนาคาร
- PromptPay: เปิดสวิตช์ → ใส่
PromptPay ID(เบอร์มือถือ 10 หลัก หรือเลข 13 หลัก) และชื่อที่แสดงบน QR - โอนธนาคาร: เปิดสวิตช์ → เลือกธนาคาร เลขที่บัญชี ชื่อบัญชี
- บันทึก — QR ถูกสร้างในเบราว์เซอร์ของลูกค้า (มาตรฐาน EMVCo พร้อมยอดเงิน) ไม่ส่งข้อมูลไปบริการภายนอก
ระบบตรวจสอบสลิป
ใช้กับ PromptPay QR และโอนธนาคาร เลือกผู้ให้บริการ 1 ใน 3:
👤 ตรวจด้วยเจ้าหน้าที่
ฟรี — ทุกสลิปเข้าคิว "ตรวจสอบสลิป" ให้อนุมัติ/ปฏิเสธ
⚡ EasySlip
สมัครที่ easyslip.com → นำ API Key มาใส่ ระบบอ่านข้อมูลสลิปจากธนาคารภายในไม่กี่วินาที
⚡ SlipOK
สมัครที่ slipok.com → ใส่ API Key + Branch ID
ระบบตรวจอะไรบ้าง
| การตรวจ | ถ้าไม่ผ่าน |
|---|---|
| รูปภาพซ้ำ (hash เดียวกัน) | ปฏิเสธ สลิปถูกใช้แล้ว |
| เลขอ้างอิงธุรกรรม (transRef) ซ้ำกับสลิปที่ผ่านแล้ว | ปฏิเสธ |
| ยอดเงินในสลิป ≥ ยอดที่ต้องชำระ | ปฏิเสธ แจ้งยอดที่อ่านได้ |
| บัญชีผู้รับตรงกับ "บัญชีผู้รับที่ยอมรับ" | ส่งให้เจ้าหน้าที่ตรวจ |
| เวลาโอนไม่เก่ากว่าเวลาจอง | ส่งให้เจ้าหน้าที่ตรวจ |
| ผู้ให้บริการไม่ตอบสนอง | ส่งให้เจ้าหน้าที่ตรวจ (ไม่ทำให้ลูกค้าติดขัด) |
ผ่านทุกข้อ + เปิด อนุมัติอัตโนมัติ → ยืนยันการชำระทันที · ปิดไว้ถ้าต้องการให้เจ้าหน้าที่ยืนยันทุกสลิป
0812345678, 123-4-56789-0 เพื่อจับสลิปที่โอนผิดบัญชีstorage/slips/ ซึ่งเปิดผ่านเว็บโดยตรงไม่ได้ — ดูได้เฉพาะ admin/แคชเชียร์ที่เข้าสู่ระบบOmise (Opn Payments)
- เข้า Omise Dashboard → Keys คัดลอก Public key (
pkey_…) และ Secret key (skey_…) - ใส่ในการ์ด Omise → เลือกช่องทาง: บัตร และ/หรือ PromptPay → เปิดสวิตช์ → บันทึก
- Omise Dashboard → Webhooks → ใส่ URL ที่แสดงในการ์ด (
/api/webhook_omise.php) - กด ทดสอบการเชื่อมต่อ → Omise
- บัตร: ลูกค้ากรอกบัตรในหน้าต่างของ Omise (ข้อมูลบัตรไม่ผ่านเซิร์ฟเวอร์เรา) รองรับ OTP 3-D Secure
- PromptPay อัตโนมัติ: สร้าง QR เฉพาะรายการ ลูกค้าไม่ต้องส่งสลิป — ยืนยันผ่าน webhook และหน้าเว็บตรวจสถานะซ้ำทุก ~10 วินาทีเป็นสำรอง
Stripe
- Stripe Dashboard → Developers → API keys คัดลอก Secret key (
sk_test_…/sk_live_…) - Developers → Webhooks → Add endpoint ใส่ URL
/api/webhook_stripe.phpเลือก eventscheckout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed,checkout.session.expired - คัดลอก Signing secret (
whsec_…) มาใส่ในช่อง Webhook signing secret - เลือกช่องทาง (Card / PromptPay) หรือไม่เลือกเพื่อใช้ค่าจาก Dashboard → เปิดสวิตช์ → บันทึก → ทดสอบการเชื่อมต่อ
ลูกค้าจะถูกพาไปหน้า Stripe Checkout และกลับมาอัตโนมัติ · Webhook ตรวจลายเซ็น (HMAC) และดึง session จาก Stripe ใหม่ก่อนยืนยัน
config/app_key.php — สำรองไฟล์นี้ไว้ หากหายต้องกรอกคีย์ทุกตัวใหม่ · ช่องคีย์ที่เว้นว่างตอนบันทึก = ใช้ค่าเดิม, ติ๊ก "ลบค่าที่บันทึกไว้" เพื่อล้างตรวจสลิปด้วยเจ้าหน้าที่
เมนู: รายงาน & การเงิน → ตรวจสอบสลิป (admin + แคชเชียร์) · แดชบอร์ดจะแจ้งเตือนเมื่อมีสลิปรอตรวจ
- แท็บ รอตรวจ แสดงการ์ดสลิป: รูปสลิป (คลิกดูเต็ม), รหัสจอง/พัสดุ, ยอดที่ต้องชำระ เทียบ ยอดในสลิป (เขียว = พอ, แดง = ไม่พอ), ผู้โอน/ผู้รับ, ผลการตรวจอัตโนมัติ
- อนุมัติ → การจองเปลี่ยนเป็น "ชำระแล้ว" ทันที หน้าชำระเงินของลูกค้าอัปเดตเอง
- ปฏิเสธ → ต้องระบุเหตุผล ลูกค้าส่งสลิปใหม่ได้
รายการชำระเงิน + การคืนเงิน
เมนู: รายงาน & การเงิน → การชำระเงิน — รวมทั้งตั๋วและพัสดุ ค้นหาด้วยรหัสชำระ/รหัสจอง/ชื่อ/เลขอ้างอิงของ gateway
- การ์ดสรุป: ยอดรับวันนี้ · เดือนนี้ · รอชำระ · ต้องคืนเงิน
- ตัวกรอง ต้องคืนเงิน — เกิดเมื่อลูกค้าจ่ายซ้ำ หรือจ่ายหลังการจองถูกยกเลิก/หมดเวลา → ดำเนินการคืนเงินใน Dashboard ของ Stripe/Omise หรือโอนคืนเอง
เวลาชำระเงิน + การยกเลิกอัตโนมัติ
การ์ด ทั่วไป → เวลาชำระเงินการจองออนไลน์ (ค่าเริ่มต้น 15 นาที) — การจองออนไลน์ที่ยังไม่ชำระเกินเวลาจะถูกยกเลิกและคืนที่นั่งอัตโนมัติ
ยกเว้น: การจองที่กำลังชำระผ่าน Stripe/Omise (ไม่เกิน 60 นาที) หรือมีสลิปรอตรวจ — จะไม่ถูกยกเลิก · การจองที่พนักงานทำให้ลูกค้าไม่ถูกยกเลิกอัตโนมัติ
โหมดทดสอบ + ทดสอบการเชื่อมต่อ
- ทดสอบการเชื่อมต่อ (ท้ายหน้า) — เรียก API แบบอ่านอย่างเดียวของ Stripe / Omise / EasySlip / SlipOK เพื่อยืนยันว่าคีย์ถูกต้อง (ไม่มีการตัดเงิน)
- โหมดทดสอบ — เพิ่มปุ่ม "จำลองการชำระเงิน" ในหน้าชำระเงิน แสดงเฉพาะบนเครื่องทดสอบ (localhost) ไม่แสดงบนเว็บจริงแม้เปิดไว้
- แนะนำทดสอบด้วยคีย์ test ของ Stripe/Omise ก่อนเปลี่ยนเป็นคีย์ live
