
สรุปคำตอบ
WooCommerce Order ไม่เข้าส่วนใหญ่เกิดจาก Webhook หรือ Callback จาก Payment Gateway ส่งกลับมาไม่ถึงเว็บ ทำให้ไม่มี Order หรือสถานะค้างที่ Pending Payment สาเหตุที่พบบ่อยคือ Webhook URL ผิด, Security Plugin หรือ Firewall บล็อก IP ของ Gateway, SSL หมดอายุ, PHP Timeout หรือ Memory ไม่พอ และใช้ Test Key บนเว็บจริง จุดเริ่มต้นที่ดีที่สุดคือดู Log ใน Dashboard ของ Gateway ว่า Webhook ได้รับ Response 200 OK หรือไม่ แล้วตรวจ WooCommerce → Status → Logs และ Firewall Log ต่อ
หนึ่งในปัญหาที่เจ้าของร้านค้าออนไลน์พบบ่อยที่สุดคือ 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 ถูกยิงมาหลายครั้ง

สาเหตุหลักที่ทำให้ Order ไม่เข้า
1. Webhook / Callback ล้มเหลว
Payment Gateway เช่น Omise (รวม PromptPay ที่ผ่าน Omise) หรือ PayPal จะส่ง HTTP request กลับมาที่เว็บคุณเพื่อแจ้งผลการชำระเงิน (ดูเอกสาร Webhooks ของ Omise และคู่มือ Payment Gateway API ของ WooCommerce) ถ้า WordPress ตอบไม่ได้ (เว็บล่ม, มี Firewall บล็อก, URL ผิด) สถานะก็จะไม่อัปเดต อ่านเพิ่มเติมได้ที่ Webhook และ Callback ในระบบชำระเงินคืออะไร
2. Plugin ขัดแย้งกัน
Security Plugin บางตัว เช่น Wordfence หรือ iThemes Security อาจบล็อก IP ของ Payment Gateway ทำให้ Webhook ส่งมาไม่ถึง ซึ่ง Omise เผยแพร่ IP ของเซิร์ฟเวอร์ webhook ไว้ในเอกสารเพื่อให้นำไป allowlist ปัญหานี้คือตัวอย่างคลาสสิกของ Plugin Conflict ใน WooCommerce
3. SSL / HTTPS ผิดพลาด
Omise กำหนดให้ปลายทาง Webhook ต้องเป็น HTTPS ที่มี SSL Certificate ถูกต้อง (เอกสาร Webhooks ของ Omise) Gateway เจ้าอื่นควรเช็กในเอกสารของเจ้านั้น ถ้า SSL หมดอายุหรือ Mixed Content Error จะทำให้ Webhook ถูกปฏิเสธ
4. PHP Timeout หรือ Memory Limit ต่ำเกินไป
เมื่อ WooCommerce รับ Webhook และพยายามสร้าง Order แต่เซิร์ฟเวอร์หมดเวลาก่อน Order ก็จะไม่ถูกบันทึก Stripe แนะนำให้ endpoint ตอบ 2xx ทันทีก่อนทำงานหนักเพื่อเลี่ยงปัญหานี้
5. ปัญหาเฉพาะ Payment Gateway
เช่น Omise ที่ต้องเพิ่ม Webhook endpoint ในหน้า Dashboard ของ Omise เอง (ยกเว้นเปิด Dynamic Webhook ในปลั๊กอิน ตามซอร์สโค้ดหน้าตั้งค่า) และตั้งแยกกันระหว่างโหมด Test กับ Live ตามเอกสาร Webhooks ถ้าตั้งค่าผิดหรือใช้ 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(วิธีเปิดดู Log อยู่ในคู่มือ Debugging in WordPress) - ทดสอบ Webhook URL ด้วย Postman หรือ RequestBin: ทดสอบว่า URL
https://yoursite.com/?wc-api=WC_Gateway_Paypal(หรือ Gateway ของคุณ เช่น Omise ที่ใช้/wp-json/omise/webhooks) ตอบสนองได้หรือไม่ รูปแบบ wc-api มาจากคู่มือ Payment Gateway API ของ WooCommerce - ตรวจสอบ Firewall Log: ถ้าใช้ Wordfence ไปดูที่ Wordfence → Firewall → Blocked Requests ว่ามี IP ของ Payment Gateway ถูกบล็อกไหม
- ตรวจ Dashboard ของ Payment Gateway: เช่น Omise Dashboard จะแสดงว่า Webhook ส่งแล้วได้รับ Response 200 OK หรือเปล่า

