Zur├╝ck zum Blog

Eine seifige Angelegenheit

­čôů  

Umstellung der Payment Schnittstelle auf SOAP

Mit Seife hat SOAP eigentlich nichts zu tun, dennoch hatten wir einige Tage das Gef├╝hl mehr zu schlittern denn zu programmieren. Doch der Reihe nach:

SOAP ist die Abk├╝rzung f├╝r Simple Object Access Protocol, es handelt sich dabei um ein Netzwerkprotokoll, mit dem Daten zwischen Systemen ausgetauscht werden und Aktionen angesto├čen werden k├Ânnen.

Die bisherige Implementierung der E-Payment Schnittstelle ist nicht besonders sicher, deshalb haben wir uns zu einer Umstellung entschlossen.

Bislang kommunizieren wir mit dem Testsystem unseres Zahlungsproviders und k├Ânnen darin Zahlungen veranlassen.

Die gr├Â├čte H├╝rde stellten zwei Probleme dar, zum einen erhielten wir zun├Ąchst falsche Daten f├╝r den Zugang in das Testsystem. Zum anderen hatte die Dokumentation der SOAP Schnittstelle einen erheblichen Fehler.

Nach mehrmaliger Kommunikation mit dem Provider haben wir nun aber diese Probleme gel├Âst.

Das Templatesystem

Wir haben unsere Templatesprache erweitert: Photos k├Ânnen nun in allen automatisch erstellten Gr├Â├čen unmittelbar ausgegeben werden.

Zum Beispiel erzeugt man ein kleines ÔÇťdaumennagelgro├česÔÇŁ Bild von 100 Pixel Kantenl├Ąnge mittels

<photo name="┬źPlatzhaltername┬╗" size="thumb" />

Die weiteren Gr├Â├čen sind small (250 Pixel Kantenl├Ąnge) und medium (500 Pixel Kantenl├Ąnge).

Die Templatesprache ist nun auch im System in Form eines selbsterkl├Ąrenden Templates dokumentiert, Anregungen zu Verbesserung werden gerne entgegen genommen. ;-)

<!-- Dieses Template dient zur Erkl├Ąrung, wie Templates m├Âglichst einfach erstellt werden k├Ânnen.-->

<!-- Kommentare:
     Templates k├Ânnen Kommentare enthalten, dies und der Kommentar dar├╝ber ist ein Beispiel f├╝r die Syntax.
     Kommentare k├Ânnen auch mehrzeilig sein.

     Zweck von Templates:
     Um die Struktur gleich aufgebauter Webseiten nicht auf jeder Webseite neu definieren zu m├╝ssen, gibt es Templates.
     F├╝r jede Webseite der Website ist ein Template zuzuweisen.
     Templates k├Ânnen in beliebig vielen Webseiten verwendet werden.

     Platzhalter:
     Um an gewissen Stellen des Templates Inhalt webseitenspezifisch zuzuweisen, werden Platzhalter verwendet.
     Diese Platzhalter sind in der Liste der Platzhalter in der Templatepflege durch Beistriche getrennt anzugeben.
     In diesen Template verwenden wir die Platzhalter beispielbild, beispieltext1 und beispieltext2.

     DRYML:
     Templates k├Ânnen in ERB oder in DRYML erfasst werden.
     Da die Erstellung in DRYML einfacher ist, werden wir sie hier vorziehen.
     Um ein DRYML Template zu erstellen klickt man die Checkboy DRYML oben an.

     DRYML ist im Prinzip HTML, mit 2 Unterschieden.
     1 Tags, die keinen Inhalt haben, m├╝ssen geschlossen werden.
       zum Beispiel ist nur der Tag <br/> g├╝ltig, nicht aber <br>
     2 Es gibt neue Tags, die in Mercator definiert wurden, um die Einbindung von Inhalten zu vereinfachen.
       Konkret weisen wir in der Webseitenpflege jedem Platzhalter genau einen Baustein zu.

     Bootstrap 3:
     Unsere Templateengine versteht alle Komponenten des Twitter Bootstrap Frameworks in der Version 3:
     http://getbootstrap.com/
     Damit k├Ânnen viele unterschiedliche Komponenten mit geringem Aufwand eingabaut werden.

     Der Inhalt eine Seite wird im content:-Tag des page-Tags definiert
     (Der Doppelpunkt hinter content ist wesentlich.) -->


<page title="Home">
  <content:>

    <!-- Das Grid:
         Inhalt wird zun├Ąchst zeilen- und dann innerhalb spaltenweise definiert.
         Beginnen wir mit dem einfachen Fall: Eine Zeile mit einer Spalte mit einem Beispieltext. -->

    <!-- Wir er├Âffnen eine Zeile: -->
      <div class="row">

        <!-- Eine Zeile ist 12 Einheiten breit, unser Element soll ├╝ber die gesamte Breite gehen -->
        <div class="col-lg-12">

          <!-- Um textlichen Inhalt einzubetten, verwenden wir den Container-Tag,
               im Attribut name geben wir den Namen des Platzhalters an -->
          <container name='beispieltext1'/>
        </div>
      </div>


    <!-- Als n├Ąchstes Beispiel stellen wir zwei unterschiedlich breite Spalten dar,
         im linken Drittel den beispieltext2, im Rest wieder den beispieltext1 -->
    <div class="row">
      <div class="col-lg-4">
        <container name='beispieltext2'/>
      </div>
      <div class="col-lg-8">
        <container name='beispieltext1'/>
      </div>
    </div>

    <!-- Zum Abschluss drei Spalten mit einem Beispielbild in der Mitte
         der Tag heisst photo, der name des Platzhalters ist wieder im name Attribut anzugeben. -->
    <div class="row">
      <div class="col-lg-4">
        <container name='beispieltext2'/>
      </div>
      <div class="col-lg-4">
        <photo name='beispielbild' width="100%"/>
        <!-- Wir geben 100% als Breite an, damit das Bild die gesamte Spalte ausf├╝llt.
             W├╝rden wir die Breite nicht angeben, w├╝rde es in Originialgr├Â├če dargestellt,
             damit k├Ânnte es kleiner als die Spaltenbreite sein, aber auch ├╝ber die Spalte hinausstehen. -->
      </div>
      <div class="col-lg-4">
        <container name='beispieltext1' />
      </div>
    </div>
  <!-- Wir m├╝ssen noch die ge├Âffneten Tags content: und page schliessen. -->
  </content:>

</page>

Vermischtes

Zur├╝ck zum Blog