كيفية تعطيل الدفع عند الاستلام على نوع منتج معين
-
13-12-2019 - |
سؤال
أحتاج في الأساس إلى تعطيل ميزة الدفع نقدًا عند التسليم لنوع منتج معين.في الأساس أنا أستخدم رصيد المتجر من متجر mage.هذا للمحفظة في الماجنتو.على خيار الدفع يظهر الدفع عند التسليم.إنه ليس منتجًا ماديًا أو افتراضيًا.لذلك أحتاج إلى تعطيل الدفع عند التسليم لهذا النوع من المنتجات.
المحلول
يمكنك القيام بذلك عن طريق Magento Event/Observer
أولا، باستخدام payment_method_is_active
يعتمد التعطيل على نوع منتج عرض الأسعار الحالي.
رمز لهذا:
كود الوحدة config.xml:
<global>
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>yourmodel/observer</class>
<method>filterpaymentmethod</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
</global>
كود المراقب هو:
<?php class YOURNANESPACE_YOURMODULE_Model_Observer { public function filterpaymentmethod(Varien_Event_Observer $observer) { /* call get payment method */ $method = $observer->getEvent()->getMethodInstance(); /* get Quote */ $quote = $observer->getEvent()->getQuote(); $result = $observer->getEvent()->getResult(); if (empty($quote) || (null === $quote)) { return $this; } /* Disable Your payment method for adminStore */ if ($method->getCode() == 'YOUR_PAYMENT_METHOD_CODE') { foreach ($quote->getAllItems() as $item) { // get Cart item product Type // if ($item->getProductType() == 'YourProductType'): $result->isAvailable = false; endif; } } } }
نصائح أخرى
لذلك تحتاج إلى استخدام الماجنتو payment_method_is_active
حدث
أفترض أنك تعرف كيفية تطوير امتداد الماجنتو [إذا لم يكن الأمر كذلك، فيرجى التحقق من ذلك هذه الإجابة تحصل على الوحدة بأكملهااكتب هذا الكود في جهازك config.xml
من app>code>codepool>namespace>package>etc
<global>
...
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>PaymentFilter_Model_Observer</class>
<method>paymentMethodIsActive</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
...
</global>
إنشاء ملف المراقب app/code/codepool>namespace>package/Model/Observer.php
class namespace_package_Model_Observer {
public function paymentMethodIsActive(Varien_Event_Observer $observer) {
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$currencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
if($someTrueConditionGoesHere){
$result->isAvailable = true;
}else{
$result->isAvailable = false;
}
}
}
هل تبدو هذا أعتقد أن هذا سيكون نحل حل مشكلتك، فأنت بحاجة فقط إلى تعديل ملف الأساليب. يمكن أن تحصل على أي علامات اقتباس أو القيام بالتحقق من الصحة أو الظروف أيضا من الوحدة النمطية عن طريق الحدث - المراقب أو عن طريقالتعديل في ملف PHTML؟
https://stackoverflow.com/questions/29819037/disable-cash-ON- التسليم - منتجات خاصة
و
href="https://stackoverflow.com/Questions/14011348/disable-Payment-Options-Only-Cash-On-Delivery-Fornivery-particular-product-magento"> https://stackoverflow.com/ أسئلة / 14011348 / تعطيل-خيارات الدفع فقط - فقط-نقد على التسليم - من أجل الخصم - Magento