วิธีแก้ไขทีละขั้นตอน
ขั้นที่ 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
WooCommerce กำหนดให้ WordPress memory limit อย่างน้อย 256 MB ตามข้อกำหนดเซิร์ฟเวอร์ เพิ่มใน wp-config.php:
define('WP_MEMORY_LIMIT', '256M');
และตั้ง max_execution_time ใน php.ini หรือ .htaccess (คำอธิบายที่ php.net ค่าเริ่มต้นคือ 30 วินาที) เช่น 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 นานผิดปกติไหม (Action Scheduler ทำงานผ่าน WP-Cron และถือว่า action ที่รันเกิน 5 นาทีหมดเวลาแล้วตั้งเป็น failed ตามเอกสารของมัน) ถ้ามีให้กด Retry
วิธีป้องกันไม่ให้เกิดซ้ำ
- ตั้ง 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 ทั้งหมด (คู่มือ Caching ของ WooCommerceระบุให้ยกเว้น Cart, My Account และ Checkout) ดูเพิ่มที่ 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 โดยตรง
Webhook ในระบบชำระเงินคืออะไร?
Webhook คือการที่ระบบ Payment Gateway ส่ง HTTP request กลับมาที่เว็บโดยอัตโนมัติเพื่อแจ้งผลการชำระเงิน WooCommerce ใช้ข้อมูลนี้อัปเดตสถานะ Order ถ้า Webhook ส่งมาไม่ถึง สถานะจะไม่เปลี่ยนแม้ลูกค้าจ่ายเงินแล้ว
ทำไม WooCommerce มี Order ซ้ำกัน?
มักเกิดจากลูกค้ากดสั่งซื้อซ้ำ หรือ Webhook ถูกส่งมาหลายครั้ง ให้ตรวจประวัติการส่ง Webhook ใน Dashboard ของ Gateway และ Order Notes ใน WooCommerce ก่อนยกเลิก Order ที่ซ้ำ
แหล่งอ้างอิง
- Omise. (ม.ป.ป.). Webhooks. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://docs.omise.co/api-webhooks
- Omise. (ม.ป.ป.). omise-page-settings.php (ซอร์สโค้ดปลั๊กอิน Omise for WooCommerce). สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://github.com/omise/omise-woocommerce/blob/master/includes/admin/views/omise-page-settings.php
- WooCommerce. (ม.ป.ป.). Payment Gateway API. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://developer.woocommerce.com/docs/features/payments/payment-gateway-api/
- Stripe. (ม.ป.ป.). Webhooks. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://docs.stripe.com/webhooks
- WordPress.org. (ม.ป.ป.). Debugging in WordPress. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://developer.wordpress.org/advanced-administration/debug/debug-wordpress/
- WooCommerce. (ม.ป.ป.). Server requirements. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://woocommerce.com/document/server-requirements/
- PHP Group. (ม.ป.ป.). Description of core php.ini directives. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://www.php.net/manual/en/info.configuration.php
- Action Scheduler. (ม.ป.ป.). Action Scheduler. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://actionscheduler.org/
- WooCommerce. (ม.ป.ป.). Configuring caching plugins. สืบค้นเมื่อ 3 พฤศจิกายน 2026, จาก https://developer.woocommerce.com/docs/best-practices/performance/configuring-caching-plugins
