وقتی مشتری سفارش را ثبت میکند اما به درگاه نمیرود، پس از پرداخت به سایت برنمیگردد یا پول کسر میشود ولی سفارش «ناموفق» میماند، هر دقیقه اختلال میتواند به ازدسترفتن فروش و اعتماد منجر شود. خطای درگاه پرداخت ووکامرس همیشه از بانک نیست؛ تنظیمات Callback، SSL، واحد پول، کش، تداخل افزونه، وضعیت سفارش و حتی زمان سرور میتوانند زنجیره پرداخت را مختل کنند.
در این راهنما بهجای تغییرات تصادفی، مسیر پرداخت را مرحلهبهمرحله جدا میکنیم تا محل خطا مشخص شود. پیش از هر تغییر روی سایت زنده، از فایلها و دیتابیس نسخه پشتیبان بگیرید؛ راهنمای بکاپگیری از وردپرس روش امن این کار را توضیح میدهد.
چرخه پرداخت ووکامرس چگونه کار میکند؟
- ووکامرس سفارش را میسازد و مبلغ، واحد پول و اطلاعات لازم را به افزونه درگاه میدهد.
- افزونه یک درخواست به API شرکت پرداخت ارسال و توکن یا Authority دریافت میکند.
- مشتری به صفحه بانک یا پرداختیار منتقل میشود.
- پس از پرداخت، سرویس کاربر را به Callback سایت برمیگرداند.
- افزونه نتیجه را با API درگاه Verify میکند.
- در صورت تأیید، شماره تراکنش ثبت و وضعیت سفارش تغییر میکند.
خرابی هر مرحله نشانه متفاوتی دارد. اگر اصلاً ریدایرکت انجام نمیشود، مشکل معمولاً پیش از دریافت توکن است. اگر پرداخت موفق است ولی سفارش تغییر نمیکند، Callback، Verify یا پردازش وضعیت سفارش باید بررسی شود.
جدول تشخیص سریع خطاهای درگاه
| نشانه | علتهای محتمل | اولین بررسی |
|---|---|---|
| درگاه در صفحه پرداخت دیده نمیشود | غیرفعال بودن، واحد پول یا کشور ناسازگار | تنظیمات Payments و شرایط نمایش |
| پس از کلیک، خطای عمومی نمایش داده میشود | کلید نادرست، API قطع یا پاسخ نامعتبر | لاگ افزونه و پاسخ درخواست |
| ریدایرکت انجام نمیشود | JavaScript، کش، فایروال یا ساخت توکن ناموفق | Console مرورگر و لاگ سرور |
| پرداخت موفق ولی سفارش ناموفق است | Callback مسدود یا Verify ناموفق | URL بازگشت و پاسخ Verify |
| سفارش چند بار ثبت میشود | ارسال تکراری، Refresh یا Webhook تکراری | یادداشت سفارش و شناسه تراکنش |
| فقط برخی مبلغها خطا دارند | حداقل/حداکثر، ریال/تومان یا گردکردن | مبلغ ارسالی و واحد پول |
پیش از عیبیابی چه اطلاعاتی جمع کنیم؟
- زمان دقیق خطا و شناسه سفارش
- پیام نمایشدادهشده به مشتری
- وضعیت سفارش و Order Noteها
- شماره پیگیری یا Authority در صورت ایجاد
- نسخه ووکامرس، وردپرس، PHP و افزونه درگاه
- تغییرات اخیر در افزونه، قالب، کش، CDN یا SSL
- لاگ WooCommerce و Error Log هاست در همان زمان
- مرورگر، دستگاه و شبکهای که خطا در آن رخ داده است
کلید درگاه، رمز API، شماره کارت و داده حساس مشتری را در تیکت یا تصویر عمومی قرار ندهید. لاگ را قبل از ارسال بازبینی و مقادیر محرمانه را حذف کنید.
مرحله اول: وضعیت سرویس و اطلاعات پذیرنده
ابتدا پنل شرکت پرداخت را برای قطعی، محدودیت حساب، دامنه تأییدنشده یا تغییر API بررسی کنید. سپس Merchant ID، کلید خصوصی، حالت Sandbox/Live و دامنه Callback را با اطلاعات رسمی تطبیق دهید. فاصله اضافی هنگام Copy، کلید مربوط به محیط آزمایشی یا ثبت دامنه قدیمی از خطاهای رایج است.
اگر مشکل ناگهانی و بدون تغییر سایت شروع شده، یک تراکنش کممبلغ در محیط کنترلشده آزمایش کنید و وضعیت سرویس را با پشتیبانی درگاه بسنجید. اما «قطعی بانک» را بدون بررسی لاگ نتیجهگیری نکنید.
مرحله دوم: تنظیمات ووکامرس و واحد پول
در WooCommerce > Settings > Payments مطمئن شوید درگاه فعال است و برای کشور، روش ارسال یا نقش کاربر محدود نشده است. برخی افزونهها فقط ریال یا تومان را میپذیرند و تبدیل اشتباه میتواند مبلغ را ده برابر یا یکدهم ارسال کند. مبلغ ارسالی در لاگ را با مجموع سفارش مقایسه کنید.
تخفیف، مالیات، هزینه ارسال و گردکردن اعشار نیز مهماند. اگر خطا فقط برای سبدهای خاص رخ میدهد، یک سفارش با محصول ساده و بدون کد تخفیف بسازید؛ سپس اجزا را یکییکی اضافه کنید تا شرط مشکلساز مشخص شود.
مرحله سوم: Callback و REST API را بررسی کنید
URL بازگشت باید با دامنه اصلی، HTTPS و مسیر اعلامشده توسط افزونه مطابقت داشته باشد. تغییر دامنه، انتقال از www به بدون www، اجبار Slash، افزونه امنیتی یا قانون فایروال ممکن است Callback را Redirect یا Block کند. پاسخ این URL نباید نیازمند ورود، کپچا یا Cookie خاص باشد.
اگر درگاه از Webhook یا REST API استفاده میکند، مسیر مربوطه را در فایروال، CDN و افزونه امنیتی Allow کنید؛ اما کل REST API را بیدلیل باز یا بسته نکنید. لاگ Access سرور نشان میدهد درخواست شرکت پرداخت به سایت رسیده، چه Status Code گرفته و آیا Redirect شده است.
مرحله چهارم: SSL، DNS و ساعت سرور
گواهی منقضی، زنجیره ناقص یا Mixed Content میتواند ارتباط امن را مختل کند. دامنه Callback باید از بیرون با HTTPS معتبر باز شود و به یک نسخه نهایی ثابت برسد. اگر سایت پشت CDN است، حالت SSL میان CDN و Origin نیز باید صحیح باشد.
بعضی APIها Timestamp یا امضای زماندار دارند. اختلاف ساعت زیاد میان سرور و سرویس پرداخت، درخواست را نامعتبر میکند. Timezone وردپرس برای نمایش اهمیت دارد، اما ساعت سیستم سرور باید با NTP هماهنگ باشد.
مرحله پنجم: کش و بهینهسازی را موقتاً جدا کنید
صفحات Cart، Checkout، My Account و Endpointهای پرداخت نباید Cache عمومی شوند. Minify یا Delay کردن JavaScript میتواند رویداد ثبت سفارش یا Redirect را بشکند. برای تست:
- کش صفحه و Object Cache را پاک کنید.
- صفحات ووکامرس و پارامترهای پرداخت را از Cache خارج کنید.
- Delay/Defer اسکریپتها را موقتاً برای Checkout غیرفعال کنید.
- تست را در پنجره Private و با CDN Purge شده انجام دهید.
- پس از یافتن علت، فقط استثنای لازم را نگه دارید.
غیرفعالکردن دائمی همه بهینهسازیها راهحل خوبی نیست. هدف، یافتن قانون یا فایل مشخصی است که فرایند پرداخت را مختل میکند. راهنمای افزایش سرعت ووکامرس درباره استثناهای لازم برای صفحات پویا توضیح میدهد.
مرحله ششم: تداخل افزونه و قالب را ایمن تست کنید
روی Staging، همه افزونهها بهجز ووکامرس و درگاه را غیرفعال و قالب پیشفرض سازگار را فعال کنید. اگر پرداخت درست شد، افزونهها را گروهی و سپس یکییکی فعال کنید. افزونههای تخفیف، عضویت، چندارزی، Checkout Builder، امنیت، کش و تغییر وضعیت سفارش در اولویت بررسیاند.
این تست را روی فروشگاه زنده در ساعت فروش انجام ندهید. اگر Staging درگاه واقعی را پشتیبانی نمیکند، از Sandbox یا مبلغ کنترلشده استفاده کنید و کلیدهای محیط آزمایش را با Production مخلوط نکنید.
مرحله هفتم: لاگ ووکامرس را درست بخوانید
در WooCommerce > Status > Logs منبع مربوط به درگاه و تاریخ خطا را انتخاب کنید. توالی Request، Token، Redirect، Callback و Verify را دنبال کنید. کد خطا را با مستندات همان شرکت پرداخت تطبیق دهید؛ عبارتهای عمومی مانند «تراکنش ناموفق» جزئیات کافی ندارند.
حالت Debug را فقط بهاندازه لازم فعال کنید. فایل لاگ نباید کلید خصوصی، داده کارت یا اطلاعات شخصی را ذخیره کند. پس از پایان عیبیابی، Debug اضافه را خاموش و لاگهای حساس را طبق سیاست نگهداری پاک کنید.
وضعیت سفارشها چه معنایی دارد؟
- Pending payment: سفارش ساخته شده اما پرداخت هنوز تأیید نشده است.
- Failed: پرداخت رد یا فرایند ناموفق تشخیص داده شده است.
- On hold: سفارش در انتظار بررسی یا روش پرداخت غیرآنی است.
- Processing: پرداخت انجام شده و سفارش دارای کالای نیازمند پردازش است.
- Completed: سفارش تکمیل شده؛ برای محصول مجازی ممکن است خودکار رخ دهد.
وضعیت سفارش را فقط برای «حل ظاهری» دستی تغییر ندهید. ابتدا شماره تراکنش و نتیجه Verify را در پنل درگاه تطبیق دهید تا ارسال کالا بدون پرداخت واقعی یا پرداخت دوباره رخ ندهد.
پرداخت موفق است اما ایمیل ارسال نمیشود
این حالت لزوماً خطای درگاه نیست. اگر Order Note نشان میدهد وضعیت درست تغییر کرده، تنظیمات ایمیل ووکامرس و تحویل SMTP را جدا بررسی کنید. مقاله رفع مشکل ارسال ایمیل وردپرس مسیر تشخیص این بخش را پوشش میدهد.
مثال عملی: پول کسر شده اما سفارش ناموفق است
فرض کنید مشتری در بانک پیام موفق میبیند، اما پس از بازگشت سفارش Failed میشود. ابتدا شماره پیگیری را در پنل پرداخت پیدا کنید. سپس Order Note و لاگ افزونه را در همان ثانیه بررسی کنید. اگر Callback به سایت رسیده ولی Verify با خطای مبلغ یا Authority پاسخ داده، مقدار ارسالی، واحد پول و داده ذخیرهشده سفارش را مقایسه کنید.
اگر Callback اصلاً در Access Log نیست، آدرس ثبتشده، DNS، فایروال یا قطعی ارتباط میان سرویس و هاست مطرح است. اگر Callback پاسخ ۳۰۱ یا ۴۰۳ گرفته، Redirect دامنه یا قانون امنیتی باید اصلاح شود. پس از تأیید رسمی تراکنش، وضعیت سفارش طبق مستندات درگاه اصلاح و از ثبت یا ارسال دوباره جلوگیری میشود.
چه زمانی خطای ۵۰۰ یا PHP عامل مشکل است؟
اگر کلیک پرداخت یا Callback پاسخ ۵۰۰ میدهد، Error Log را برای Fatal Error، Memory Limit، ناسازگاری PHP یا فراخوانی تابع حذفشده بررسی کنید. نسخه قدیمی افزونه درگاه ممکن است با نسخه جدید ووکامرس یا PHP سازگار نباشد. راهنمای رفع خطای ۵۰۰ وردپرس روش تفکیک این خطاها را توضیح میدهد.
نمایش خطای PHP روی سایت زنده را فعال نکنید؛ خطاها باید در فایل لاگ امن ثبت شوند. افشای مسیر سرور یا کلیدها میتواند ریسک امنیتی ایجاد کند.
چکلیست رفع خطای درگاه ووکامرس
- وضعیت سرویس پرداخت و حساب پذیرنده بررسی شده است.
- Merchant ID و کلیدها مربوط به محیط درست هستند.
- واحد پول و مبلغ ارسالشده با سفارش تطبیق دارد.
- دامنه و Callback با HTTPS معتبر و بدون Redirect اضافی در دسترساند.
- فایروال، CDN و افزونه امنیتی درخواست بازگشت را مسدود نمیکنند.
- Cart، Checkout و Endpointهای پرداخت از کش خارج شدهاند.
- JavaScript صفحه پرداخت در Console خطا ندارد.
- تداخل افزونه و قالب روی Staging آزمایش شده است.
- لاگ درگاه، WooCommerce و سرور در یک زمان مقایسه شدهاند.
- وضعیت و شماره تراکنش سفارشهای مشکوک با پنل پرداخت تطبیق داده شده است.
- پس از اصلاح، پرداخت موفق، ناموفق و لغوشده هر سه تست شدهاند.
- ایمیل سفارش و بازگشت موجودی نیز کنترل شدهاند.
پیشگیری از اختلال بعدی
درگاه و ووکامرس را بدون تست همزمان بهروزرسانی نکنید. تغییرات را ابتدا روی Staging اجرا، یک تراکنش آزمایشی کامل و سناریوی انصراف را بررسی کنید. مانیتورینگ خطاهای Checkout، افزایش سفارشهای Failed و پاسخ Callback میتواند اختلال را پیش از گزارش گسترده مشتریان آشکار کند.
حداقل یک درگاه جایگزین معتبر نیز برای تداوم فروش مفید است؛ اما نمایش تعداد زیادی روش نامرتبط صفحه پرداخت را شلوغ میکند. مقاله بهینهسازی صفحه پرداخت ووکامرس به تعادل میان انتخاب، اعتماد و سادگی پرداخته است.
چه زمانی پشتیبانی تخصصی لازم است؟
اگر پول مشتری کسر شده، سفارشهای تکراری ایجاد میشوند، Callback بهشکل متناوب از دست میرود یا خطا فقط زیر بار بالا رخ میدهد، تغییرات حدسی روی سایت زنده پرریسک است. متخصص باید لاگ اپلیکیشن، سرور، CDN و پنل پرداخت را با Timeline واحد بررسی کند.
تکوبیت میتواند عیبیابی درگاه، تداخل افزونهها، تنظیم کش و پایش سفارشهای ناموفق را در قالب خدمات پشتیبانی وردپرس و ووکامرس انجام دهد؛ هدف فقط بازشدن درگاه نیست، بلکه ثبت امن و قابل پیگیری تراکنش است.
جمعبندی
برای رفع خطای درگاه پرداخت ووکامرس باید زنجیره سفارش، ساخت توکن، انتقال، Callback، Verify و تغییر وضعیت را جداگانه بررسی کنید. پیام خطای مشتری نقطه شروع است؛ پاسخ API، Access Log، Order Note و شناسه تراکنش شواهد واقعیاند. واحد پول، SSL، کش، فایروال و تداخل افزونه از رایجترین عوامل هستند.
پیش از اصلاح، بکاپ بگیرید؛ تست تداخل را روی Staging انجام دهید و هرگز بدون تأیید پنل پرداخت، سفارش را دستی «پرداختشده» نکنید. بعد از رفع مشکل نیز سناریوهای موفق، ناموفق و لغوشده را آزمایش و مانیتورینگ مستمر برقرار کنید.
سؤالات متداول
چرا درگاه در صفحه پرداخت ووکامرس نمایش داده نمیشود؟
غیرفعال بودن درگاه، کشور یا واحد پول ناسازگار، شرط روش ارسال، کلید نامعتبر یا خطای افزونه میتواند مانع نمایش شود. ابتدا تنظیمات Payments و لاگ را بررسی کنید.
چرا پول کسر میشود اما سفارش ناموفق میماند؟
معمولاً Callback به سایت نمیرسد یا Verify شکست میخورد. شماره تراکنش، پاسخ Verify، URL بازگشت، فایروال و واحد مبلغ باید با پنل پرداخت تطبیق داده شوند.
آیا کش میتواند درگاه پرداخت را خراب کند؟
بله. کش Checkout یا تأخیر اشتباه JavaScript ممکن است Nonce، Session یا Redirect را مختل کند. صفحات و Endpointهای پویا باید از کش عمومی خارج شوند.
بعد از رفع خطا چه تستهایی لازم است؟
پرداخت موفق، پرداخت ردشده، انصراف مشتری، بازگشت به سایت، ثبت شماره تراکنش، وضعیت سفارش، ایمیل و موجودی محصول باید بررسی شوند.
آیا میتوان سفارش را دستی Processing کرد؟
فقط پس از تطبیق قطعی تراکنش با پنل شرکت پرداخت و اطمینان از مبلغ و شناسه سفارش. تغییر دستی بدون Verify میتواند باعث ارسال کالا بدون پرداخت یا دوبارهکاری مالی شود.
