Ich habe ein Sortiment was unter Anderem Produkte enthält welche nicht per Paypal bezahlt werden dürfen (Tabak).
Ich möchte gerne für bestimmte Produkte die Zahlung per Paypal verbieten. Bei Anderen Shop System habe ich Lösungen gefunden. Beim Oxid macht mir dies leider noch zu schaffen.
Ich habe das bisher nur in einem 4.8er Shop mit folgendem Code getestet:
<?php
/**
* disallow payment by having a $_aCatDiasallowPayment = array ('noinvoice'=>'oxidinvoice') assignment.
this would mean in above case :
Articles assigned to the (hidden/ or not hidden, e.g. eBooks by invoice makes no sense) category 'noinvoice'
will disable the payment option oxidinvoice for all the basket
*/
class htr_payment extends htr_payment_parent
{
protected $_aCatDiasallowPayment = array ('noinvoice'=>'oxidinvoice');
public function getPaymentList()
{
if (is_null($this->_oPaymentList)) {
$oBasket = $this->getSession()->getBasket();
$oPaymentList = parent::getPaymentList();
$oCategory = new oxCategory();
foreach($oBasket->getBasketArticles() as $key=>$oArticle){
$aCatIds = $oArticle->getCategoryIds();
foreach ($aCatIds as $sId){
$oCategory->load($sId);
#$title = $oCategory->getTitle();
# for compability reasons (OXID <4.5 do it this way:
$title = $oCategory->oxcategories__oxtitle->getRawValue();
if (array_key_exists($title, $this->_aCatDiasallowPayment)){
//disallow
foreach ($oPaymentList as $key=>$oPayment){
$sOxid = $oPayment->_sOXID;
if ($sOxid == $this->_aCatDiasallowPayment[$title]){
unset ($this->_oPaymentList[$this->_aCatDiasallowPayment[$title]]);
}
}
//disallow
}
}
}
#$this->_oPaymentList=$oPaymentList;
}
return $this->_oPaymentList;
}
}
Das Modul muss dann mit dem Eintrag “payment => htr_payment” aktiviert werden. Mit einer CE 4.8.7 hat das funktioniert, ob es bei 4.9. auch geht habe ich noch nicht probiert.
Vielen Dank für deinen Beitrag. Diesen Code habe ich bereits ausprobiert. Er funktioniert leider nicht.
Ich habe jetzt die verschiedensten Zahlungsarten ausprobiert. Die verschiedensten Kategorienamen. (immer Tmps und Cache geelert) Leider alles erfolglos.