Comment désactiver le paiement à la livraison sur un type de produit spécifique
-
13-12-2019 - |
Question
Fondamentalement, je dois désactiver le paiement à la livraison sur un type de produit spécifique.Fondamentalement, j'utilise le crédit du magasin mage.C'est pour le portefeuille dans magento.sur l'option de paiement, il indique le paiement à la livraison.ce n'est pas un produit physique ou virtuel.Je dois donc désactiver le paiement à la livraison sur ce type de produit.
La solution
Vous pouvez le faire en Magento Event/Observer
Tout d'abord, en utilisant payment_method_is_active
la désactivation dépend du type de produit du devis actuel.
Codez pour cela :
Code config.xml du module :
<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>
Le code de l'observateur est :
<?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; } } } }
Autres conseils
pour cela, vous devez utiliser magento payment_method_is_active
événement
Je suppose que vous savez comment développer une extension magento [Sinon, veuillez vérifier cette réponse, vous obtenez tout le moduleÉcrivez ce code dans votre config.xml
depuis 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>
Créer un fichier d'observateur 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;
}
}
}
Avez-vous l'air d'avoir votre apparence, je pense que cela va résoudre votre problème, il vous suffit de modifier les méthodes.phtml File et de celui où vous pouvez obtenir des informations de guillemets et faire les validations ou les conditions ainsi du module par événement - Observer ou parla modification dans le fichier PHTML?
https://stackoverflow.com/questions/29819037/disable-cash-In-livraison-forfrics-Produits
et