آموزش غیرفعالسازی شرطی درگاه پرداخت اسنپپی برای مبالغ پایین در ووکامرس
آیا تا به حال برای شما پیش آمده که هزینههای تراکنش درگاه پرداخت اسنپپی (SnappPay) برای مبالغ پایین، صرفه اقتصادی نداشته باشد؟ یا اینکه بخواهید کاربران را برای خریدهای زیر یک مبلغ مشخص، به استفاده از روشهای پرداخت دیگری هدایت کنید؟ بسیاری از فروشگاههای اینترنتی با این چالش مواجه هستند که کارمزد درگاههای پرداخت برای مبالغ پایین، گاهی از سود فروش بیشتر میشود. در این مقاله از مجموعه مقالات آموزشی وردپرس، یک کد کاربردی و استاندارد برای غیرفعالسازی شرطی درگاه پرداخت اسنپپی در ووکامرس ارائه میدهیم که با استفاده از آن، میتوانید درگاه اسنپپی را برای سبدهای خرید با مبلغ کمتر از یک حد مشخص (مثلاً ۳ میلیون تومان) به طور خودکار غیرفعال کنید. این کار به بهینهسازی هزینههای تراکنش، هدایت کاربران به روشهای پرداخت مناسبتر و افزایش سودآوری فروشگاه شما کمک میکند.
چالش هزینههای تراکنش و تأخیر در پرداخت برای مبالغ پایین
درگاههای پرداخت اینترنتی مانند اسنپپی معمولاً برای هر تراکنش، کارمزدی را از فروشنده دریافت میکنند. این کارمزد ممکن است به صورت مبلغ ثابت یا درصدی از مبلغ تراکنش باشد. برای خریدهای با مبالغ پایین، کارمزد درگاه میتواند سهم قابلتوجهی از سود فروش را بخورد و حتی در برخی موارد، فروش را به زیان تبدیل کند. همچنین برخی از درگاههای پرداخت، حداقل مبلغی برای هر تراکنش تعیین میکنند که ممکن است با نیازهای فروشگاه شما همخوانی نداشته باشد.
علاوه بر کارمزد، تأخیر در پرداخت یکی دیگر از چالشهای اصلی استفاده از درگاههای اعتباری مانند اسنپپی است. در این مدل، مشتری مبلغ خرید را بهصورت قسطی پرداخت میکند، در حالی که فروشنده معمولاً مبلغ فروش را یکجا (پس از کسر کارمزد) از اسنپپی دریافت میکند. اما زمان تسویه حساب با فروشندگان بسته به قرارداد متفاوت است و میتواند بین ۱ تا ۳ روز کاری، هفتگی، یا حتی هر ۱۵ روز یا ماهانه باشد. این تأخیر در دریافت وجه، به ویژه برای مبالغ پایین، میتواند جریان نقدی فروشگاه را تحت تأثیر قرار دهد و مدیریت مالی را دشوارتر کند. به عبارت دیگر، فروشنده ممکن است برای دریافت مبلغ یک خرید ۲۰۰ هزار تومانی، هفتهها منتظر بماند و این موضوع از نظر اقتصادی به صرفه نیست.
با استفاده از کدی که در این مقاله ارائه میشود، میتوانید به طور هوشمندانه، درگاه اسنپپی را برای مبالغ زیر یک حد مشخص (مثلاً ۳ میلیون تومان) غیرفعال کنید و کاربران را به سمت سایر روشهای پرداخت مانند کارت به کارت یا واریز مستقیم هدایت کنید. این کار نه تنها هزینههای شما را کاهش میدهد، بلکه شفافیت مالی فروشگاه شما را نیز افزایش میدهد.
راهکار غیرفعالسازی شرطی درگاه اسنپپی با کد اختصاصی
برای غیرفعالسازی شرطی درگاه پرداخت اسنپپی در ووکامرس، از فیلتر option_woocommerce_WC_Gateway_SnappPay_settings استفاده میکنیم. این فیلتر به ما اجازه میدهد تا تنظیمات درگاه پرداخت اسنپپی را قبل از نمایش به کاربر، دستکاری کنیم. کد ارائه شده در این مقاله، با دریافت تنظیمات فعلی درگاه، ابتدا بررسی میکند که آیا کاربر در بخش مدیریت است یا خیر (که در این صورت، تغییری اعمال نمیشود). سپس بررسی میکند که آیا کاربر در صفحه سبد خرید یا تسویه حساب است و آیا سبد خرید خالی نیست. در نهایت، مجموع مبلغ سبد خرید را با یک حد آستانه (مثلاً ۳ میلیون تومان) مقایسه کرده و در صورت کمتر بودن، گزینه enabled را روی no تنظیم میکند تا درگاه غیرفعال شود. این روش کاملاً استاندارد، سبک و بدون نیاز به نصب افزونه است و با تمامی نسخههای ووکامرس سازگاری دارد.
کد کامل غیرفعالسازی شرطی درگاه اسنپپی برای مبالغ پایین
در زیر کد کامل و استاندارد برای غیرفعالسازی شرطی درگاه پرداخت اسنپپی در ووکامرس آورده شده است. این کد را در انتهای فایل functions.php قالب فرزند خود قرار دهید. در این کد، حد آستانه مبلغ روی ۳,۰۰۰,۰۰۰ تومان تنظیم شده است که میتوانید آن را بر اساس نیاز فروشگاه خود تغییر دهید.
/*
* Disable SnappPay Gateway for Low Amounts in WooCommerce
* Automatically disables SnappPay payment gateway for cart totals below a specified threshold
* Mahdi Jafarzadeh
* https://www.wpwm.ir/
*
* IMPORTANT LEGAL NOTICE:
* SnappPay is a credit payment service that allows users to make installment purchases.
* Restricting access to this payment method based on cart amount may violate SnappPay's
* terms of service. Use of this code is at your own risk and responsibility.
* Please consult with SnappPay support before implementing this code.
*/
// ============================================================
// FILTER: Conditionally disable SnappPay gateway
// ============================================================
add_filter('option_woocommerce_WC_Gateway_SnappPay_settings', 'conditional_disable_snappay_gateway');
function conditional_disable_snappay_gateway($settings) {
// Do not modify settings in admin dashboard
if (is_admin()) {
return $settings;
}
// Only apply on cart and checkout pages
if (!is_cart() && !is_checkout()) {
return $settings;
}
// Ensure WooCommerce cart is available and not empty
if (!function_exists('WC') || !isset(WC()->cart) || WC()->cart->is_empty()) {
return $settings;
}
// Get current cart subtotal (without taxes and shipping)
$cart_total = (float) WC()->cart->get_subtotal();
// Define minimum amount threshold (in IRR - 3,000,000 = 3 million IRR)
// Change this value based on your business needs
$min_amount = 3000000;
// If cart total is less than or equal to the threshold, disable SnappPay
if ($cart_total <= $min_amount) {
if (is_array($settings)) {
$settings['enabled'] = 'no';
}
}
return $settings;
}نحوه عملکرد کد به صورت گام به گام
در این بخش، هر بخش از کد را به صورت دقیق بررسی میکنیم و نحوه عملکرد آن را توضیح میدهیم:
- خط ۱۰ – افزودن فیلتر تنظیمات درگاه اسنپپی: با استفاده از
add_filter('option_woocommerce_WC_Gateway_SnappPay_settings', 'conditional_disable_snappay_gateway')، یک فیلتر به گزینه تنظیمات درگاه پرداخت اسنپپی اضافه میکنیم. این فیلتر هر بار که ووکامرس تنظیمات درگاه را میخواند، فراخوانی میشود و به ما اجازه میدهد تا آنها را تغییر دهیم. - خط ۱۲ – تعریف تابع: تابع
conditional_disable_snappay_gatewayبا یک پارامتر$settings(آرایه تنظیمات درگاه) تعریف میشود. - خطوط ۱۵ تا ۱۷ – بررسی بخش مدیریت: با استفاده از
if (is_admin())، بررسی میکنیم که آیا کاربر در بخش مدیریت وردپرس است یا خیر. اگر در بخش مدیریت باشد، تنظیمات بدون تغییر بازگردانده میشوند تا در پنل مدیریت، گزینهها به درستی نمایش داده شوند. - خطوط ۲۰ تا ۲۲ – بررسی صفحات سبد خرید و تسویه حساب: با استفاده از
!is_cart() && !is_checkout()، اطمینان حاصل میکنیم که تغییرات فقط در صفحات سبد خرید و تسویه حساب اعمال شوند و سایر صفحات تحت تأثیر قرار نگیرند. - خطوط ۲۵ تا ۲۷ – بررسی در دسترس بودن سبد خرید: با استفاده از
!function_exists('WC') || !isset(WC()->cart) || WC()->cart->is_empty()، اطمینان حاصل میکنیم که ووکامرس در دسترس است، شیء سبد خرید وجود دارد و خالی نیست. اگر سبد خرید خالی باشد، نیازی به اعمال تغییرات نیست. - خط ۳۰ – دریافت مبلغ سبد خرید: با استفاده از
WC()->cart->get_subtotal()، مبلغ کل سبد خرید (بدون مالیات و هزینه حملونقل) را دریافت میکنیم و با(float)به عدد اعشاری تبدیل میکنیم. - خط ۳۳ – تعیین حد آستانه: متغیر
$min_amount = 3000000حداقل مبلغ (۳ میلیون تومان) را مشخص میکند. شما میتوانید این عدد را بر اساس نیاز فروشگاه خود تغییر دهید. - خطوط ۳۶ تا ۳۹ – غیرفعالسازی درگاه: اگر مبلغ سبد خرید کمتر یا مساوی حد آستانه باشد، با تنظیم
$settings['enabled'] = 'no'، درگاه اسنپپی غیرفعال میشود و کاربران گزینه پرداخت از طریق اسنپپی را در صفحه تسویه حساب مشاهده نخواهند کرد. - خط ۴۲ – بازگشت تنظیمات: در نهایت، آرایه تنظیمات (اصلاحشده یا اصلی) به ووکامرس بازگردانده میشود.
نکات مهم
در این بخش به نکات کلیدی برای استفاده صحیح از این کد اشاره میکنیم که باید به آنها توجه ویژهای داشته باشید:
- استفاده از قالب فرزند: کد را در فایل
functions.phpقالب فرزند قرار دهید تا با بروزرسانی قالب اصلی، تغییرات شما از بین نرود. - تنظیم حد آستانه مناسب: عدد ۳,۰۰۰,۰۰۰ (۳ میلیون تومان) به عنوان حد آستانه در این کد پیشفرض است. بسته به کارمزد درگاه اسنپپی و استراتژی قیمتگذاری شما، میتوانید این عدد را افزایش یا کاهش دهید. به عنوان مثال، اگر کارمزد درگاه ۲٪ باشد و حداقل سود قابلقبول شما ۵۰,۰۰۰ تومان باشد، میتوانید آستانه را روی ۲,۵۰۰,۰۰۰ تنظیم کنید.
- تأثیر بر سایر درگاههای پرداخت: این کد فقط درگاه اسنپپی را تحت تأثیر قرار میدهد و سایر درگاههای پرداخت مانند زرینپال، پارسیان و … را تغییر نمیدهد. بنابراین کاربران همچنان میتوانند از سایر روشهای پرداخت استفاده کنند.
- تست پس از اعمال کد: پس از افزودن کد، حتماً محصولی با مبلغ کمتر از حد آستانه به سبد خرید اضافه کرده و به صفحه تسویه حساب بروید تا از عدم نمایش درگاه اسنپپی اطمینان حاصل کنید. همچنین محصولی با مبلغ بیشتر از حد آستانه را تست کنید تا مطمئن شوید درگاه به درستی نمایش داده میشود.
- سازگاری با کش: اگر از افزونههای کش مانند WP Rocket یا W3 Total Cache استفاده میکنید، این کد در سمت سرور اجرا میشود و نیازی به پاک کردن کش ندارد. اما در صورت بروز مشکل، کش را پاک کنید.
- هشدار درباره فعالسازی کد: در صورت غیرفعال شدن درگاه اسنپپی برای مبالغ پایین، حتماً یک روش پرداخت جایگزین (مانند کارت به کارت) برای کاربران فراهم کنید تا فرآیند خرید با مشکل مواجه نشود.
- یکپارچهسازی با سایر قوانین: اگر نیاز به اعمال این قانون برای چندین درگاه پرداخت دارید، میتوانید کد را با تعریف آرایهای از شناسههای درگاهها و یک حلقه، گسترش دهید تا برای همه آنها اعمال شود.
جمعبندی
در این مقاله از سری مقالات آموزشی وردپرس، به بررسی روش غیرفعالسازی شرطی درگاه پرداخت اسنپپی برای مبالغ پایین در ووکامرس پرداختیم. با استفاده از کد ساده و استانداردی که ارائه شد، میتوانید درگاه اسنپپی را برای سبدهای خرید با مبلغ کمتر از یک حد مشخص (مثلاً ۳ میلیون تومان) به طور خودکار غیرفعال کنید. این کار به بهینهسازی هزینههای تراکنش، افزایش سودآوری و هدایت کاربران به روشهای پرداخت مناسبتر کمک میکند. با تنظیم حد آستانه بر اساس نیاز فروشگاه خود، میتوانید تعادل مناسبی بین رضایت کاربران و سودآوری فروشگاه برقرار کنید.
امیدواریم این آموزش برای شما مفید بوده باشد. اگر سوالی درباره غیرفعالسازی شرطی درگاه اسنپپی، نحوه استفاده از کد یا هر بخش دیگری از این آموزش دارید، لطفاً در بخش نظرات مطرح کنید. همچنین اگر تجربهای در بهینهسازی درگاههای پرداخت ووکامرس دارید، خوشحال میشویم آن را با ما و سایر کاربران به اشتراک بگذارید.







