WooCommerce Troubleshooting

Omise / Opn Payment ไม่อัปเดตสถานะ Order ทำยังไง

Omise / Opn Payment ไม่อัปเดตสถานะ Order ทำยังไง

ปัญหา Omise (ปัจจุบันรีแบรนด์เป็น Opn Payments) ไม่อัปเดตสถานะ Order ถือเป็นหนึ่งในปัญหาที่พบบ่อยที่สุดในร้านค้า WooCommerce ที่ใช้ระบบชำระเงินของไทย ลูกค้าโอนเงินหรือสแกน QR แล้วหน้าร้านยังแสดงสถานะ “รอดำเนินการ” ไม่เปลี่ยนเป็น “ชำระเงินแล้ว” ทำให้ทั้งเจ้าของร้านและลูกค้าสับสน และอาจสูญเสียยอดขายได้ บทความนี้รวบรวมสาเหตุที่แท้จริงและวิธีแก้ไขแบบทีละขั้นตอน

nn

อาการที่พบและสาเหตุหลัก

nn

อาการที่ชัดเจนคือลูกค้าจ่ายเงินสำเร็จ (เห็นยอดตัดในแอปธนาคาร) แต่หน้าร้านยังคงแสดง Order Status เป็น Pending Payment หรือ On Hold อีเมลยืนยันออร์เดอร์ไม่ถูกส่ง และสินค้าไม่ถูกตัดสต็อก สาเหตุหลักแบ่งได้ 3 กลุ่ม

nn

    n

  • Webhook ไม่ทำงาน: Omise/Opn ส่ง event กลับมาที่ WordPress แต่เซิร์ฟเวอร์ไม่ได้รับ หรือรับแล้วตอบ error — นี่คือสาเหตุที่พบมากที่สุด ดูรายละเอียดเพิ่มเติมได้ที่บทความ Webhook และ Callback ในระบบชำระเงินคืออะไร
  • n

  • Plugin เวอร์ชันเก่าหรือ conflict: WooCommerce Omise plugin เวอร์ชันเก่าอาจไม่รองรับ API v3 ของ Opn Payments หรืออาจ conflict กับ plugin อื่น
  • n

  • ตั้งค่า API Key ผิดหรือ mode สลับกัน: ใช้ Test Key ใน Production หรือใส่ Secret Key กับ Public Key สลับกัน
  • n

nn

WooCommerce Checkout / จ่ายเงินไม่ได้ — WP Doctor Thailand
ปัญหาหน้า Checkout และการจ่ายเงินใน WooCommerce

nn

วิธีตรวจสอบก่อนแก้ไข

nn

ก่อนลงมือแก้ ให้ตรวจสอบจุดต่อไปนี้ตามลำดับ เพื่อระบุสาเหตุให้ชัดเจน

nn

    n

  • ดู Omise/Opn Dashboard: เข้า dashboard.omise.co หรือ dashboard.omise.co/v2 แล้วไปที่เมนู Developers > Webhooks ตรวจว่ามี Endpoint URL ของเว็บไซต์ถูกต้องหรือไม่ และดูว่า Event ล่าสุด status เป็น failed หรือไม่
  • n

  • ทดสอบ Webhook URL: URL รูปแบบปกติคือ https://yourdomain.com/?wc-api=omise หรือ https://yourdomain.com/wc-api/omise/ ลองเปิด URL นี้ในเบราว์เซอร์ ถ้าขึ้น 404 หรือ redirect แปลกให้สังเกตไว้
  • n

  • ดู WooCommerce System Status: ไปที่ WooCommerce > Status > Logs เลือก log ชื่อ woocommerce-omise-YYYY-MM-DD หรือ omise จะเห็น error message ที่เกิดขึ้นจริง
  • n

  • เช็ค Plugin Version: ไปที่ Plugins ตรวจว่า WooCommerce Omise / Opn Payments plugin เป็นเวอร์ชันล่าสุดหรือไม่
  • n

nn

จุดสำคัญ: ปัญหาสถานะ Order ไม่อัปเดต 80% เกิดจาก Webhook URL ผิดหรือถูกบล็อก ให้ตรวจจุดนี้เป็นอันดับแรกเสมอ

nn

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

nn

1. ตั้งค่า Webhook ใน Omise/Opn Dashboard ใหม่

n

    n

  • เข้า Omise/Opn Dashboard > Developers > Webhooks
  • n

  • ลบ Endpoint เก่าออก แล้วเพิ่มใหม่ด้วย URL: https://yourdomain.com/?wc-api=omise
  • n

  • เลือก Events ที่ต้องการอย่างน้อย: charge.complete, charge.failed
  • n

  • กด Save แล้วกด Test ถ้ามีปุ่ม
  • n

nn

2. ตรวจสอบและแก้ไข API Key ใน WooCommerce

n

    n

  • ไปที่ WooCommerce > Settings > Payments > Omise (หรือ Opn Payments) > Manage
  • n

  • ตรวจว่า Live Secret Key ขึ้นต้นด้วย skey_live_ และ Live Public Key ขึ้นต้นด้วย pkey_live_
  • n

  • ตรวจว่า mode เป็น Live ไม่ใช่ Test (ถ้าร้านเปิดจริงแล้ว)
  • n

nn

3. อัปเดต Plugin และแก้ Conflict

