BillSAFE-Integration in Magento

Der Rechnungskauf über den Dienstleister BillSAFE funktioniert aktuell nur mit dem Magento-Standard-Checkout ohne Probleme.

Bei einem Onestepcheckout fehlen der BillSAFE-Extension Javascript-Funktionen, die sich jedoch nachträglich leicht integrieren lassen, z.B. über die Layout-Datei. Die hier dargestellte Lösung beschreibt den Umgang mit der Onestepcheckout-Extension des vietnamesischen Anbieters<span;">Magestore, lässt sich jedoch inhaltlich auch auf andere Erweiterungen übertragen. Das Fehlen der Funktionen äußert sich dann folgendermaßen in der Log-Datei:

<span;"> {"ack":"ERROR","errorList":{"code":225,"message":"Session ID not found"}}

Die Integration der benötigten Dateien findet in der Grundinstallation des BillSAFE-Moduls in der Datei app\design\frontend\base\default\layout\billpay.xml statt. Diese kopieren wir nun in den gewünschten Template-Ordner, wenn wir beispielsweise das "modern"-Template des "default"-Paketes verwenden, kopieren wir die Datei nach app\design\frontend\default\modern\layout\billpay.xml und fügen in dieser der für den Standard-One<span">pagecheckout gedachte Referenz <checkout_onepage_index> für den Onestepcheckout die Referenz <onestepcheckout_index_index> vor dem schließenden </layout>-Tag hinzu:

<onestepcheckout_index_index>
   <reference name="head">
      <reference name="head">
        <action method="addCss"><stylesheet>css/billsafe.css</stylesheet></action>
      </reference>
      <block type="core/text" name="google.cdn.jquery">
        <action method="setText">
           <text><![CDATA[<script type="text/javascript" src="https://fn.billsafe.de/fb/js/lazyload-min.js"></script>]]></text>
        </action>
      </block>
   </reference>
</onestepcheckout_index_index>

Damit sollte nun auch die Session-ID korrekt übermittelt werden und Paul Positiv eine Bestellung aufgeben können. Da BillSAFE jedoch keine Freischaltung des Rechnungskaufes durchführt, ohne vorher eine Rechnung eines Testkaufes nach vorgegebenem Muster erhalten zu haben, sind hier auch noch einige Anpassungen nötig. Da auf der BillSAFE-Rechnung keine Bankleitzahl (BLZ) und keine Kontonummer von BillSAFE enthalten sein dürfen, dies die Extension jedoch noch nicht berücksichtigt, muss hier die Datei app\design\adminhtml\default\default\template\billsafe\pdf\info.phtml angepasst werden. Hierzu suchen wir die Zeile

<span"> <?php if (0 < strlen(trim($this->getBankCode())) && 0 < strlen(trim($this->getAccountNumber()))): ?>

und ersetzen diese z.B. mit

<?php if (0 < strlen(trim($this->getBankCode())) && 0 < strlen(trim($this->getAccountNumber())) && 1==2): ?>

Damit sind BLZ und Kontonummer von BillSAFE ausgeblendet und wir sind fertig. Es sei denn, es befinden sich in der Fußzeile oder an einer anderen Stelle noch die Kontoinformationen des Shopbegtreibers selbst. Dieses ist verständlicherweise im Rahmen der BillSAFE-Abwicklung nicht erwünscht, um Direktzahlungen zu vermeiden. Die folgende Anpassung bewirkt beispielhaft die Ausblendung des letzten Blocks der Fußzeile bei Verwendung der PDF-Customiser-Extension des neuseeländischen Entwicklers <span;">Fooman:

Wir suchen in der Datei app\code\community\Fooman\PdfCustomiser\Model\Mypdf.php innerhalb der Funktion Footer() die Zeilen (ca. ab Zeile 1008)

} elseif ($key == $footers[0]) {
   //last element
   if (!empty($footer)) {
      $html .= '<td width="'.$width.'mm</td>';

und ersetzen diese durch:

} elseif ($key == $footers[0]) {
   //last element
   if (!empty($footer)) {
      if ($helper->getOrder()->getPayment()->getMethodInstance()->getCode() == 'billsafe') {
         $html .= '<td width="'.$width.'mm</td>';
      } else {
         $html .= '<td width="'.$width.'mm">'.$footer.'</td>';
      }

Damit ist die Freigabe durch BillSAFE dann kein Problem mehr und der abgesicherte Kauf auf Rechnung ist integriert.
Durchgeführt in Magento CE 1.7.0.2.

... zurück zum Blog