WooCommerce Troubleshooting

WooCommerce Order ไม่เข้า แก้ยังไง

WooCommerce Order ไม่เข้า แก้ยังไง

หนึ่งในปัญหาที่เจ้าของร้านค้าออนไลน์พบบ่อยที่สุดคือ Order ไม่เข้าระบบ WooCommerce — ลูกค้าจ่ายเงินไปแล้ว แต่หน้า Admin ไม่มีออร์เดอร์ใหม่เข้ามา หรือสถานะ Order ค้างอยู่ที่ “Pending Payment” ตลอด ปัญหานี้อาจเกิดจากหลายสาเหตุ ตั้งแต่ระบบชำระเงินแจ้งกลับมาไม่ได้ ไปจนถึง Plugin ขัดแย้งกัน บทความนี้จะพาคุณวินิจฉัยและแก้ไขอย่างเป็นขั้นตอน ถ้าคุณยังไม่ได้อ่านบทความหลักเกี่ยวกับ WooCommerce Checkout ไม่ได้ แนะนำให้อ่านควบคู่กัน เพราะบางครั้งปัญหาเกิดก่อนหน้าขั้นตอนชำระเงินด้วย

อาการที่พบและความหมายของแต่ละอาการ

ก่อนแก้ไข ต้องระบุก่อนว่า “ไม่เข้า” หมายถึงอะไร เพราะแต่ละอาการบ่งชี้สาเหตุต่างกัน

  • ลูกค้าจ่ายเงินแล้ว แต่ไม่มี Order ใน WooCommerce เลย — มักเกิดจาก Webhook หรือ IPN (Instant Payment Notification) ส่งกลับมาไม่ถึง WordPress
  • Order สร้างแล้ว แต่สถานะค้างที่ Pending Payment — ระบบชำระเงินรับเงินแล้วแต่ยังไม่ได้แจ้งกลับ หรือ Webhook ล้มเหลวกลางทาง
  • Order เข้าแต่ Stock ไม่ลด / Email ไม่ส่ง — Order ถูกสร้างแต่ Action ที่ต้องทำต่อเนื่องล้มเหลว ซึ่งอาจเป็นปัญหา WooCommerce Email ไม่ส่ง
  • Order ซ้ำกัน (Duplicate Order) — ลูกค้ากดซื้อซ้ำ หรือ Webhook ถูกยิงมาหลายครั้ง
WooCommerce Checkout / จ่ายเงินไม่ได้ — WP Doctor Thailand
ปัญหาหน้า Checkout และการจ่ายเงินใน WooCommerce

สาเหตุหลักที่ทำให้ Order ไม่เข้า

1. Webhook / Callback ล้มเหลว

Payment Gateway เช่น Omise, PromptPay, หรือ PayPal จะส่ง HTTP request กลับมาที่เว็บคุณเพื่อแจ้งผลการชำระเงิน ถ้า WordPress ตอบไม่ได้ (เว็บล่ม, มี Firewall บล็อก, URL ผิด) สถานะก็จะไม่อัปเดต อ่านเพิ่มเติมได้ที่ Webhook และ Callback ในระบบชำระเงินคืออะไร

2. Plugin ขัดแย้งกัน

Security Plugin บางตัว เช่น Wordfence หรือ iThemes Security อาจบล็อก IP ของ Payment Gateway ทำให้ Webhook ส่งมาไม่ถึง ปัญหานี้คือตัวอย่างคลาสสิกของ Plugin Conflict ใน WooCommerce

3. SSL / HTTPS ผิดพลาด

Payment Gateway ส่วนใหญ่กำหนดให้ปลายทาง Webhook ต้องเป็น HTTPS ที่มี Certificate ถูกต้อง ถ้า SSL หมดอายุหรือ Mixed Content Error จะทำให้ Webhook ถูกปฏิเสธ

4. PHP Timeout หรือ Memory Limit ต่ำเกินไป