n

    n

  • อัปเดต WooCommerce Omise / Opn Payments plugin เป็นเวอร์ชันล่าสุด
  • n

  • ถ้ายังไม่หาย ลอง deactivate plugin อื่นทีละตัว โดยเฉพาะ security plugin เช่น Wordfence หรือ firewall ที่อาจบล็อก POST request จากภายนอก — ดูเพิ่มเติมที่ วิธีแก้ Plugin Conflict ใน WooCommerce
  • n

nn

4. ตรวจสอบ Firewall และ Hosting

n

    n

  • Hosting บางเจ้าบล็อก POST request จาก IP ต่างประเทศ ให้ whitelist IP range ของ Omise/Opn (ดูได้จาก Omise Docs)
  • n

  • ถ้าใช้ Cloudflare ตรวจว่าไม่มีกฎ WAF บล็อก /?wc-api=omise
  • n

  • ถ้าเว็บมี WordPress Security Plugin ให้ตรวจ Log ว่าบล็อก request ไปหรือไม่
  • n

nn

แก้ปัญหา WooCommerce — WP Doctor Thailand
ตรวจสอบและแก้ปัญหาระบบร้านค้า WooCommerce

nn

วิธีอัปเดตสถานะ Order ที่ค้างอยู่ด้วยตนเอง

nn

ระหว่างที่ยังแก้ไขอยู่ ถ้ามี Order ที่ลูกค้าจ่ายแล้วแต่สถานะยังค้าง ให้แก้ไขชั่วคราวดังนี้

n

    n

  • ไปที่ WooCommerce > Orders > เปิด Order ที่ต้องการ
  • n

  • คลิก dropdown Order Status แล้วเปลี่ยนเป็น Processing หรือ Completed ตามความเหมาะสม
  • n

  • กด Update เพื่อบันทึก — ระบบจะส่งอีเมลยืนยันให้ลูกค้าโดยอัตโนมัติ
  • n

nn

สำหรับปัญหา Order ไม่เข้าระบบในแง่อื่น สามารถอ่านเพิ่มเติมได้ที่ WooCommerce Order ไม่เข้า แก้ยังไง และถ้าพบว่าอีเมลยืนยันไม่ถูกส่งควบคู่กันให้อ่านที่ WooCommerce Email ไม่ส่ง

nn

วิธีป้องกันปัญหาในอนาคต

nn

    n

  • ทดสอบ Webhook ทุกครั้งหลังอัปเดต WooCommerce หรือ Omise plugin
  • n

  • เปิดใช้ WooCommerce Logging เพื่อจับ error ไว้ตรวจสอบ (WooCommerce > Settings > Advanced > Logging)
  • n

  • ตั้ง alert ใน Opn Dashboard เมื่อ Webhook มี failed event
  • n

  • ทดสอบการชำระเงินในโหมด Test ก่อน Go Live ทุกครั้งที่มีการเปลี่ยนแปลง
  • n

nn

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

nn

ถ้าทำตามขั้นตอนข้างต้นครบแล้วแต่ยังไม่หาย หรือพบว่า Webhook Log แสดง error แปลก เช่น 500 Internal Server Error, 403 Forbidden, หรือ database error ควรให้ผู้เชี่ยวชาญเข้ามาดู เพราะอาจมีปัญหาระดับ server configuration หรือ code conflict ที่ต้องแก้โดยตรง ติดต่อได้ผ่าน บริการแก้ปัญหา WooCommerce ของเรา นอกจากนี้ถ้าปัญหาเกิดที่ขั้นตอน checkout ทั้งหมดไม่ใช่แค่ Omise ให้ดูที่ WooCommerce Checkout ไม่ได้ กดสั่งซื้อไม่ทำงาน แก้ยังไง เป็นบทความหลักของหมวดนี้

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

ลูกค้าจ่ายเงินผ่าน Omise แล้วแต่ Order ยังเป็น Pending ต้องรอนานแค่ไหน?

ปกติ Omise จะส่ง Webhook กลับมาภายใน 1-2 นาที ถ้าเกิน 5 นาทีแล้วสถานะยังไม่เปลี่ยน มักหมายความว่า Webhook ไม่ทำงาน ให้ตรวจสอบ Webhook URL และ Log ทันที

Webhook URL ของ WooCommerce Omise คืออะไร?

URL มาตรฐานคือ https://yourdomain.com/?wc-api=omise ต้องใส่ URL นี้ใน Omise/Opn Dashboard ภายใต้ Developers > Webhooks และเลือก Event ที่ต้องการด้วย

ใช้ Test Mode อยู่แต่สถานะไม่อัปเดต แก้ยังไง?

ในโหมด Test ต้องใช้ Test Secret Key (skey_test_) และ Test Public Key (pkey_test_) คู่กัน และต้องตั้ง Webhook ใน Test Environment ของ Dashboard แยกต่างหากจาก Live Environment

Cloudflare ทำให้ Omise Webhook ไม่ทำงานได้ไหม?

ได้ครับ กฎ WAF หรือ Bot Fight Mode ของ Cloudflare อาจบล็อก POST request จาก Omise ให้ลอง create Page Rule หรือ WAF Rule เพื่อ bypass /?wc-api=omise หรือ whitelist IP ของ Omise

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

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

LINE ส่งปัญหา