پرداخت در ووکامرس یکی از حساسترین بخشهای هر فروشگاه اینترنتی است. کوچکترین اختلال در درگاه باعث از دست رفتن فروش، کاهش اعتماد مشتری و افت نرخ تبدیل میشود. در این محتوا تمام خطاهای رایج ووکامرس را بررسی میکنیم و برای هر کدام بهترین و سادهترین راهحل را ارائه میدهیم؛ بدون پیچیدگی و بدون مرحلهبندی طولانی.
تمام راهکارها قابل اجرا برای هر قالب، افزونه، هاست و درگاه پرداخت ایرانی است.
۱. خطای هدایت نشدن کاربر به درگاه پرداخت
کاربر روی دکمه «پرداخت» کلیک میکند اما هیچ اتفاقی نمیافتد یا صفحه رفرش میشود.
دلایل رایج
-
تداخل JavaScript بین قالب/افزونه با ووکامرس
-
کش شدن صفحه checkout
-
غیر فعال بودن درگاه
-
فعال نبودن حملونقل یا کشور
-
مشکل در واحد پول یا توابع PHP
راهحل سریع
-
استفاده از Health Check & Troubleshooting برای شناسایی تداخل
-
خارج کردن مسیرهای زیر از کش (LiteSpeed / Cloudflare / WP Rocket):
/checkout
/cart
/my-account
/thank-you
-
فعال کردن واحد پول درست (IRR یا IRT)
-
حذف و فعالسازی دوباره درگاه
-
بروز رسانی ووکامرس و قالب
۲. خطای «Callback URL» یا ثبت نشدن وضعیت سفارش بعد از پرداخت
پرداخت موفق انجام میشود، پول کم میشود، اما سفارش در حالت «در انتظار پرداخت» میماند.
دلایل
-
مسیر بازگشت تراکنش اشتباه است
-
SSL نیمهفعال یا دارای خطاست
-
فایروال هاست ارتباط درگاه → سایت را مسدود کرده
-
کش Callback توسط افزونههای امنیتی یا CDN
راهکار حرفهای + کد ساده برای رفع مشکل
در functions.php این کد را بگذارید تا پرداختهای صحیح همیشه ثبت شوند:
add_action('woocommerce_thankyou', 'weboperator_force_payment_complete', 10, 1);
function weboperator_force_payment_complete($order_id) {
if (!$order_id) return;
$order = wc_get_order($order_id);
if ($order->is_paid() && $order->get_status() !== ‘completed’) {
$order->update_status(‘completed’, ‘Payment verified automatically.’);
}
}
این کد یکی از بهترین روشهای عملی برای رفع «پرداخت ثبت نمیشود» است.
۳. خطای «مبلغ صحیح نیست» یا مشکلات تومان / ریال
درگاههای پرداخت ایرانی هرکدام با یک واحد پول سازگارند. اختلاف تومان/ریال باعث خطا، برگشت پول، یا ثبت اشتباه مبلغ میشود.
راهکار
اگر نیاز دارید علامتها استاندارد شوند، این کد را اضافه کنید:
add_filter('woocommerce_currency_symbol', 'weboperator_fix_currency', 10, 2);
function weboperator_fix_currency($symbol, $currency) {
if ($currency === 'IRT') return 'تومان';
if ($currency === 'IRR') return 'ریال';
return $symbol;
}
نکته مهم:
-
زرینپال معمولاً با تومان (IRT) سازگارتر است.
-
درگاههای دیگر ممکن است فقط ریال (IRR) را بپذیرند.
۴. خطای «پرداخت کامل شد اما سفارش در ووکامرس دیده نمیشود»
پرداخت انجام شده اما چون callback fail شده، سفارش ایجاد نمیشود.
راهکار
-
بررسی خطا در مسیر زیر:
WooCommerce → وضعیت → گزارشها -
غیرفعال کردن افزونههای امنیتی مثل:
Wordfence, iThemes, Shield, All in One Security -
فعال کردن IP درگاه پرداخت در فایروال هاست
۵. خطاهای مربوط به SSL و HTTPS
درگاه پرداخت فقط روی سایت امن (HTTPS) کار میکند.
اگر SSL “نیمهفعال” باشد:
-
صفحه checkout امن نیست
-
callback fail میشود
-
درگاه پیغام «آدرس معتبر نیست» میدهد
راهحل
آدرس سایت باید یکدست باشد:
✓ همه جا HTTPS
✗ ترکیب HTTP و HTTPS
ابزار بررسی:
whynopadlock.com
۶. خطای سفید (White Screen) هنگام پرداخت
صفحه پرداخت سفید میشود.
علت
خطای PHP یا محدودیت حافظه
راهکار
در wp-config.php مقدار زیر را افزایش دهید:
define( 'WP_MEMORY_LIMIT', '512M' );
اگر مشکل ادامه داشت، فایل error_log هاست را بررسی کنید.
۷. خطای تداخل افزونهها (Plugin Conflict)
یکی از شایعترین مشکلات که باعث:
-
عدم هدایت به درگاه
-
عدم آپدیت وضعیت سفارش
-
ارسال توکن اشتباه
-
مشکلات JS در checkout
میشود.
بهترین و سادهترین راهکار
نصب افزونه زیر:
✔ Health Check & Troubleshooting
(بدون خراب کردن سایت، افزونهها را بهصورت مجازی غیرفعال میکند)
با آن:
-
فقط ووکامرس + درگاه را فعال کنید
-
تست بگیرید
-
افزونه مشکلساز را پیدا کنید
این روش استانداردترین راه بررسی تداخل است.
۸. خطای ارسال نشدن ایمیل بعد از پرداخت
پرداخت انجام میشود، ولی ایمیلها نمیرسند.
دلایل
-
مشکل SMTP
-
محدودیت هاست
-
غیرفعال بودن cron وردپرس
راهکار سریع
نصب افزونه SMTP:
-
FluentSMTP
-
WP Mail SMTP
و اتصال به سرویسهایی مثل:
-
Mailersend
-
Gmail API
-
Elastic Email
۹. خطای برگشت نخوردن مشتری بعد از پرداخت
پرداخت انجام میشود اما کاربر به سایت برنمیگردد.
دلایل
-
تأخیر در پاسخ درگاه
-
بسته شدن session
-
دیتابیس کند
-
کش Cloudflare
راهکار
برای رفع کامل:
-
Cloudflare → Caching → Bypass URLs
مسیرهای زیر را اضافه کنید:
*/checkout*
*/thank-you*
*/wc-api/*
۱۰. خطای «پرداخت شما با شکست مواجه شد»
پیغامی بدون توضیح در Checkout نمایش داده میشود.
علتهای معمول
-
اطلاعات درگاه اشتباه
-
سرور پاسخگو نیست
-
nonce وردپرس منقضی شده
-
افزونه امنیتی درخواست را بلوکه کرده
راهکار
-
زمان سرور را با NTP Sync کنید
-
درگاه را دوباره تنظیم کنید
-
PHP 8.1 یا 8.2 استفاده کنید
-
افزونه امنیتی را موقتاً خاموش کنید
۱۱. خطاهای مربوط به قالب
بعضی قالبها Checkout اختصاصی دارند که با ووکامرس استاندارد هماهنگ نیست.
راهکار
-
موقتاً قالب را روی Storefront بگذارید
-
اگر مشکل رفع شد → قالب مقصر است
-
بعضی قالبها با درگاهها تداخل JS دارند (بهویژه قالبهای سنگین المنتوری)
۱۲. خطای عدم ذخیره آدرس مشتری
سفارش ثبت میشود اما آدرسها خالی است.
علت
-
تغییر فرم checkout توسط افزونه
-
Ajax تداخل دارد
راهکار
تغییر فرم را غیرفعال کنید.
افزونههایی مثل:
Checkout Field Editor → ممکن است مشکل ایجاد کنند.
۱۳. خطای «یکی از فیلدها خالی است» با وجود تکمیل بودن فرم
این خطا معمولاً در قالبهای شخصیسازی شده رخ میدهد.
راهکار
غیرفعال کردن JS Validation قالب
یا استفاده از این هوک برای جلوگیری از اعتبارسنجی اضافی:
add_filter('woocommerce_checkout_fields', function($fields) {
foreach ($fields as &$fieldset) {
foreach ($fieldset as &$field) {
$field['required'] = false;
}
}
return $fields;
});
(فقط برای تست – پیشنهاد اجرای دائمی نیست)
۱۴. بهترین راهحل نهایی برای رفع تمام خطاها
اگر بخواهیم یک راهحل واحد، مطمئن و بیدردسر معرفی کنیم:
استفاده از درگاه پرداخت رسمی + غیرکش شدن Checkout + رفع تداخل با افزونه Health Check
این سه کار، ۹۰٪ مشکلات پرداخت ووکامرس را در همان لحظه حل میکند