เมื่อ WooCommerce รับ Webhook และพยายามสร้าง Order แต่เซิร์ฟเวอร์หมดเวลาก่อน Order ก็จะไม่ถูกบันทึก

5. ปัญหาเฉพาะ Payment Gateway

เช่น Omise ที่ต้องกำหนด Webhook URL ในหน้า Dashboard ของ Omise เอง ถ้าตั้งค่าผิดหรือใช้ Test Key บน Production ก็จะเกิดปัญหา ดูรายละเอียดที่ Omise / Opn Payment ไม่อัปเดตสถานะ Order

วิธีตรวจสอบอย่างเป็นระบบ

  • ตรวจ WooCommerce System Status: ไปที่ WooCommerce → Status → Logs แล้วกรองดู Log ที่เกี่ยวกับ Payment หรือ Webhook เพื่อดูว่ามี Error อะไร
  • ตรวจ Error Log ของ WordPress: เปิด wp-config.php เพิ่ม define('WP_DEBUG_LOG', true); แล้วดู /wp-content/debug.log
  • ทดสอบ Webhook URL ด้วย Postman หรือ RequestBin: ทดสอบว่า URL https://yoursite.com/?wc-api=WC_Gateway_Paypal (หรือ Gateway ของคุณ) ตอบสนองได้หรือไม่
  • ตรวจสอบ Firewall Log: ถ้าใช้ Wordfence ไปดูที่ Wordfence → Firewall → Blocked Requests ว่ามี IP ของ Payment Gateway ถูกบล็อกไหม
  • ตรวจ Dashboard ของ Payment Gateway: เช่น Omise Dashboard จะแสดงว่า Webhook ส่งแล้วได้รับ Response 200 OK หรือเปล่า
แก้ปัญหา WooCommerce — WP Doctor Thailand
ตรวจสอบและแก้ปัญหาระบบร้านค้า WooCommerce

วิธีแก้ไขทีละขั้นตอน

ขั้นที่ 1: ตรวจสอบและแก้ URL ของ Webhook

เข้าไปที่ WooCommerce → Settings → Payments → เลือก Gateway → ตรวจสอบว่า Webhook URL ที่แจ้งไว้ใน Dashboard ของ Gateway ตรงกับ URL จริงของเว็บคุณ ถ้าย้าย Domain หรือเปลี่ยน SSL URL อาจยังเป็น URL เก่าอยู่

ขั้นที่ 2: Whitelist IP ของ Payment Gateway

หา IP range ของ Gateway (ค้นใน Documentation ของแต่ละเจ้า) แล้วเพิ่มเป็น Whitelist ใน Security Plugin หรือ WAF ของเซิร์ฟเวอร์ ใน Wordfence ทำได้ที่ Wordfence → Firewall → Allowlisted IPs

ขั้นที่ 3: เพิ่ม PHP Memory และ Timeout

เพิ่มใน wp-config.php:

define('WP_MEMORY_LIMIT', '256M');

และใน .htaccess หรือ php.ini: max_execution_time = 120

ขั้นที่ 4: ปิด Plugin ทีละตัวเพื่อหาตัวที่ขัดแย้ง

ปิด Caching Plugin, Security Plugin, และ Optimization Plugin ทีละตัวแล้วทดสอบชำระเงินจริง ถ้าหลังปิดตัวไหน Order เริ่มเข้า แสดงว่าเจอตัวผู้ร้ายแล้ว

ขั้นที่ 5: ใช้ WooCommerce Action Scheduler ตรวจสอบ Queue

ไปที่ WooCommerce → Status → Scheduled Actions ดูว่ามี Action ที่ Failed หรือ Pending นานผิดปกติไหม ถ้ามีให้กด Retry

สรุปสิ่งที่ต้องตรวจก่อนเสมอ: ปัญหา Order ไม่เข้าส่วนใหญ่มาจาก Webhook ล้มเหลว — ตรวจสอบ Log ของ Payment Gateway ว่าได้รับ Response 200 OK หรือไม่ คือจุดเริ่มต้นที่ดีที่สุด

