حل خطای هیچ روش پرداختی موجود نیست در نسخه جدید ووکامرس
- مقالات آموزشی
- بروزرسانی شده در
اگه تازگیا ووکامرس رو به نسخه جدید آپدیت کرده باشین، احتمال زیاد با یه خطای عجیب توی صفحه تسویه حساب مواجه شدین؛ خطایی که میگه «هیچ روش پرداختی در دسترس نیست». این مشکل برای خیلی از کاربرا پیش اومده و باعث شده حسابی گیج بشن، چون همه چیز ظاهراً درست تنظیم شده، درگاه پرداخت فعاله، تنظیمات ووکامرس درسته، اما وقتی مشتری میره برای پرداخت، نه درگاهی نمایش داده میشه، نه راهی برای پرداخت وجود داره، یا اصلاً یه ارور نامفهوم نشون داده میشه.
نکته: این آموزش علاوه بر حل مشکل درگاه پرداخت، مشکل کار با افزونههای ووکامرس مثل فیلد ادیتور رو هم حل میکنه.
آنچه در این مقاله میخوانید
خطای هیچ روش پرداختی موجود نیست
این موضوع توی روزهای اخیر برای خیلی از فروشگاههای آنلاین دردسر درست کرده. مخصوصاً وقتی همه چیز درست به نظر میرسه، اما پرداخت انجام نمیشه. توی این مقاله میخوایم بریم سراغ دلیل این مشکل و قدمبهقدم بررسی کنیم که چطور میتونیم خیلی راحت حلش کنیم.
مشکل دقیقا کجاست؟

حالا بیایم دقیقتر بررسی کنیم ببینیم اصلاً مشکل از کجاست و چی داره اتفاق میافته. فرض کنیم شما افزونه درگاه پرداخت زرینپال رو نصب کردین. همه چی هم درست به نظر میرسه. میرید داخل پیشخوان وردپرس، از بخش ووکامرس ← پیکربندی ← پرداختها، تنظیمات زرینپال رو کامل انجام میدین. کلید API رو وارد میکنید، درگاه رو فعال میکنید، حتی تست هم میکنید که ببینید خطایی نمیده.

اما وقتی وارد سایت میشید و میخواید یه سفارش تستی ثبت کنید، داستان عوض میشه! وارد صفحه تسویه حساب که میشید، یا با یه پیام خطا مواجه میشید که میگه «هیچ روش پرداختی در دسترس نیست»، یا اصلاً خطایی نشون نمیده ولی بازم هیچ درگاهی نمایش داده نمیشه.

یعنی فرم تسویه حساب هست، نام و نام خانوادگی و آدرس و همه چی رو کاربر میتونه وارد کنه، اما جایی برای انتخاب روش پرداخت نمیبینه! نه زرینپال هست، نه حتی یه گزینه ساده برای پرداخت. و خب طبیعیـه که تو همچین حالتی، هیچ سفارشی نهایی نمیشه و مشتری هم کلافه میشه.
این دقیقاً همون مشکلیه که اخیراً برای خیلی از سایتهای فروشگاهی پیش اومده. یعنی تنظیمات درسته، درگاه فعاله، اما موقع پرداخت همه چی غیب میشه! اینجا دقیقاً همون نقطهایه که باید بریم دنبال دلایل فنی این اتفاق و ببینیم چرا ووکامرس نمیتونه درگاه رو توی صفحه تسویه حساب نمایش بده.
دلیل به وجود آمدن این خطا
حالا بریم سراغ اصل ماجرا؛ ببین مشکل دقیقاً از کجاست؟ ووکامرس توی نسخههای جدیدش یه تغییر خیلی بزرگ داده. یه جورایی میشه گفت یه شیرینکاری خیلی جذاب کرده! اومده برای صفحه تسویه حساب (checkout) به جای استفاده از شورتکدهای قدیمی، یه بلوک جدید گذاشته توی ویرایشگر گوتنبرگ.
یعنی چی؟ یعنی شما الان وقتی میخوای صفحه تسویهحساب رو بسازی یا ویرایشش کنی، یه بلوک مخصوص Checkout بهت میده. این بلوک خیلی امکانات جذابی داره. مثلاً خیلی راحت میتونی متن دکمهها یا لیبل فیلدها رو تغییر بدی، فیلدی که نیاز نداری رو حذف کنی، ترتیب نمایش رو عوض کنی و خلاصه هر جور شخصیسازیای که بخوای انجام بدی. از این نظر واقعاً فوقالعادهس و کار باهاش لذتبخشه.

