Symptom

  • Inline-Zahlungen schlagen fehl.
  • Im Log erscheint "DirectLink::getResponseParams failed: String could not be parsed as XML"

Ursache

Das Transaktions-Feedback von Ingenico enthält ungültiges XML. Es kann sein, dass die XML-Struktur durch falsch codierte Sonderzeichen ungültig gemacht wird. Deswegen kann der XML-Parser das Transaktions-Feedback nicht lesen.


Lösung 1

Prüfen Sie, ob der API-User korrekt funktioniert und ob Benutzername und Passwort korrekt gespeichert sind (keine unerlaubten Sonderzeichen).


Lösung 2

Aktivieren Sie ausschließlich die folgenden Parameter im Ingenico-Backoffice (siehe "Technische Informationen -> Transaktions-Feedback", Abschnitte "Dynamische e-Commerce parameter" und "Directlink Dynamische parameter"):

  • ORDERID, PAYID, NCSTATUS, NCERROR, ACCEPTANCE, STATUS, ECI, AMOUNT, CURRENCY, PM, BRAND, NCERRORPLUS


Wenn die Betrugserkennung (Fraud Detection) verwendet werden soll, aktivieren Sie bitte zusätzlich diese Parameter:

  • AAVCHECK, CVCCHECK, CCCTY, IPCTY, NBREMAILUSAGE, NBRIPUSAGE, NBRIPUSAGE_ALLTX, NBRUSAGE, VC, CARDNO, ED


Die folgenden Parameter dürfen im Ingenico-Backoffice NICHT aktiviert werden, da diese häufig Sonderzeichen enthalten, die zu Problemen führen können:

  • CN
  • ECOM_BILLTO_*
  • ECOM_SHIPTO_*


Lösung 3

Die SSL-Bibliothek auf dem Server ist evtl. fehlerhaft. Dies kann mit dem folgenden Befehl getestet werden:

openssl s_client -connect secure.ogone.com:443


Das Ergebnis sollte sofort erscheinen. Es sollten Informationen zum  Zertifikat angezeigt werden (Certificate Chain, Server Certificate  usw.). Erscheint hier stattdessen eine Fehlermeldung oder passiert  überhaupt nichts ist das ein Indiz für Probleme mit der SSL-Bibliothek  oder der Netzwerkverbindung. Zur Sicherheit kann der gleiche Test auf  einem anderen System wiederholt werden.


Weitere Infos zum Befehl openssl finden sich auf dieser Website.


Lösung 4

Stellen Sie sicher, dass nicht SSLv3 verwendet wird. Diese Version wird von der Ingenico-Plattform nicht mehr unterstützt.


Debugging

Um das Transaktions-Feedback genauer untersuchen zu können, kann folgende Code-Änderung durchgeführt werden:

  • Öffnen Sie die Datei app/code/community/Netresearch/OPS/Model/Api/Directlink.php
  • Suchen Sie in der Methode "call" nach dieser Zeile:
$response = $http->read();
  • Fügen Sie direkt darunter ein Mage::log hinzu, so das es am Ende so aussieht:
$response = $http->read();
Mage::log($response, null, 'ops_response.log', true);
  • Dadurch wird das eingehende Feedback immer in die Datei "ops_response.log" geschrieben und kann dort untersucht werden.
  • Achten Sie auf Sonderzeichen oder Anführungszeichen, welche die XML-Struktur ungültig machen könnten.
  • Entfernen Sie diese Code-Anpassung, sobald das Problem behoben ist!