วิธีป้องกันไม่ให้เกิดซ้ำ

  • ตั้ง Alert ใน Uptime Monitor เพื่อรู้ทันทีถ้าเว็บล่ม Gateway จะได้ไม่ส่ง Webhook มาในช่วงนั้น
  • ต่ออายุ SSL Certificate ก่อนหมดอายุเสมอ และตรวจสอบด้วย SSL Checker ทุก 3 เดือน
  • หลีกเลี่ยงการอัปเดต Plugin หรือ Theme ในช่วง Traffic สูง และทดสอบ Checkout หลังอัปเดตทุกครั้ง
  • เปิด WooCommerce Order Notes ให้บันทึก Webhook Response ทุกครั้ง เพื่อให้ตรวจสอบย้อนหลังได้
  • ถ้าใช้ Caching Plugin ให้ Exclude หน้า Checkout, Cart, และ Webhook URL ออกจาก Cache ทั้งหมด ดูเพิ่มที่ Cart และ Checkout ใน WooCommerce โหลดช้า

เมื่อไหร่ควรขอความช่วยเหลือจากผู้เชี่ยวชาญ

ถ้าคุณทำตามขั้นตอนข้างต้นครบแล้วแต่ Order ยังไม่เข้า หรือปัญหาเกิดขึ้นซ้ำ ๆ โดยไม่ทราบสาเหตุ อาจมีปัญหาที่ระดับ Server Configuration, Database Integrity, หรือ Code Conflict ที่ต้องใช้ผู้เชี่ยวชาญวินิจฉัย ทีมงานของเรารับแก้ปัญหา WooCommerceโดยเฉพาะ พร้อมตรวจสอบ Log และ Config จริงบนเซิร์ฟเวอร์ของคุณ ไม่ใช่แค่แนะนำตามทั่วไป

คำถามที่พบบ่อย

Order ไม่เข้าแต่เงินถูกตัดไปแล้ว ต้องทำอย่างไร

ให้ตรวจสอบใน Dashboard ของ Payment Gateway ก่อนว่ามีการรับเงินจริงไหม จากนั้นดู WooCommerce Log เพื่อหาว่า Webhook ส่งมาถึงหรือเปล่า ถ้าเงินถูกตัดแต่ไม่มี Order ให้สร้าง Order ด้วยตนเองใน Admin แล้วติดต่อ Gateway เพื่อ Reconcile

สถานะ Pending Payment ค้างนานแค่ไหนถึงถือว่าผิดปกติ

โดยปกติ WooCommerce จะอัปเดตสถานะภายใน 1–5 นาทีหลังชำระเงิน ถ้าเกิน 15 นาทีแล้วยังเป็น Pending Payment ให้เริ่มตรวจสอบ Webhook ได้เลย

ทำไม Webhook ถึงส่งมาไม่ถึง WordPress

สาเหตุที่พบบ่อยคือ Security Plugin หรือ Firewall บล็อก IP ของ Gateway, SSL Certificate ผิดพลาด, หรือเว็บล่มในช่วงที่ Gateway พยายามส่ง ตรวจ Firewall Log และ Uptime Log ก่อนเป็นอันดับแรก

ปิด Plugin ทีละตัวแล้วยังหาสาเหตุไม่ได้ ต้องทำอย่างไร

ให้ลองสลับไปใช้ Theme Default (Storefront หรือ Twenty Twenty-Four) ชั่วคราว ถ้า Order เริ่มเข้าปกติแสดงว่าปัญหาอยู่ใน Custom Theme หรือ Child Theme หากยังไม่ได้ผลควรตรวจ Server Error Log และ PHP Error Log โดยตรง

อ่านบทความหลักของหมวดนี้ WooCommerce Checkout ไม่ได้ เกิดจากอะไร

บทความอื่นในหมวดนี้

LINE ส่งปัญหา