หากลูกค้าชำระเงินสำเร็จผ่าน Beam แล้ว บน Beam สถานะสำเร็จ (Paid/ Succeeded) แต่สถานะคำสั่งซื้อ (Order Status) บนเว็บไซต์ยังไม่เปลี่ยน เช่น Pending / Processing
สาเหตุที่พบบ่อย
- Webhook จาก Beam ส่งไปที่เว็บไซต์ไม่สำเร็จ
เช่น
- Webhook URL ไม่ถูกต้อง
- เว็บไซต์ไม่เปิดรับจากภายนอก (ไม่เป็น Public)
- ถูกบล็อกโดย Firewall / WAF / Cloudflare - เว็บไซต์รับ Webhook ได้ แต่ไม่ตอบกลับภายในเวลาที่กำหนด
ระบบประมวลผลช้า ทำให้เกิด Timeout สถานะจึงไม่อัปเดตทันที - เว็บไซต์ตอบกลับด้วยสถานะผิดพลาด
เช่น 401 / 403 / 5xx อาจเกิดจากการตั้งค่า Authentication, Permission หรือ Error ภายในระบบเว็บไซต์ - ปลั๊กอินหรือระบบขัดแย้งกัน (Plugin Conflict)
พบบ่อยในเว็บไซต์ที่ใช้ CMS เช่น WordPress / WooCommerce
แนวทางตรวจสอบและแก้ไข
- ตรวจสอบฝั่ง Beam (Webhook Delivery)
- ตรวจสอบว่า Beam ส่ง Webhook ออกไปแล้วหรือไม่
- หากพบการ Retry หลายครั้ง แสดงว่าเว็บไซต์อาจรับ Webhook ไม่ได้ตามปกติ - ตรวจสอบฝั่งเว็บไซต์ (Webhook Endpoint)
ให้ทีมเทคนิคหรือผู้ดูแลเว็บไซต์ตรวจสอบว่า:
- Webhook URL ถูกต้อง และเข้าถึงได้จากภายนอก (Public)
- Endpoint ไม่ถูกบล็อกโดย Firewall / WAF / Cloudflare - ตรวจสอบ Log ฝั่งเว็บไซต์
แนะนำให้ดู Log ในช่วงเวลาที่เกิดเหตุ เช่น:
- WooCommerce / Plugin Logs
- PHP Error Logs
เพื่อตรวจสอบ Error ที่พบบ่อย เช่น:
- Timeout
- Permission denied (401 / 403)
- Internal server error (500) สาเหตุที่พบบ่อยเพิ่มเติม:
- Endpoint เช่น /wc-api/... ถูกบล็อกโดย Security Plugin หรือ Cache Plugin
- Webhook ถูก Cache ทำให้สถานะไม่อัปเดต
- Plugin บางตัวขัดแย้งกับระบบอัปเดตสถานะคำสั่งซื้อ
คำแนะนำ
- Whitelist Webhook URL ใน Security / Firewall Plugin
- หากต้องการ Whitelist IP กรุณาติดต่อทีม Beam
- ปิด Cache สำหรับ Webhook Endpoint
- ตรวจสอบ WooCommerce Logs และ PHP Error Logsข้อมูลที่ควรเตรียมเมื่อแจ้งทีมงาน Beam
เพื่อให้ทีมงานตรวจสอบได้รวดเร็ว กรุณาเตรียมข้อมูลต่อไปนี้:
- Beam Charge ID / Payment ID (Transaction ID)
- วันและเวลาที่ลูกค้าชำระเงิน
- Webhook URL ที่เว็บไซต์ใช้รับข้อมูลจาก Beam
- สถานะ Webhook (เช่น Success / Failed พร้อม Status Code)
- Log จากฝั่งเว็บไซต์ในช่วงเวลาที่เกิดปัญหา