<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://webservices.micropayment.de/xslt/?tpl=public.service-html.transformer"?>
<service request-protocol="HTTP_PARAMS" response-protocol="NVP" type="DebitService" location="https://webservices.micropayment.de/public/debit/v2.4/nvp/">
  <description>Api steuert die Bezahlung per Lastschrift.

 SEPA Lastschrift:
 Mit SEPA ( Single Euro Payments Area ), dem einheitlichen Euro-Zahlungsverkehrsraum, werden auch in Deutschland zum 01.02.2014 neue,
 europaweit einheitliche Verfahren für den bargeldlosen Zahlungsverkehr (Überweisungen, Lastschriften) eingeführt.

 Das bisheriege Verfahren mit Bankleitzahl und Kontonummer wird durch IBAN und BIC abgelöst.

 IBAN (International Bank Account Number) ist die internationale Kontonummer und ersetzt Bankleitzahl und Kontonummer.
 Für grenzüberschreitende Zahlungen ist noch der BIC (Business Identifier Code) als international standardisierter
 Bank-Code (vergleichbar mit der Bankleitzahl in Deutschland) erforderlich.

 Für Zahlungen / Lastschriften innerhalb Deutschlands reicht die Verwendung der IBAN (iban only) aus, für alle anderen Transaktionen wird IBAN und BIC benötigt.

 Für eine ordentliche SEPA-Zahlung sind noch folgende Punkte wichtig:
 Mandate (mandateRef), Gläubiger-ID (creditorId) und Prenotification (Nachricht über die Kundenbelastung; payDate).


 Mandate:
 Parametername "mandateRef", "mandateSignDate"
 Ein Mandat ist die Ermächtigung des Zahlungsempfängers durch den Zahlungspflichtigen mit einer Lastschrift vereinbarte Beträge abzubuchen.
 Die Mandatsreferenz wird durch den Zahlungsempfänger frei vergeben und muss eindeutig sein.
 In der Regel wird sie durch die Debit-API erstellt, siehe Rückgabe bei "sessionCreate".

 Wird eine eigene Mandatsreferenz übergeben, und existiert dieses Mandat noch nicht, kann das Datum der Mandatserteilung übergeben werden. Anderenfalls wird es ermittelt bzw.
 das Datum des sessionApprove Aufrufs angenommen.


 Mehrfach-Mandate:
 Parametername "mandateRecur", "payRecurState"
 Durch "mandateRecur" wird mitgeteilt, ob eine einmalige Lastschrift "ONEOFF" oder eine von mehreren Lastschriften "RECURRING" angelegt wird.
 Mit "FINAL" wird ein ggf. bestehendes Mandat geschlossen, d.h. das aktuelle Mandat wird letzmalig benutzt.

 Wird ein neues einmaliges Sepamandat mit "ONEOFF" erstellt, enthält "payRecurState" immer den Status 'OOFF'. Die Mandatsreferenz darf danach nicht mehr benutzt werden.
 Eine Mehrfachsession liefert "FRST" wenn das Mandat neu ist oder "RCUR" wenn es bereits benutzt wurde. Wurde mit "FINAL" das Mandat geschlossen, enthält
 "payRecurState" den Wert "FNAL". Auch hier darf die Mandatsreferenz nicht mehr benutzt werden.

 Gläubiger-ID:
 Parametername "creditorId"
 Die Gläubiger-Identifikationsnummer ist eine eindeutige Identifizierung für Zahlungsempfänger von SEPA-Mandaten.
 Sie ist für jeden Zahlungsempfänger verpflichtend und kann bei der Bundesbank kostenlos beantragt werden, siehe https://extranet.bundesbank.de/scp/ .
 Die Gläubiger-ID ist im ControlCenter unter Kundendaten-&gt;Gläubiger-Identifikationsnummer hinterlegt.
 Alternativ wird die Gläubiger-ID von micropayment bereitgestellt.

 Prenotification:
 Der Endkunde muss vor der Belastung (siehe auch "payDate") in geeigneter Weise informiert werden. Ein geeigneter Textvorschlag kann wie folgt aussehen
 (wobei die Platzhalter in {} durch die tatsächlichen Werte ersetzt werden müssen)

 "Unsere Forderung in Höhe von {$amount} ziehen wir mit der SEPA-Lastschrift zum Mandat Nr. {$mandateRef} zu der Gläubiger-Identifikationsnummer {$creditorId}
  von Ihrem Konto IBAN {$iban} bei der {$bank} BIC {$bic} zum Fälligkeitstag {$payDate} ein. Wir bitten Sie für Kontodeckung zu sorgen."

 Vor jeder Folgelastschrift bei Mehrfach-Mandaten muss ebenfass der Kunde benachrichtigt werden.

 Neuerung sessionCredit:
 Mit Hilfe dieser Funktion ist es möglich eine Auszahlung an Kunden ohne vorherige Lastschrift vorzunehmen. Dieses Feature muss gesondert freigeschaltet werden, und ist nur unter strengen Vorgaben verfügbar.

 Neuerungen zur EU-Geldtransferverordnung:
 Ab dem 26.06.2017 tritt die EU Verordnung 2015/847 in Kraft. Hierfür ist es notwendig, für Zahlungspflichtige ausserhalb des europäischen Wirtschaftsraumes (EEA), die
 Adressdaten der Zahlers zu ermitteln. Betroffen sind derzeit lediglich schweizer Kunden. Die Funktionalitäten hierfür wurden in den Methoden bankaccountSet, -Get, -Check sowie bankCheck ergänzt.
 Für Stammkunden müssen diese Daten nachträglich übermittelt werden, andernfalls liefert sessionCreate einen der folgenden Fehler: 4112, 4113

 ------------------------------------------------------------------------------------

 Alle Funktionen die bisher mit Bankleitzahl/Kontonummer aufgerufen wurden, können jetzt alternativ mit IBAN/BIC bedient werden.
 Bei Aufrufen ohne IBAN ist der Parametername "country" wichtig.

 Fehlercodes:

  4101        // Bankleitzahl ist ungültig
  4102        // Kontonummer ist ungültig
  4103        // Es wurde keine Kontoverbindung hinterlegt
  4104        // Vorgang wurde bereits bestätigt
  4105        // Kontoverbindung wurde gesperrt
  4106        // Limit erreicht
  4107        // kein offener Betrag oder übersteigt Sessionbetrag
  4108        // Iban ist ungültig
  4109        // BIC erforderlich oder ungültig
  4110        // Der Zahldienst wird von der bezogenen Bank nicht unterstützt.
  4111        // Banken aus diesem Land werden nicht unterstützt
  4112        // Die Angabe des Kontoinhabers ist unzureichend, der volle Name ist notwendig
  4113        // Iban gehört nicht zum europäischen Wirtschaftsraum, die Angabe der Kontoinhaber-Adresse ist notwendig

 ------------------------------------------------------------------------------------

 Hinweise zum TestModus:
 - Aktivierung der Testumgebung erfolgt in der jeweiligen Funktion über den Parameter `testMode=1`
 - um automatisierte interne Prozesse und Ereignisse zu simulieren, stehen die ...Test-Funktionen zur Verfügung. Um eine vollumfängliche Lastschrift mit allen Eventualitäten zu simulieren sind folgende Funktionsaufrufe sinnvoll:
   - customerCreate (Kunden anlegen)
   - bankaccountSet (Bankverbindung anlegen)
   - sessionCreate (Bezahlvorgang erzeugen)
   - sessionApprove (Lastschrift bestätigen)
   - sessionChargeTest (Abbuchung simulieren)
   - sessionReverseTest (Rücklastschrift simulieren)
   - sessionRechargeTest (Nachzahlung simulieren)
   - transactionCreate (Nachzahlung auf eig. Konto verbuchen)
   - sessionRefund (Rücküberweisung)
   - sessionRefundReverseTest (Retour der Rücküberweisung simulieren)
 - für den TestModus steht neben allen regulären, folgende Test-Bankverbindung zur Verfügung, um erfolgreiche Buchungen zu simulieren:
   - bankCode: 88888888
   - accountNumber: z.B: 1234567890
   - iban: z.B: DE89888888881234567890
   - bic: TESTDE00XXX (optional)

 ------------------------------------------------------------------------------------

 v2.3.1 Changes
   - customerList: opt. Parameter 'search' ermöglicht filtern der Liste
   - bankaccountCheck: opt. Parameter 'accountHolder' prüft Gültigkeit des Kontoinhabers
   - transactionCreate: Rückgabe 'transactionId'
 v2.3.2 Changes
   - customerSet: opt. Parameter 'newCustomerId' ändert customerId
   - sessionCreate: opt. Parameter 'payDate' legt Abbuchungsdatum fest
 v2.3.3 Changes
   - transactionGet: Rückgabe 'reverseReasonGvc' und 'reverseReasonSepa'
   - sessionRefund, transactionGet: Dokumentation der Rückgabe 'type' = 'STOP'


 v2.4 Changes
  - transactionGet transactionCreate + Benachrichtigung: Parameter bookedDate wird eingeführt, um das Buchungsdatum
    des Betrages auf dem Kundenkonto anzuzeigen. Ist der Wert leer, ist die Buchung noch nicht erfolgt und wird in
    Zukunft noch gesetzt, oder die Transaktion erfolgt ohne Buchung.</description>
  <types>
    <type name="void" type="void">
      <description><![CDATA[keine Rückgabe]]></description>
    </type>
    <type name="string" type="string">
      <description><![CDATA[String: ein Datentyp der eine Folge von Zeichen (z. B. Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen) aus einem definierten Zeichensatz enthält]]></description>
    </type>
    <type name="integer" type="integer">
      <description><![CDATA[Integer: ein Datentyp der ganzzahlige Werte speichert]]></description>
    </type>
    <type name="array" type="array">
      <description><![CDATA[Array: eine Datenstruktur die eine Liste von Elementen, meißt eines einheitlichen Datentyps, enthält - die Elemente werden über einen ganzzahligen(integer) Index adressiert]]></description>
    </type>
    <type name="boolean" type="boolean">
      <description><![CDATA[Boolean - ein Datentyp der immer einen von zwei Werten annimmt um eine logische Aussage zu treffen üblich sind  "true/false" oder "1/0" (wahr = 1; falsch = 0)]]></description>
    </type>
  </types>
  <methods>
    <method name="resetTest">
      <description><![CDATA[löscht alle Kunden und Transaktionen in der Testumgebung]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="true">
          <description><![CDATA[Muss 1 sein]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </method>
    <method name="customerCreate">
      <description><![CDATA[legt neuen Kunden an]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="false" default="null">
          <description><![CDATA[ eigene eindeutige ID des Kunden, wird anderenfalls erzeugt]]></description>
        </parameter>
        <parameter name="freeParams" type="array" required="false" default="null">
          <description><![CDATA[ Liste mit freien Parametern, die dem Kunden zugeordnet werden]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="customerId" type="string" required="true">
            <description><![CDATA[eigene oder erzeugte eindeutige ID des Kunden]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="customerSet">
      <description><![CDATA[ordnet weitere freie Parameter dem Kunden zu, oder ändert sie]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[eindeutige ID des Kunden]]></description>
        </parameter>
        <parameter name="freeParams" type="array" required="false" default="null">
          <description><![CDATA[ Liste mit zusätzlichen freien Parametern]]></description>
        </parameter>
        <parameter name="newCustomerId" type="string" required="false" default="null">
          <description><![CDATA[ Wenn angegeben, neue ID des Kunden, die alte Id wird als freeParam[lastCustomerId] gespeichert]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </method>
    <method name="customerGet">
      <description><![CDATA[ermittelt alle freien Parameter des Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="freeParams" type="array" required="false" default="null">
            <description><![CDATA[ Liste mit allen freien Parametern]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="customerList">
      <description><![CDATA[ermittelt alle Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="from" type="integer" required="false" default="0">
          <description><![CDATA[ Position des ersten auszugebenden Kunden]]></description>
        </parameter>
        <parameter name="count" type="integer" required="false" default="100">
          <description><![CDATA[ Anzahl der auszugebenden Kunden]]></description>
        </parameter>
        <parameter name="search" type="string" required="false" default="null">
          <description><![CDATA[ Optionale Suche nach Name oder Email, zB 'Max Muster' oder als Regex /^Max M/]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="customerIdList" type="array" required="false" default="null">
            <description><![CDATA[ Liste mit allen freien Parametern]]></description>
          </parameter>
          <parameter name="count" type="integer" required="true">
            <description><![CDATA[Anzahl der Kunden in der Liste]]></description>
          </parameter>
          <parameter name="maxCount" type="integer" required="true">
            <description><![CDATA[Gesamtanzahl aller Kunden]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="bankaccountSet">
      <description><![CDATA[erzeugt oder ändert Bankverbindung eines Kunden.
 Die Adressdaten holder* sind optional, werden aber für IBAN aus Nicht-EWR-Ländern (derzeit nur Schweiz) benötigt.]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
        <parameter name="iban" type="string" required="false" default="null">
          <description><![CDATA[ IBAN]]></description>
        </parameter>
        <parameter name="bic" type="string" required="false" default="null">
          <description><![CDATA[ BIC, opt. bei deutscher IBAN]]></description>
        </parameter>
        <parameter name="country" type="string" required="false" default="'DE'">
          <description><![CDATA[ Sitz der Bank, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="bankCode" type="string" required="false" default="null">
          <description><![CDATA[ Bankleitzahl, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="accountNumber" type="string" required="false" default="null">
          <description><![CDATA[ Kontonummer, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="accountHolder" type="string" required="true">
          <description><![CDATA[Kontoinhaber]]></description>
        </parameter>
        <parameter name="holderAddress" type="string" required="false" default="null">
          <description><![CDATA[ Kontoinhaber Adresse]]></description>
        </parameter>
        <parameter name="holderZip" type="string" required="false" default="null">
          <description><![CDATA[ Kontoinhaber Postleitzahl]]></description>
        </parameter>
        <parameter name="holderCity" type="string" required="false" default="null">
          <description><![CDATA[ Kontoinhaber Ort]]></description>
        </parameter>
        <parameter name="holderCountry" type="string" required="false" default="null">
          <description><![CDATA[ Kontoinhaber Land]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="iban" type="string" required="true">
            <description><![CDATA[IBAN]]></description>
          </parameter>
          <parameter name="bic" type="string" required="true">
            <description><![CDATA[BIC]]></description>
          </parameter>
          <parameter name="country" type="string" required="true">
            <description><![CDATA[Sitz der Bank]]></description>
          </parameter>
          <parameter name="bankName" type="string" required="true">
            <description><![CDATA[Name der Bank]]></description>
          </parameter>
          <parameter name="bankCode" type="string" required="true">
            <description><![CDATA[Bankleitzahl]]></description>
          </parameter>
          <parameter name="accountNumber" type="string" required="true">
            <description><![CDATA[Kontonummer]]></description>
          </parameter>
          <parameter name="accountHolder" type="string" required="true">
            <description><![CDATA[Kontoinhaber]]></description>
          </parameter>
          <parameter name="eeaStatus" type="boolean" required="true">
            <description><![CDATA[True, wenn Iban zum EWR gehört, andernfalls ist die Angabe der Kontoinhaber-Adresse notwendig]]></description>
          </parameter>
          <parameter name="barStatus" type="string" required="true">
            <description><![CDATA[Sperr-Status der Kontoverbindung]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="bankaccountGet">
      <description><![CDATA[ermittelt die Bankverbindung des Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="iban" type="string" required="true">
            <description><![CDATA[IBAN]]></description>
          </parameter>
          <parameter name="bic" type="string" required="true">
            <description><![CDATA[BIC]]></description>
          </parameter>
          <parameter name="country" type="string" required="true">
            <description><![CDATA[Sitz der Bank]]></description>
          </parameter>
          <parameter name="bankName" type="string" required="true">
            <description><![CDATA[Name der Bank]]></description>
          </parameter>
          <parameter name="bankCode" type="string" required="true">
            <description><![CDATA[Bankleitzahl]]></description>
          </parameter>
          <parameter name="accountNumber" type="string" required="true">
            <description><![CDATA[Kontonummer]]></description>
          </parameter>
          <parameter name="accountHolder" type="string" required="true">
            <description><![CDATA[Kontoinhaber]]></description>
          </parameter>
          <parameter name="holderAddress" type="string" required="false" default="null">
            <description><![CDATA[ Kontoinhaber Adresse, Strasse und Hausnummer]]></description>
          </parameter>
          <parameter name="holderZip" type="string" required="false" default="null">
            <description><![CDATA[ Kontoinhaber Postleitzahl]]></description>
          </parameter>
          <parameter name="holderCity" type="string" required="false" default="null">
            <description><![CDATA[ Kontoinhaber Ort]]></description>
          </parameter>
          <parameter name="holderCountry" type="string" required="false" default="null">
            <description><![CDATA[ Kontoinhaber Land]]></description>
          </parameter>
          <parameter name="eeaStatus" type="boolean" required="true">
            <description><![CDATA[True, wenn Iban zum EWR gehört, andernfalls ist die Angabe der Kontoinhaber-Adresse notwendig]]></description>
          </parameter>
          <parameter name="barStatus" type="string" required="true">
            <description><![CDATA[Sperr-Status der Kontoverbindung]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="bankCheck">
      <description><![CDATA[prüft Bankleitzahl und ermittelt Banknamen]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="iban" type="string" required="false" default="null">
          <description><![CDATA[ IBAN]]></description>
        </parameter>
        <parameter name="bic" type="string" required="false" default="null">
          <description><![CDATA[ BIC, alternativ zur IBAN]]></description>
        </parameter>
        <parameter name="country" type="string" required="false" default="'DE'">
          <description><![CDATA[ Sitz der Bank, alternativ zu IBAN und BIC]]></description>
        </parameter>
        <parameter name="bankCode" type="string" required="false" default="null">
          <description><![CDATA[ Bankleitzahl, alternativ zu IBAN und BIC]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="bic" type="string" required="true">
            <description><![CDATA[BIC]]></description>
          </parameter>
          <parameter name="country" type="string" required="true">
            <description><![CDATA[Sitz der Bank]]></description>
          </parameter>
          <parameter name="bankName" type="string" required="true">
            <description><![CDATA[Name der Bank]]></description>
          </parameter>
          <parameter name="bankCode" type="string" required="true">
            <description><![CDATA[Bankleitzahl]]></description>
          </parameter>
          <parameter name="eeaStatus" type="boolean" required="true">
            <description><![CDATA[True, wenn Bank zum EWR gehört, andernfalls ist die Angabe der Kontoinhaber-Adresse notwendig]]></description>
          </parameter>
          <parameter name="orderStatus" type="string" required="true">
            <description><![CDATA[Autragsart der Bank ALL = Lastschriften, Überweisungen, CREDIT = nur Überweisung, DENIED = Gesperrt für Zahlungverkehr,]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="bankaccountCheck">
      <description><![CDATA[prüft Bankverbindung und ermittelt Banknamen]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="iban" type="string" required="false" default="null">
          <description><![CDATA[ IBAN]]></description>
        </parameter>
        <parameter name="bic" type="string" required="false" default="null">
          <description><![CDATA[ BIC, opt. bei deutscher IBAN]]></description>
        </parameter>
        <parameter name="country" type="string" required="false" default="'DE'">
          <description><![CDATA[ Sitz der Bank, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="bankCode" type="string" required="false" default="null">
          <description><![CDATA[ Bankleitzahl, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="accountNumber" type="string" required="false" default="null">
          <description><![CDATA[ Kontonummer, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="accountHolder" type="string" required="false" default="null">
          <description><![CDATA[ Kontoinhaber]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="iban" type="string" required="true">
            <description><![CDATA[IBAN]]></description>
          </parameter>
          <parameter name="bic" type="string" required="true">
            <description><![CDATA[BIC]]></description>
          </parameter>
          <parameter name="country" type="string" required="true">
            <description><![CDATA[Sitz der Bank]]></description>
          </parameter>
          <parameter name="bankName" type="string" required="true">
            <description><![CDATA[Name der Bank]]></description>
          </parameter>
          <parameter name="bankCode" type="string" required="true">
            <description><![CDATA[Bankleitzahl]]></description>
          </parameter>
          <parameter name="orderStatus" type="string" required="true">
            <description><![CDATA[Autragsart der Bank ALL = Lastschriften, Überweisungen, CREDIT = nur Überweisung, DENIED = Gesperrt für Zahlungverkehr,]]></description>
          </parameter>
          <parameter name="accountNumber" type="string" required="true">
            <description><![CDATA[Kontonummer]]></description>
          </parameter>
          <parameter name="eeaStatus" type="boolean" required="true">
            <description><![CDATA[True, wenn Iban zum EWR gehört, andernfalls ist die Angabe der Kontoinhaber-Adresse notwendig]]></description>
          </parameter>
          <parameter name="barStatus" type="string" required="true">
            <description><![CDATA[Sperr-Status der Kontoverbindung]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="bankaccountBar">
      <description><![CDATA[Sperrt Bankverbindung oder gibt sie frei]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="iban" type="string" required="false" default="null">
          <description><![CDATA[ IBAN]]></description>
        </parameter>
        <parameter name="bic" type="string" required="false" default="null">
          <description><![CDATA[ BIC, opt. bei deutscher IBAN]]></description>
        </parameter>
        <parameter name="country" type="string" required="false" default="'DE'">
          <description><![CDATA[ Sitz der Bank, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="bankCode" type="string" required="false" default="null">
          <description><![CDATA[ Bankleitzahl, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="accountNumber" type="string" required="false" default="null">
          <description><![CDATA[ Kontonummer, wenn IBAN leer ist]]></description>
        </parameter>
        <parameter name="barStatus" type="string" required="true">
          <description><![CDATA[Sperr-Status BARRED, ALLOWED]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </method>
    <method name="addressSet">
      <description><![CDATA[erzeugt oder ändert Adressdaten eines Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
        <parameter name="firstName" type="string" required="false" default="null">
          <description><![CDATA[ Vorname]]></description>
        </parameter>
        <parameter name="surName" type="string" required="false" default="null">
          <description><![CDATA[ Nachname]]></description>
        </parameter>
        <parameter name="company" type="string" required="false" default="null">
          <description><![CDATA[ Firma]]></description>
        </parameter>
        <parameter name="street" type="string" required="false" default="null">
          <description><![CDATA[ Strasse und Hausnummer]]></description>
        </parameter>
        <parameter name="zip" type="string" required="false" default="null">
          <description><![CDATA[ Postleitzahl]]></description>
        </parameter>
        <parameter name="city" type="string" required="false" default="null">
          <description><![CDATA[ Ort]]></description>
        </parameter>
        <parameter name="country" type="string" required="false" default="'DE'">
          <description><![CDATA[ Land]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </method>
    <method name="addressGet">
      <description><![CDATA[ermittelt die Adresse des Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="firstName" type="string" required="true">
            <description><![CDATA[Vorname]]></description>
          </parameter>
          <parameter name="surName" type="string" required="true">
            <description><![CDATA[Nachname]]></description>
          </parameter>
          <parameter name="company" type="string" required="true">
            <description><![CDATA[Firma]]></description>
          </parameter>
          <parameter name="street" type="string" required="true">
            <description><![CDATA[Strasse und Hausnummer]]></description>
          </parameter>
          <parameter name="zip" type="string" required="true">
            <description><![CDATA[Postleitzahl]]></description>
          </parameter>
          <parameter name="city" type="string" required="true">
            <description><![CDATA[Ort]]></description>
          </parameter>
          <parameter name="country" type="string" required="true">
            <description><![CDATA[Land]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="contactDataSet">
      <description><![CDATA[erzeugt oder ändert Kontaktdaten eines Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
        <parameter name="email" type="string" required="false" default="null">
          <description><![CDATA[ Emailadresse des Kunden]]></description>
        </parameter>
        <parameter name="phone" type="string" required="false" default="null">
          <description><![CDATA[ Festnetzanschluss]]></description>
        </parameter>
        <parameter name="mobile" type="string" required="false" default="null">
          <description><![CDATA[ Handynummer]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </method>
    <method name="contactDataGet">
      <description><![CDATA[ermittelt die Kontaktdaten des Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="email" type="string" required="true">
            <description><![CDATA[Emailadresse]]></description>
          </parameter>
          <parameter name="phone" type="string" required="true">
            <description><![CDATA[Festnetzanschluss]]></description>
          </parameter>
          <parameter name="mobile" type="string" required="true">
            <description><![CDATA[Handynummer]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionCreate">
      <description><![CDATA[erzeugt einen neuen Bezahlvorgang
 löst die Benachrichtigung sessionStatus mit dem Status "INIT" bzw. "REINIT" aus]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="true">
          <description><![CDATA[ID des Kunden]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="false" default="">
          <description><![CDATA[ eigene eindeutige ID des Vorgangs, wird anderenfalls erzeugt]]></description>
        </parameter>
        <parameter name="project" type="string" required="true">
          <description><![CDATA[das Projektkürzel für den Vorgang]]></description>
        </parameter>
        <parameter name="projectCampaign" type="string" required="false" default="">
          <description><![CDATA[ ein Kampagnenkürzel des Projektbetreibers]]></description>
        </parameter>
        <parameter name="account" type="string" required="false" default="">
          <description><![CDATA[ Account des beteiligten Webmasters]]></description>
        </parameter>
        <parameter name="webmasterCampaign" type="string" required="false" default="">
          <description><![CDATA[ ein Kampagnenkürzel des Webmasters]]></description>
        </parameter>
        <parameter name="amount" type="integer" required="false" default="0">
          <description><![CDATA[ abzurechnender Betrag in Cent der jeweiligen Währung]]></description>
        </parameter>
        <parameter name="currency" type="string" required="false" default="'EUR'">
          <description><![CDATA[ Währung]]></description>
        </parameter>
        <parameter name="title" type="string" required="false" default="">
          <description><![CDATA[ Bezeichnung der zu kaufenden Sache, wählen Sie einen Namen, der von Ihrem Kunden wiedererkannt wird]]></description>
        </parameter>
        <parameter name="payText" type="string" required="false" default="">
          <description><![CDATA[ Abbuchungstext der Lastschrift, sollte die Bezeichnung ihres Projekts/Shops und der gekauften Sache beinhalten, standardmäßig wird Projektname und $title genutzt]]></description>
        </parameter>
        <parameter name="ip" type="string" required="false" default="">
          <description><![CDATA[ IP des Benutzers]]></description>
        </parameter>
        <parameter name="freeParams" type="array" required="false" default="null">
          <description><![CDATA[ Liste mit freien Parametern, die dem Vorgang zugeordnet werden]]></description>
        </parameter>
        <parameter name="mandateRef" type="string" required="false" default="null">
          <description><![CDATA[ SEPA Mandats Referenz, wird ansonsten erzeugt]]></description>
        </parameter>
        <parameter name="mandateSignDate" type="string" required="false" default="null">
          <description><![CDATA[ Datum der Mandatserteilung, ansonsten sessionApprove-Datum]]></description>
        </parameter>
        <parameter name="mandateRecur" type="string" required="false" default="null">
          <description><![CDATA[ SEPA Mandat für einzelne - Standard für neue Mandate: "ONEOFF", oder wiederkehrende Zahlungen: "RECURRING" oder "FINAL"]]></description>
        </parameter>
        <parameter name="payDate" type="string" required="false" default="null">
          <description><![CDATA[ Vorgabe des Abbuchungsdatums, max 14. des Folgemonats]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="sessionId" type="string" required="true">
            <description><![CDATA[eigene oder erzeugte eindeutige ID des Vorgangs]]></description>
          </parameter>
          <parameter name="status" type="string" required="true">
            <description><![CDATA[Vorgangsstatus "INIT" oder "REINIT"]]></description>
          </parameter>
          <parameter name="expire" type="string" required="true">
            <description><![CDATA[Ablaufzeit der Bestätigung]]></description>
          </parameter>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[übergebener Betrag bzw. Standard aus Konfiguration in Cent]]></description>
          </parameter>
          <parameter name="currency" type="string" required="true">
            <description><![CDATA[übergebene Währung bzw. "EUR"]]></description>
          </parameter>
          <parameter name="title" type="string" required="true">
            <description><![CDATA[übergebene Kaufsache bzw. Standard aus Konfiguration]]></description>
          </parameter>
          <parameter name="payToken" type="string" required="true">
            <description><![CDATA[Zuordnungsschlüssel im Lastschrifttext]]></description>
          </parameter>
          <parameter name="payText" type="string" required="true">
            <description><![CDATA[Abbuchungstext der Lastschrift]]></description>
          </parameter>
          <parameter name="payAmount" type="string" required="true">
            <description><![CDATA[Zahlbetrag in EUR-Cent]]></description>
          </parameter>
          <parameter name="creditorId" type="string" required="true">
            <description><![CDATA[SEPA Gläubiger ID]]></description>
          </parameter>
          <parameter name="mandateRef" type="string" required="true">
            <description><![CDATA[SEPA Mandats Referenz]]></description>
          </parameter>
          <parameter name="mandateSignDate" type="string" required="true">
            <description><![CDATA[SEPA Datum der Mandatserteilung oder <leer>]]></description>
          </parameter>
          <parameter name="payRecurState" type="string" required="true">
            <description><![CDATA[SEPA Wiederholungs-Status der Zahlung: "OOFF", "FRST", "RCUR", "FNAL"]]></description>
          </parameter>
          <parameter name="payDate" type="string" required="true">
            <description><![CDATA[SEPA Datum der Belastung]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionSet">
      <description><![CDATA[ordnet weitere freie Parameter der Session zu, oder ändert sie]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
        <parameter name="freeParams" type="array" required="false" default="null">
          <description><![CDATA[ Liste mit zusätzlichen freien Parametern]]></description>
        </parameter>
        <parameter name="newSessionId" type="string" required="false" default="null">
          <description><![CDATA[ Wenn angegeben, neue ID des Vorgangs, die alte Id wird als freeParam[lastSessionId] gespeichert]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </method>
    <method name="sessionGet">
      <description><![CDATA[ermittelt Daten eines Bezahlvorgangs]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="status" type="string" required="true">
            <description><![CDATA[Vorgangsstatus "INIT", "REINIT", "APPROVED", "CHARGED", "REVERSED" oder "RECHARGED"]]></description>
          </parameter>
          <parameter name="expire" type="string" required="true">
            <description><![CDATA[Ablaufzeit bzw. Bestätigung des Vorgangs]]></description>
          </parameter>
          <parameter name="statusDetail" type="string" required="true">
            <description><![CDATA[Beschreibung für gescheiterte Transaktionen]]></description>
          </parameter>
          <parameter name="customerId" type="string" required="true">
            <description><![CDATA[ID des Kunden]]></description>
          </parameter>
          <parameter name="project" type="string" required="true">
            <description><![CDATA[zugeordnetes Projekt]]></description>
          </parameter>
          <parameter name="projectCampaign" type="string" required="true">
            <description><![CDATA[zugeordnete Projektkampagne]]></description>
          </parameter>
          <parameter name="account" type="string" required="true">
            <description><![CDATA[zugeordneter Webmasteraccount]]></description>
          </parameter>
          <parameter name="webmasterCampaign" type="string" required="true">
            <description><![CDATA[zugeordnete Webmasterkampagne]]></description>
          </parameter>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[übergebener Betrag bzw. Standard aus Konfiguration in Cent]]></description>
          </parameter>
          <parameter name="currency" type="string" required="true">
            <description><![CDATA[übergebene Währung bzw. "EUR"]]></description>
          </parameter>
          <parameter name="title" type="string" required="true">
            <description><![CDATA[übergebene Kaufsache bzw. Standard aus Konfiguration]]></description>
          </parameter>
          <parameter name="payToken" type="string" required="true">
            <description><![CDATA[Zuordnungsschlüssel im Lastschrifttext]]></description>
          </parameter>
          <parameter name="payText" type="string" required="true">
            <description><![CDATA[Abbuchungstext der Lastschrift]]></description>
          </parameter>
          <parameter name="payAmount" type="integer" required="true">
            <description><![CDATA[Zahlbetrag in EUR-Cent]]></description>
          </parameter>
          <parameter name="openAmount" type="integer" required="true">
            <description><![CDATA[offener, noch zu zahlender Betrag der Session in EUR-Cent]]></description>
          </parameter>
          <parameter name="creditAmount" type="integer" required="true">
            <description><![CDATA[bereits ausgezahlter Betrag der Session in EUR-Cent]]></description>
          </parameter>
          <parameter name="ip" type="string" required="true">
            <description><![CDATA[übergebene IP des Benutzers]]></description>
          </parameter>
          <parameter name="freeParams" type="array" required="false" default="null">
            <description><![CDATA[ Liste mit allen freien Parametern]]></description>
          </parameter>
          <parameter name="creditorId" type="string" required="true">
            <description><![CDATA[SEPA Gläubiger ID]]></description>
          </parameter>
          <parameter name="mandateRef" type="string" required="true">
            <description><![CDATA[SEPA Mandats Referenz]]></description>
          </parameter>
          <parameter name="mandateSignDate" type="string" required="true">
            <description><![CDATA[SEPA Datum der Mandatserteilung oder <leer>]]></description>
          </parameter>
          <parameter name="payRecurState" type="string" required="true">
            <description><![CDATA[SEPA Wiederholungs-Status der Zahlung: "OOFF", "FRST", "RCUR", "FNAL"]]></description>
          </parameter>
          <parameter name="payDate" type="string" required="true">
            <description><![CDATA[SEPA Datum der Belastung]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionApprove">
      <description><![CDATA[bestätigt den Lastschrifteinzug eines Vorgangs
 löst die Benachrichtigung sessionStatus mit dem Status "APPROVED" aus]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="status" type="string" required="true">
            <description><![CDATA[Vorgangsstatus "APPROVED" oder "FAILED"]]></description>
          </parameter>
          <parameter name="expire" type="string" required="true">
            <description><![CDATA[Zeitpunkt der Bestätigung]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionCredit">
      <description><![CDATA[Erzeugt eine Gutschrift an den Kunden, unabhängig von Status und Zahlstand der Session]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
        <parameter name="amount" type="integer" required="true">
          <description><![CDATA[Überweisungsbetrag in EUR-Cent]]></description>
        </parameter>
        <parameter name="payText" type="string" required="false" default="null">
          <description><![CDATA[ Buchungstext, stdm. wird der ursprüngliche Buchungstext verwendet]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[Überweisungsbetrag in EUR-Cent]]></description>
          </parameter>
          <parameter name="payText" type="string" required="true">
            <description><![CDATA[Buchungstext]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionList">
      <description><![CDATA[ermittelt alle Bezahlvorgänge eines Kunden]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="customerId" type="string" required="false" default="null">
          <description><![CDATA[ ID des Kunden oder [NULL] für Sessions aller Kunden]]></description>
        </parameter>
        <parameter name="dtmFrom" type="integer" required="false" default="null">
          <description><![CDATA[ Anfang der Zeitraumbegrenzung oder [NULL] um diese Zeitraumbegrenzung nicht zu definieren]]></description>
        </parameter>
        <parameter name="dtmTo" type="integer" required="false" default="null">
          <description><![CDATA[ Ende der Zeitraumbegrenzung oder [NULL] um diese Zeitraumbegrenzung nicht zu definieren]]></description>
        </parameter>
        <parameter name="from" type="integer" required="false" default="0">
          <description><![CDATA[ Position der ersten auszugebenden Session]]></description>
        </parameter>
        <parameter name="count" type="integer" required="false" default="100">
          <description><![CDATA[ Anzahl der auszugebenden Sessions]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="sessionIdList" type="array" required="false" default="null">
            <description><![CDATA[ 0-indizierte Liste mit Vorgang-IDs]]></description>
          </parameter>
          <parameter name="count" type="integer" required="true">
            <description><![CDATA[Anzahl der Einträge in der Liste]]></description>
          </parameter>
          <parameter name="maxCount" type="integer" required="true">
            <description><![CDATA[Gesamtanzahl aller Sessions aller/des Kunden, im gewählten Zeitraum]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionChargeTest">
      <description><![CDATA[simuliert die Abbuchung für alle bestätigten Vorgänge
 erzeugt für jede bestätigte Session eine neue Transaktion mit dem Typ "BOOKING" und löst die Benachrichtigung transactionCreate aus
 löst die Benachrichtigung sessionStatus mit dem Status "CHARGED" aus]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ muss 1 sein]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="count" type="integer" required="true">
            <description><![CDATA[Anzahl der gebuchten Vorgänge]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionReverseTest">
      <description><![CDATA[simuliert Stornierung eines einzelnen Vorgangs
 erzeugt eine neue Transaktion mit dem Typ "REVERSAL" und löst die Benachrichtigung transactionCreate aus
 löst die Benachrichtigung sessionStatus mit dem Status "REVERSED" aus]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ muss 1 sein]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
        <parameter name="reverseCode" type="integer" required="false" default="0">
          <description><![CDATA[ Textschlüssel der Bank z.B. 9055 - Widerspruch]]></description>
        </parameter>
        <parameter name="reverseReason" type="string" required="false" default="'UNKNOWN'">
          <description><![CDATA[ Rücklastschriftgrund "UNSPECIFIED", "ACCOUNT_EXPIRED", "ACCOUNT_WRONG", "NOT_AUTHORIZED", "CONTRADICTED", "UNKNOWN"]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[stornierter Betrag inkl. Gebühr in EUR-Cent]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionRechargeTest">
      <description><![CDATA[simuliert die komplette Nachzahlung eines stornierten Vorgangs
 erzeugt eine neue Transaktion mit dem Typ "BACKPAY" und löst die Benachrichtigung transactionCreate aus
 löst die Benachrichtigung sessionStatus mit dem Status "RECHARGED" aus, wenn der gesamte offene Betrag beglichen wurde]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ muss 1 sein]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
        <parameter name="amount" type="integer" required="false" default="null">
          <description><![CDATA[ optional der nachgezahlte Teilbetrag in EUR-Cent]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[gebuchter Betrag in EUR-Cent]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionRefund">
      <description><![CDATA[Veranlasst eine (Teil-)Gutschrift und überweist sie zurück
 erzeugt eine neue Transaktion mit dem Typ "REFUND" und löst die Benachrichtigung transactionCreate aus
 Wurde die Lastschrift noch nicht eingereicht (s. sessionChargeTest), wird diese gestoppt, und eine neue "STOP" Transaktion erzeugt.
 Dies ist i.d.R. am selben Tag bis ca. 24 h der Fall.]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID der zugehörigen Session]]></description>
        </parameter>
        <parameter name="bankCode" type="string" required="false" default="null">
          <description><![CDATA[ Bankleitzahl, alternativ zur IBAN]]></description>
        </parameter>
        <parameter name="accountNumber" type="string" required="false" default="null">
          <description><![CDATA[ Kontonummer, alternativ zur IBAN]]></description>
        </parameter>
        <parameter name="accountHolder" type="string" required="false" default="null">
          <description><![CDATA[ Kontoinhaber]]></description>
        </parameter>
        <parameter name="amount" type="integer" required="false" default="null">
          <description><![CDATA[ Überweisungsbetrag in EUR-Cent, stdm. wird der gesamte eingegangene Betrag überwiesen]]></description>
        </parameter>
        <parameter name="payText" type="string" required="false" default="null">
          <description><![CDATA[ Buchungstext, stdm. wird der ursprüngliche Buchungstext verwendet]]></description>
        </parameter>
        <parameter name="iban" type="string" required="false" default="null">
          <description><![CDATA[ IBAN des alternativen Empfängers]]></description>
        </parameter>
        <parameter name="bic" type="string" required="false" default="null">
          <description><![CDATA[ BIC, opt. bei deutscher IBAN]]></description>
        </parameter>
        <parameter name="country" type="string" required="false" default="'DE'">
          <description><![CDATA[ Sitz der Bank, alternativ zur IBAN]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[Überweisungsbetrag in EUR-Cent]]></description>
          </parameter>
          <parameter name="payText" type="string" required="true">
            <description><![CDATA[Buchungstext]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="sessionRefundReverseTest">
      <description><![CDATA[simuliert Stornierung der letzten Gutschrift,
 erzeugt eine neue Transaktion mit dem Typ "REFUNDREVERSAL" und löst die Benachrichtigung transactionCreate aus]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ muss 1 sein]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[stornierter Gutschriftbetrag in EUR-Cent]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="transactionCreate">
      <description><![CDATA[erstellt eine Transaktion vom Typ "EXTERNAL"
 löst die Benachrichtigung transactionCreate aus]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID der zugehörigen Session]]></description>
        </parameter>
        <parameter name="date" type="string" required="false" default="null">
          <description><![CDATA[ Datum der Transaktion]]></description>
        </parameter>
        <parameter name="amount" type="integer" required="true">
          <description><![CDATA[Transaktionsbetrag in EUR-Cent]]></description>
        </parameter>
        <parameter name="description" type="string" required="false" default="'&quot;&quot;'">
          <description><![CDATA[ Beschreibungstext]]></description>
        </parameter>
        <parameter name="bookedDate" type="string" required="false" default="null">
          <description><![CDATA[ Datum der Buchung bei Kunden]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="transactionId" type="string" required="true">
            <description><![CDATA[ID der erzeugten Transaktion]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="transactionList">
      <description><![CDATA[ermittelt alle Transaktionen für einen Bezahlvorgang]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="count" type="integer" required="true">
            <description><![CDATA[Anzahl der Einträge in transactionIdList]]></description>
          </parameter>
          <parameter name="transactionIdList" type="array" required="true">
            <description><![CDATA[0-indizierte Liste mit Transaktions-IDs]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
    <method name="transactionGet">
      <description><![CDATA[ermittelt Daten einer Transaktion]]></description>
      <parameters>
        <parameter name="accessKey" type="string" required="true">
          <description><![CDATA[AccessKey aus dem Controlcenter]]></description>
        </parameter>
        <parameter name="testMode" type="integer" required="false" default="0">
          <description><![CDATA[ aktiviert Testumgebung]]></description>
        </parameter>
        <parameter name="transactionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="sessionId" type="string" required="true">
            <description><![CDATA[ID des Vorgangs]]></description>
          </parameter>
          <parameter name="date" type="string" required="true">
            <description><![CDATA[Datum der Transaktion]]></description>
          </parameter>
          <parameter name="type" type="string" required="true">
            <description><![CDATA[Art der Transaktion "BOOKING", "REVERSAL", 'STOP', "BACKPAY", "EXTERNAL", "REFUND", "REFUNDREVERSAL", "CREDIT"]]></description>
          </parameter>
          <parameter name="reverseReason" type="string" required="false" default="null">
            <description><![CDATA[ Bei $type = "REVERSAL" Art der Rücklastschrift "UNSPECIFIED", "ACCOUNT_EXPIRED", "ACCOUNT_WRONG", "NOT_AUTHORIZED", "CONTRADICTED", "UNKNOWN"]]></description>
          </parameter>
          <parameter name="reverseReasonGvc" type="string" required="false" default="null">
            <description><![CDATA[ Bei $type = "REVERSAL" Geschäftsvorfall-Code der Rücklastschrift z.B. "109901" - IBAN fehlerhaft]]></description>
          </parameter>
          <parameter name="reverseReasonSepa" type="string" required="false" default="null">
            <description><![CDATA[ Bei $type = "REVERSAL" SEPA Reason Code der Rücklastschrift z.B. "AC01" - Incorrect Account Number]]></description>
          </parameter>
          <parameter name="amount" type="integer" required="true">
            <description><![CDATA[Transaktionsbetrag in EUR-Cent]]></description>
          </parameter>
          <parameter name="description" type="string" required="true">
            <description><![CDATA[Beschreibungstext]]></description>
          </parameter>
          <parameter name="bookedDate" type="string" required="false" default="null">
            <description><![CDATA[ Datum der Buchung bei Kunden]]></description>
          </parameter>
        </parameters>
      </return>
    </method>
  </methods>
  <notifications>
    <notification name="sessionStatus">
      <description><![CDATA[Benachrichtigt bei jeder Änderung des Vorgangsstatus, und fügt weitere freie Parameter hinzu
 wird durch die Funktionen sessionCreate und sessionApprove ausgelöst
 sowie durch sessionChargeTest, sessionReverseTest und sessionRechargeTest bzw. die zugehörigen Ereignisse]]></description>
      <parameters>
        <parameter name="testMode" type="integer" required="true">
          <description><![CDATA[1 bei aktivierter Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
        <parameter name="status" type="string" required="true">
          <description><![CDATA[Vorgangsstatus "INIT", "REINIT", "APPROVED", "CHARGED", "REVERSED" oder "RECHARGED"]]></description>
        </parameter>
        <parameter name="freeParams" type="array" required="false" default="null">
          <description><![CDATA[ Liste mit allen freien Parametern]]></description>
        </parameter>
      </parameters>
      <return type="array">
        <description><![CDATA[]]></description>
        <parameters>
          <parameter name="freeParams" type="array" required="false" default="null">
            <description><![CDATA[ Liste mit zusätzlichen freien Parametern]]></description>
          </parameter>
        </parameters>
      </return>
    </notification>
    <notification name="transactionCreate">
      <description><![CDATA[Benachrichtigt bei Erstellung einer neuen Transaktion
 wird ausgelöst durch die Funktionen sessionChargeTest, sessionReverseTest, sessionRechargeTest, transactionCreate, sessionRefund, sessionRefundReverseTest bzw. die zugehörigen Ereignisse]]></description>
      <parameters>
        <parameter name="testMode" type="integer" required="true">
          <description><![CDATA[1 bei aktivierter Testumgebung]]></description>
        </parameter>
        <parameter name="sessionId" type="string" required="true">
          <description><![CDATA[ID des Vorgangs]]></description>
        </parameter>
        <parameter name="transactionId" type="string" required="true">
          <description><![CDATA[ID der Transaktion]]></description>
        </parameter>
        <parameter name="date" type="string" required="true">
          <description><![CDATA[Datum der Transaktion]]></description>
        </parameter>
        <parameter name="type" type="string" required="true">
          <description><![CDATA[Transaktionsart "BOOKING", "REVERSAL", 'STOP', "BACKPAY", "EXTERNAL", "REFUND", "REFUNDREVERSAL", "CREDIT"]]></description>
        </parameter>
        <parameter name="amount" type="string" required="true">
          <description><![CDATA[Transaktionsbetrag in EUR-Cent]]></description>
        </parameter>
        <parameter name="description" type="string" required="true">
          <description><![CDATA[Beschreibungstext]]></description>
        </parameter>
        <parameter name="bookedDate" type="string" required="false" default="null">
          <description><![CDATA[ Datum der Buchung bei Kunden]]></description>
        </parameter>
      </parameters>
      <return type="void">
        <description><![CDATA[]]></description>
        <parameters/>
      </return>
    </notification>
  </notifications>
</service>