اما خب، مشکل دقیقاً از همینجا شروع میشه! اینجا اون نکته مهمیه که کمتر کسی بهش دقت میکنه، درگاههای پرداخت ایرانی (مثل زرینپال، بانک ملت، سامان و بقیه) با این بلوک جدید ووکامرس سازگار نیستن. چون این بلوک از ساختار جدیدی برای نمایش اطلاعات استفاده میکنه و افزونههای پرداخت فعلی هنوز باهاش هماهنگ نشدن.
در واقع، اون افزونهها همچنان از همون سیستم کلاسیک و شورتکد قدیمی استفاده میکنن. پس وقتی شما از این بلوک جدید توی صفحه تسویهحسابت استفاده میکنی، درگاههای پرداخت اصلاً دیده نمیشن! یعنی از نظر افزونه، همچین صفحهای اصلاً وجود نداره یا درگاهی نمیتونه اونجا نمایش داده بشه.
نتیجهاش هم این میشه که کاربر میاد داخل فرم، همه اطلاعاتش رو وارد میکنه… اما هیچ درگاهی نمیبینه و با پیام “هیچ روش پرداختی در دسترس نیست” مواجه میشه. پس تقصیر نه از زرینپاله، نه از تنظیمات شما. موضوع برمیگرده به یه ناسازگاری بین بلوک جدید تسویهحساب ووکامرس و افزونههای درگاه پرداخت ایرانی که هنوز با این سیستم جدید هماهنگ نشدن.

اما این بلوک با درگاههای پرداخت ایرانی مانند زرین پال و… سازگاری ندارد. این خطا را میتوانید در سمت چپ بلوک مشاهده کنید.

نحوه حل این مشکل
خب حالا سوال اصلی اینه که باید چی کار کنیم؟ فعلاً که هنوز نسخه جدیدی از افزونههای پرداخت ایرانی مثل زرینپال منتشر نشده که با بلوک جدید ووکامرس سازگار باشن، پس تنها کاری که میتونیم انجام بدیم اینه که برگردیم به روش قبلی.
یعنی چی؟ یعنی بیایم اون بلوک تسویهحساب جدید ووکامرس رو از صفحه checkout حذف کنیم و به جاش از همون شورتکد کلاسیک استفاده کنیم. این شورتکد خیلی سادهس،

کافیه وارد ویرایش صفحه تسویه حساب بشید (از بخش برگهها در پیشخوان وردپرس)، اون بلوک جدیدی که مربوط به تسویه حسابه رو پاک کنید و بهجاش یه بلوک شورتکد اضافه کنید. بعد این کد رو داخلش بنویسید و صفحه رو بهروزرسانی کنید.

درنهایت از شورت کد زیر استفاده کنید.
[woocommerce_checkout]
مانند تصویر زیر :

با این کار، صفحه تسویه حساب سایتتون دوباره برمیگرده به حالت قدیمی. یعنی همون مدل کلاسیکی که تمام افزونههای درگاه پرداخت باهاش کار میکنن و مشکلی هم تو نمایش درگاه پرداخت وجود نداره. مشتری به راحتی میتونه پرداختش رو انجام بده و همه چیز مثل قبل درست کار میکنه.

woocommerce_checkoutفعلاً تا زمانی که توسعهدهندههای افزونههای پرداخت ایرانی، پلاگینهاشون رو با بلوک جدید ووکامرس سازگار کنن، این بهترین و تنها راهحل ممکنه. بهمحض اینکه نسخههای جدید ارائه بشن، اون موقع میتونیم دوباره از قابلیتهای فوقالعاده بلوک Checkout استفاده کنیم.
در حال حاضر، تنها کاری که از دستمون برمیاد اینه که یه کم صبر کنیم تا توسعهدهندههای افزونههای پرداخت ایرانی نسخههای جدید پلاگینهاشون رو منتشر کنن و اونها رو با ساختار جدید ووکامرس هماهنگ کنن. تا اون موقع، بهترین راهحل اینه که از شورتکد کلاسیک استفاده کنیم و صفحه تسویه حساب رو به حالت قدیمی برگردونیم تا همه چیز بدون مشکل کار کنه.
امیدواریم این مشکل هم مثل همیشه خیلی زود برطرف بشه و بتونیم از قابلیتهای جذاب نسخههای جدید ووکامرس بدون هیچ دردسری استفاده کنیم. شاد و سربلند باشید.😊