Paypal - Artikel von Zahlungsart ausschliesen

Guten Abend,

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.

Kann jemand helfen ?

Schau mal hier: http://wiki.oxidforge.org/Tutorials/en/Disable_Payment_Method

Wow, super!

Danke vielmals!

Ich frage ja ungern. Aber wie es scheint, funktioniert diese Lösung aktuell nicht mehr bei der Version 4.9.2

Ich habe auf Github den gleichen Code etwas erweitert gefunden (Payment Restriction) - jedoch funktioniert auch diese Lösung nur bis 4.7.X

Kann mir jemand helfen wie ich das denn nun zum Laufen bekomme ?

Ich wäre euch wirklich sehr dankbar.

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.

@tesolutions

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.

Hat das zufällig jemand mittlerweile für 4.9. hingekriegt???