Aufgabenstellung in unserer Onlineshopagentur: Die Zahlungsschnittstelle des Herstellers Customweb unseres Magento 2-Shops musste mit der Schnittstelle des Anbieters Fatchip ersetzt werden, da Computop die Betreuung Ihrer Shopschnittsellen von Customweb an Fatchip übergeben hat. Die neue Fatchip-Schnittstelle ließ sich ohne Probleme installieren, Customweb-Module wurden deinstalliert.

 

 

Nach der Installation des Fatchip-Moduls funktionierten jedoch zwei Zahlungsmethoden nicht: Kreditkarte und Paypal. Die Fehler traten dabei im Magento 2-System auf, bevor eine Kommunikation mit der Computopstelle initiiert wurde.

 

Der Fehler in unserer Magento 2-Agentur wurde dadurch hervorgerufen, dass wir nur virtuelle Artikel anbieten. Bei der Erstellung der Bestellung wurde also keine Shipping-Address abgefragt. Diese wird jedoch in der Fatchip-Schnittstelle benötigt, wenn nicht vorhanden, dann Fehler.

 

Dies ließ sich jedoch leicht beheben. Eine Veränderung für Paypal, eine Veränderung für Kreditkarte.

 

Es reichte aus (wenn man nur virtuelle Artikel verkauft (bei dem Versand von physischen Artikel ist die Lösung ähnlich), indem man zwei Dateien verändert:

 

Die erste Änderung findet statt in der Datei 

 

app/code/Fatchip/Computop/Model/Method/PayPal.php

 

Hier reicht es aus, folgende Änderung vorzunehmen:

 

protected function getPayPalAddressData(Order $order)

{

    $address = $order->getShippingAddress();

    //econcess

    if ($address === null) $address = $order->getBillingAddress();

    //econcess

 

Weiter musste für die Kreditkarte folgende Datei geändert werden:

 

app/code/Fatchip/Computop/Model/Api/Request/Authorization.php

 

mit dieser Anpassung:

 

        if ($methodInstance->isAddressDataNeeded() === true) {

//econcess

            $this->addParameter('shippingAddress', $this->getAddressInfo($order->getBillingAddress()));

//econcess

            $this->addParameter('shippingAddress', $this->getAddressInfo($order->getShippingAddress()));

        }

 

Einfach gesagt: Wenn ShippingAddress nicht vorhanden, nimm die BillingAddress.

 

Jetzt funktioniert alles, gesehen in unserer Onlineshop-Agentur in Magento 2.5.