> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Zahlungsarten

> Wie eine Zahlungsart in der shop.config angelegt wird, wann sie angeboten wird, wie sie ausgegraut erscheint, welche Zusatzeingaben möglich sind und welche Parameter die einzelnen Zahlungsarten mitbringen.

Zahlungsarten sind der Teil der `shop.config` mit den meisten Abschnitten. Das liegt daran, dass jede Zahlungsart ihren eigenen Abschnitt bekommt, alle Abschnitte denselben Satz Standardparameter teilen und einige Zahlungsarten zusätzlich eigene Parameter mitbringen.

Diese Seite ist deshalb von innen nach außen aufgebaut. Zuerst das gemeinsame Schema aller Zahlungsart-Abschnitte. Dann die Standardparameter, die in jedem dieser Abschnitte stehen dürfen. Danach die vier Unterabschnitte und die beiden zentralen Abhängigkeits-Abschnitte, mit denen Sie die Verfügbarkeit feiner steuern. Zum Schluss die Besonderheiten der einzelnen Zahlungsarten und die flankierenden Abschnitte für Bonitätsprüfung, Kreditkartentypen und Fehlermeldungen der Dienstleister.

Referenz: Shopkonfiguration shop.config, Übersicht aller Abschnitte

## Das Schema `PaymentXXX-Txt`

Jede Zahlungsart wird in einem eigenen Abschnitt konfiguriert, dessen Name nach dem Muster `PaymentXXX-Txt` gebildet wird. `XXX` steht für die Kennung der Zahlungsart. Für SOFORT Überweisung ergibt sich daraus `PaymentDIRECTebanking-Txt`, für Nachnahme `PaymentCashOnDelivery-Txt`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentCashOnDelivery-Txt>
   Allow            = yes
   Name             = Nachnahme
   NameSuffix       = zzgl. ~Cost~ ~WS-Currency~ Nachnahmegebühr
   Img              = logo-nachnahme.png
   Cost-List        = (0:5.90)
   BillCountry-Rule = AllowCountries
   BillCountry-List = DEU
</PaymentCashOnDelivery-Txt>
```

### Wann ein Abschnitt überhaupt gelesen wird

Bevor ein einziger weiterer Parameter ausgewertet wird, prüft der Kernel drei Dinge. Fällt eine dieser Prüfungen durch, wird der gesamte Abschnitt verworfen, ohne dass eine Meldung erscheint.

| Bedingung | Verhalten, wenn nicht erfüllt |
| - | - |
| `Name` ist gefüllt | Die Zahlungsart wird nicht aktiviert, auch bei `Allow = yes` |
| `Allow = yes` | Die Zahlungsart wird nicht aktiviert |
| `TestMode` passt zum Shop-Modus | Ein Abschnitt mit `TestMode = yes` wird nur im Zahlungsarten-Testmodus gelesen |

Wenn für dieselbe Zahlungsart sowohl ein Test- als auch ein Produktiv-Abschnitt in der Konfiguration steht und der Testmodus aktiv ist, gewinnt der Test-Abschnitt. Der Produktiv-Abschnitt wird dann nicht mehr eingelesen.

Bei allen Zahlungsarten, die über ein Online-Clearing laufen, kommt eine vierte Bedingung hinzu. Ist das zugehörige Clearing für den Shop nicht freigeschaltet, wird die Zahlungsart deaktiviert, selbst wenn der Abschnitt vollständig und korrekt ausgefüllt ist. Das betrifft unter anderem PayPal, iDEAL, giropay Online-Überweisung, SOFORT Überweisung, TWINT, Apple Pay und Google Pay. Die Freischaltung ist keine Einstellung der `shop.config`, sondern erfolgt durch die WEBSALE AG.

## Standardparameter

Die folgenden Parameter sind in jedem `PaymentXXX-Txt`-Abschnitt erlaubt. Sie sind hier nach Aufgabe gruppiert, weil die alphabetische Reihenfolge den Zusammenhang zwischen zusammengehörenden Parametern verdeckt.

### Grundeinstellung und Darstellung

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Zahlungsart im Shop anbieten | `yes`, `no`. Standard: `no` |
| `TestMode` | Abschnitt gilt nur im Zahlungsarten-Testmodus | `yes`, `no`. Standard: `no` |
| `Name` | Name der Zahlungsart. Pflicht, siehe oben | Text |
| `NameSuffix` | Zusatztext zur Zahlungsart, mit lokalen Tags | siehe unten |
| `Img` | Symbolbild, standardmäßig aus `../../navigation/grafiken/` | Dateiname, beispielsweise `logo-paymentXYZ.jpg` |
| `Link` | Link mit weiteren Informationen zur Zahlungsart | URL |
| `Confirm-Txt` | Text auf der Bestätigungsseite | Text |
| `Dependencies` | Freier Hinweistext zu sonstigen Abhängigkeiten | Text, siehe Hinweis unten |
| `DisplayInList-Flag` | Zahlungsart in der globalen Liste verfügbarer Zahlungsarten zeigen | `yes`, `no`. Standard: `yes` |
| `RadioOnClick` | JavaScript beim Klick auf den Radiobutton | beispielsweise `selectPayment(~ID~);` |
| `ImgOnClick` | JavaScript beim Klick auf das Symbol | beispielsweise `selectPaymentImage('~ID~');` |

`RadioOnClick` und `ImgOnClick` greifen nur, wenn die Auswahl der Zahlungsart mit DIV-Containern umgesetzt ist. In `RadioOnClick` stehen die lokalen Tags `RadiobuttonID` und `ID` zur Verfügung, in `ImgOnClick` die Tags `Link` und `ID`.

> [!NOTE]
>
> Wenn `Dependencies` HTML enthält, muss aus technischen Gründen `WS-TplComment` vorangestellt werden, beispielsweise so:
>
> ```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
> Dependencies = {WS-TplComment} {/WS-TplComment} <div class="alert">Nur bis 100.00 EUR gültig.</div>
> ```

#### Lokale Tags in `NameSuffix`

| Tag | Ausgabe |
| - | - |
| `WS-Currency` | Währung |
| `WS-CurrencySymbol` | Währungssymbol |
| `Cost` | Kosten der Zahlungsart |
| `GrossCost` | Bruttokosten der Zahlungsart |
| `NetCost` | Nettokosten der Zahlungsart |
| `Discount` | gewährter Rabatt als absoluter Wert |
| `DiscountRate` | gewährter Rabatt in Prozent |
| `UserPaymentCostDiscountRate` | kundenindividueller Rabatt auf die Zahlungskosten, prozentual |
| `UserPaymentCostDiscount` | kundenindividueller Rabatt auf die Zahlungskosten, absolut |
| `UserPaymentCostDiscountNet` | derselbe Rabatt als Nettobetrag |
| `UserPaymentCostDiscountGross` | derselbe Rabatt als Bruttobetrag |
| `AltCurrencyCost` | Kosten in der alternativen Währung |
| `AltCurrencyNetCost` | Nettokosten in der alternativen Währung |
| `AltCurrencyGrossCost` | Bruttokosten in der alternativen Währung |
| `AltCurrencyISO` | ISO-Code der alternativen Währung |
| `AltCurrencySymbol` | Symbol der alternativen Währung |

### Kosten und Rabatte

| Parameter | Zweck | Werte |
| - | - | - |
| `Cost` | Bezeichnung der Zahlungskosten, nur für die Bestelldaten | Text |
| `Cost-List` | warenwertabhängige Kosten, absolut oder prozentual | siehe unten |
| `Discount` | Bezeichnung des Rabatts für die Anzeige in den Bestelldaten | Text, beispielsweise `Zahlungsartenrabatt` |
| `Discount-Value` | Rabatt der Zahlungsart in Prozent auf den Gesamtwarenwert | beispielsweise `3` |
| `UserDiscount-Allow` | kundenindividuellen Rabatt oder Erlass auf Zahlungskosten zulassen | `yes`, `no`. Standard: `yes` |
| `TotalSumAddition` | Sicherheitsaufschlag bei Autorisierung über Online-Clearing | Betrag, beispielsweise `0.01` |

`Cost-List` wird als Folge von Staffeln in runden Klammern geschrieben. Vor dem Doppelpunkt steht der Warenwert, ab dem die Staffel gilt, dahinter die Kosten. Ein nachgestelltes Prozentzeichen macht aus dem absoluten Betrag einen prozentualen Anteil am Warenwert.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
# ab 0 Euro: 3 Euro, ab 10 Euro: 1 Euro, ab 30 Euro: 3 Prozent, ab 100 Euro: kostenlos
Cost-List = (0:3)(10:1)(30:3%)(100:0)
```

Es sind bis zu 500 Staffelungen möglich.

`TotalSumAddition` fängt Rundungsdifferenzen ab. Wenn die Zahlung nur autorisiert wird und die Warenwirtschaft später einen Cent mehr einziehen möchte als autorisiert wurde, scheitert das ohne diesen Aufschlag.

### Verfügbarkeit nach Betrag und Gewicht

| Parameter | Zahlungsart wird angeboten, wenn |
| - | - |
| `MinOrder-Value` | dieser Gesamtwarenwert erreicht ist |
| `MaxOrder-Value` | dieser Gesamtwarenwert nicht überschritten ist |
| `MaxOrderForNewUser-Value` | bei Neukunden ohne Kundennummer dieser Wert nicht überschritten ist |
| `MaxOrderForReseller-Value` | bei Resellern dieser Wert nicht überschritten ist |
| `MinTotal-Value` | diese Gesamtsumme erreicht ist |
| `MaxTotal-Value` | diese Gesamtsumme nicht überschritten ist |
| `MinWeight-Value` | dieses Gesamtgewicht erreicht ist |
| `MaxWeight-Value` | dieses Gesamtgewicht nicht überschritten ist |

Welcher Maximalwert tatsächlich greift, entscheidet eine feste Reihenfolge. Zuerst `MaxOrderForNewUser-Value`, sofern der Käufer keine Kundennummer hat und der Wert gesetzt ist. Dann `MaxOrderForReseller-Value`, sofern der Käufer Reseller ist und der Wert gesetzt ist. Dann der im Kundenkonto hinterlegte Wert, sofern `MaxOrderForUserAccount-Allow` aktiviert ist. Erst danach `MaxOrder-Value`.

| Parameter | Zweck | Werte |
| - | - | - |
| `MaxOrderForUserAccount-Allow` | den im Kundenkonto hinterlegten Maximalbestellwert verwenden | `yes`, `no`. Standard: `no` |
| `IgnoreMaxOrderValueForReseller-Allow` | bei Resellern die Prüfung des Maximalwerts vollständig überspringen | `yes`, `no`. Standard: `no` |

Sie werden vom Kernel ausgewertet und sind in dieser Migration ergänzt worden.

### Verfügbarkeit nach Land

| Parameter | Zweck | Werte |
| - | - | - |
| `BillCountry-Rule` | Regel für das Land der Rechnungsadresse | `AllowCountries`, `DenyCountries` |
| `BillCountry-List` | Länder zur Regel der Rechnungsadresse | kommaseparierte 3-stellige ISO-Codes |
| `DeliveryCountry-Rule` | Regel für das Land der abweichenden Lieferadresse | `AllowCountries`, `DenyCountries` |
| `DeliveryCountry-List` | Länder zur Regel der Lieferadresse | kommaseparierte 3-stellige ISO-Codes |

Jeder andere Wert als `AllowCountries` wirkt wie `DenyCountries`, auch ein leerer. Bleiben Regel und Liste leer, gilt keine Länderbeschränkung.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
# Zahlungsart in allen Ländern, typisch für Kreditkarte
BillCountry-Rule     =
BillCountry-List     =
DeliveryCountry-Rule =
DeliveryCountry-List =

# nur Rechnungs- und Lieferadresse in Deutschland, typisch für Nachnahme
BillCountry-Rule     = AllowCountries
BillCountry-List     = DEU
DeliveryCountry-Rule = AllowCountries
DeliveryCountry-List = DEU

# nur Rechnungsadresse in Deutschland, Lieferadresse unerheblich, typisch für Lastschrift
BillCountry-Rule     = AllowCountries
BillCountry-List     = DEU
DeliveryCountry-Rule =
DeliveryCountry-List =

# Lieferung nach DACH
DeliveryCountry-Rule = AllowCountries
DeliveryCountry-List = DEU,CHE,AUT
```

### Verfügbarkeit nach Kunde

| Parameter | Zweck | Werte |
| - | - | - |
| `NewUser-Allow` | Neukunden ohne Kundennummer die Zahlungsart anbieten | `yes`, `no`. Standard: `yes` |
| `GuestOrder-Allow` | Gastbestellern die Zahlungsart anbieten | `yes`, `no`. Standard: `yes` |
| `Warranty` | Zahlungsart nur Käufern mit einer dieser Berechtigungs-IDs anbieten | kommaseparierte Liste |
| `InfoScore-Allow` | Infoscore-Bonitätsprüfung für diese Zahlungsart verwenden | `yes`, `no`. Standard: `no` |
| `CreditPass-Allow` | creditPass-Bonitätsprüfung für diese Zahlungsart verwenden | `yes`, `no`. Standard: `no` |
| `EmailAddress` | abweichender Empfänger der Bestellbenachrichtigung an den Verkäufer | E-Mail-Adresse |

### Verfügbarkeit nach Warenkorbinhalt

| Parameter | Zahlungsart wird nicht angeboten, wenn | Werte |
| - | - | - |
| `DenyForDownload` | mindestens ein Download-Produkt im Warenkorb liegt | `yes`, `no`. Standard: `no` |
| `DenyWishlist` | mindestens ein Produkt von einer Wunschliste im Warenkorb liegt | `yes`, `no`. Standard: `no` |
| `DenyForInventoryState` | mindestens ein Produkt mit diesem Lagerbestand im Warenkorb liegt | `green`, `yellow`, `red`, kommasepariert |
| `HideZeroTotal-Allow` | die Gesamtsumme null ist | `yes`, `no`. Standard: `no` |
| `DenyDifferentDeliveryAddress` | eine abweichende Lieferadresse angegeben wurde | `yes`, `no`. Standard: `no` |
| `DenyDifferentDeliveryAddressForNewUser` | ein Neukunde eine abweichende Lieferadresse angegeben hat | `yes`, `no`. Standard: `no` |

| Parameter | Zahlungsart wird angeboten, wenn | Werte |
| - | - | - |
| `InstantVoucherProducts-Allow` | mindestens ein Kaufgutschein im Warenkorb liegt | `yes`, `no`. Standard: `no` |
| `eBooks-Allow` | mindestens ein eBook im Warenkorb liegt | `yes`, `no`. Standard: `no` |

Er ist in dieser Migration ergänzt worden.

### Verfügbarkeit nach Versandart

| Parameter | Zweck | Werte |
| - | - | - |
| `DelivererID-List` | Liste der Versandarten, bei denen diese Zahlungsart angeboten wird | IDs aus den `+Deliverer`-Abschnitten |

Referenz: [Abschnitt +Deliverer](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/versand-und-lieferung.md#deliverer)

### Zusatzeingaben zur Zahlungsart

| Parameter | Zweck | Werte |
| - | - | - |
| `InputSuffix1` bis `InputSuffix3` | Bezeichnung eines zusätzlichen Eingabefelds zur Zahlungsart | Text |
| `*InputSuffix1` bis `*InputSuffix3` | dasselbe, das Feld ist dann ein Pflichtfeld | Text |

Der führende Stern ist Teil des Parameternamens. Der Kernel sucht je Nummer zuerst nach der Variante mit Stern und nur, wenn diese fehlt, nach der Variante ohne. Steht beides in der Konfiguration, gewinnt die Variante mit Stern und das Feld ist ein Pflichtfeld.

Für umfangreichere Zusatzeingaben mit Auswahllisten, Länderabhängigkeit und Pflichtfeldmeldung verwenden Sie stattdessen die Unterabschnitte `+CountryRule`.

### Abhängigkeiten per ID

| Parameter | Zweck |
| - | - |
| `+UsePaymentEnvironmentDependency-ID` | verknüpft die Zahlungsart mit einer Regel aus `PaymentEnvironmentDependencies-Definitions` |
| `+UseProductDependency-ID` | verknüpft die Zahlungsart mit einer Regel aus `PaymentProductDependencies-Definitions` |

### Anzeige als deaktiviert

| Parameter | Zweck | Werte |
| - | - | - |
| `ShowDisabled-Allow` | nicht verfügbare Zahlungsart ausgegraut anzeigen | `never`, `always` oder Liste von Ablehnungsgründen. Standard: `never` |

Der Kernel wertet diesen Parameter in drei Stufen aus. Ein leerer Wert und `never` schalten die Anzeige aus. `always` schaltet sie immer ein. **Jeder andere Wert wird als kommaseparierte Liste von Ablehnungsgründen gelesen**, auch ein Tippfehler. Wer beispielsweise `allways` schreibt, erhält keine Fehlermeldung, sondern eine Liste mit dem einen unbekannten Eintrag `allways`, die auf keinen Ablehnungsgrund zutrifft.

## `ShowDisabled-Txt`

Dieser Unterabschnitt eines `PaymentXXX-Txt`-Abschnitts enthält die Hinweistexte, die bei einer ausgegrauten Zahlungsart erscheinen. Je Ablehnungsgrund lässt sich ein eigener Text hinterlegen, zusätzlich ein Text unter dem Schlüssel `default` für alle Gründe ohne eigenen Text.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentXXX-Txt>
   ...
   ShowDisabled-Allow = 1,2,3
   <ShowDisabled-Txt>
      1       = Diese Zahlungsart ist für Download-Produkte nicht möglich.
      2       = Diese Zahlungsart steht für Ihre Bestellung nicht zur Verfügung.
      3       = Diese Zahlungsart steht für Ihre Bestellung nicht zur Verfügung.
      default = Diese Zahlungsart steht leider nicht zur Verfügung.
   </ShowDisabled-Txt>
   ...
</PaymentXXX-Txt>
```

Einen gleichnamigen Unterabschnitt gibt es auch für Versandarten, dort innerhalb von `DelivererShowDisabled-Definitions`.

### Ablehnungsgründe

| Nummer | Grund |
| - | - |
| 1 | Download-Produkt im Warenkorb, Zahlungsart dafür nicht erlaubt |
| 2 | Infoscore-Prüfung negativ |
| 3 | creditPass-Prüfung negativ |
| 4 | Rechnungslandabhängigkeit nicht erfüllt, siehe `BillCountry-Rule` und `BillCountry-List` |
| 5 | Lieferlandabhängigkeit nicht erfüllt, siehe `DeliveryCountry-Rule` und `DeliveryCountry-List` |
| 6 | Mindestbestellwert als Warenwert nicht erreicht, siehe `MinOrder-Value` |
| 7 | Maximalbestellwert als Warenwert überschritten, siehe `MaxOrder-Value` |
| 8 | für Neukunden nicht verfügbar, siehe `NewUser-Allow` |
| 9 | Kunde ist der Zahlungsart nicht zugewiesen, siehe `Warranty` |
| 10 | Wunschlistenbestellung, Zahlungsart dafür nicht zulässig, siehe `DenyWishlist` |
| 11 | Zahlungsart aufgrund des Lieferstatus einiger Produkte nicht verfügbar |
| 12 | Gesamtsumme ist null, siehe `HideZeroTotal-Allow` |
| 13 | Berechtigung nicht vorhanden |
| 14 | Mindestbestellwert als Gesamtsumme nicht erreicht, siehe `MinTotal-Value` |
| 15 | Maximalbestellwert als Gesamtsumme überschritten, siehe `MaxTotal-Value` |
| 16 | Mindestgewicht nicht erreicht, siehe `MinWeight-Value` |
| 17 | Maximalgewicht überschritten, siehe `MaxWeight-Value` |
| 18 | mindestens ein Produkt im Warenkorb ist mit dieser Zahlungsart nicht bestellbar |
| 19 | Adressfilter greift, siehe Unterabschnitt `AddressFilter` |
| 20 | eBooks im Warenkorb, Zahlungsart dafür nicht verfügbar |
| 21 | abweichende Lieferadresse, Zahlungsart dafür nicht erlaubt, siehe `DenyDifferentDeliveryAddress` |
| 22 | Kaufgutschein zum Ausdrucken im Warenkorb, siehe `InstantVoucherProducts-Allow` |
| 23 | Zahlungsart Paymorrow final abgelehnt, für die Sitzung deaktiviert |
| 24 | Neukunde mit abweichender Lieferadresse, siehe `DenyDifferentDeliveryAddressForNewUser` |
| 25 | Fehler bei Rechnung mit Paymorrow, beispielsweise fehlende Rechtsform |
| 26 | Fehler bei Lastschrift mit Paymorrow, beispielsweise fehlende Rechtsform |
| 27 | easyCredit-Ratenkauf steht nicht zur Verfügung |
| 28 | Zahlungsart steht Gastbestellern nicht zur Verfügung, siehe `GuestOrder-Allow` |
| 29 | Zahlungsart steht für dieses Endgerät nicht zur Verfügung, siehe `PaymentEnvironmentDependencies-Definitions` |
| 30 | Zahlungsart steht für diese Produkte nicht zur Verfügung, siehe `PaymentProductDependencies-Definitions` |

## `AddressFilter`

Mit diesem Unterabschnitt machen Sie die Zahlungsart von einer konkreten Eingabe in der **Rechnungsadresse** abhängig. Typischer Einsatz ist ein freies Adressfeld, in dem beispielsweise eine Kundengruppe oder ein Vertriebskanal steht.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentXXX-Txt>
   ...
   <AddressFilter>
      Allow              = yes
      TechnicalFieldName = Suffix12
      Rule               = Allow
      Values-List        = B2B,Grosskunde
      Country-List       = DEU,AUT
   </AddressFilter>
   ...
</PaymentXXX-Txt>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Adressfilter verwenden | `yes`, `no`. Standard: `no` |
| `TechnicalFieldName` | technischer Feldname aus `AddressFields-Txt`. Nur Felder der Rechnungsadresse | beispielsweise `Suffix12` |
| `Rule` | Zahlungsart bei Übereinstimmung anbieten oder ausschließen | `Allow`, `Deny` |
| `Values-List` | Eingaben, auf die die Regel zutrifft. `*` ist erlaubt | kommaseparierte Liste, maximal 255 Zeichen |
| `Country-List` | optional. Filter nur anwenden, wenn das Rechnungsland in der Liste steht | kommaseparierte Ländercodes |

> [!WARNING]
>
> Der Standardwert von `Rule` ist **`Allow`**, nicht `Deny`. Der Kernel setzt `Allow` als Ausgangswert und schaltet nur dann auf `Deny` um, wenn exakt dieser Wert in der Konfiguration steht. Das ist in dieser Migration korrigiert worden. Wer sich auf den alten Standard verlassen hat, erhält genau das umgekehrte Verhalten.

Der Filter schaltet sich selbst ab, wenn `TechnicalFieldName` leer ist oder `Values-List` leer ist. In beiden Fällen bleibt die Zahlungsart verfügbar, ohne dass eine Meldung erscheint.

Hat der Käufer das Feld nicht ausgefüllt, greift der Filter ebenfalls nicht. Soll der Filter immer greifen, muss das Adressfeld ein Pflichtfeld sein.

Der Abschnitt `AddressFilter` darf **mehrfach** innerhalb eines `PaymentXXX-Txt`-Abschnitts stehen. Der Kernel liest die Blöcke nacheinander ein.

Referenz: [Abschnitt AddressFields-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#addressfields-txt)

## `+CountryRule`

Mit diesen Unterabschnitten fragen Sie zusätzliche Informationen zu einer Zahlungsart ab, beispielsweise eine Telefonnummer für den Clearing-Dienstleister oder eine Zustimmungs-Checkbox. Je `PaymentXXX-Txt`-Abschnitt sind bis zu zehn `+CountryRule`-Abschnitte möglich. Die Reihenfolge in der Konfiguration bestimmt die Reihenfolge im Shop.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentXXX-Txt>
   ...
   <+CountryRule>
      ID                          = kundengruppe
      FieldDescr-Txt              = Ihre Kundengruppe
      Type                        = listbox
      CountryList-ISO             = DEU,AUT
      UseAddressInput             = customer
      UserDependency              = company
      Required                    = yes
      RequiredErrorMessage-Txt    = Bitte wählen Sie Ihre Kundengruppe aus.
      MaxLength                   = 64
      HideInReadableOrder-Allow   = no
      SaveInputForNextOrder-Allow = yes
      <+listentry>
         Entry-Txt = Bitte wählen Sie
      </+listentry>
      <+listentry>
         Entry-Txt = Handel
         ID        = 100
      </+listentry>
   </+CountryRule>
</PaymentXXX-Txt>
```

> [!WARNING]
>
> Wenn Sie Zusatzinformationen zur Zahlungsart abfragen, muss im Abschnitt `NotifyMessages-Txt` die Fehlermeldung `PaymentInputSuffix` hinterlegt sein. Fehlt sie, bleibt die Pflichtfeldprüfung ohne sichtbare Rückmeldung.

### Parameter

| Parameter | Zweck | Werte |
| - | - | - |
| `ID` | technische ID der Zusatzinformation, maximal 64 Zeichen | siehe unten zu reservierten IDs |
| `FieldDescr-Txt` | Text vor dem Eingabefeld, zugleich Bezeichnung in der lesbaren Bestellung | Text, maximal 4096 Zeichen |
| `Type` | Art des Eingabefelds | `input`, `listbox`, `dateofbirth`, `checkbox`. Standard: `input` |
| `MaxLength` | maximale Länge der Eingabe | Zahl bis 128 |
| `Required` | Pflichtfeld | `yes`, `no`. Standard: `no` |
| `RequiredErrorMessage-Txt` | Fehlermeldung bei leerem Pflichtfeld | Text |
| `CountryList-ISO` | Länder, für die die Zusatzinformation abgefragt wird | kommaseparierte 3-stellige ISO-Codes oder `*` |
| `UseAddressInput` | welches Land für die Prüfung herangezogen wird | `customer`, `delivery`, `onlydelivery`. Standard: `customer` |
| `UserDependency` | Abhängigkeit vom Feld Firmenname | `no`, `private`, `company`. Standard: `no` |
| `HideInReadableOrder-Allow` | Eingabe aus der lesbaren Bestellung heraushalten | `yes`, `no`. Standard: `no` |
| `SaveInputForNextOrder-Allow` | Eingabe im Kundenkonto für die nächste Bestellung speichern | `yes`, `no`. Standard: `yes` |

`UseAddressInput` bestimmt, welche Adresse das Land liefert. `customer` nimmt die Rechnungsadresse. `delivery` nimmt die Lieferadresse, sofern eine gewählt wurde, sonst die Rechnungsadresse. `onlydelivery` nimmt ausschließlich die Lieferadresse und fragt gar nicht ab, wenn keine abweichende Lieferadresse gewählt wurde.

`UserDependency` bezieht sich auf das Feld Firmenname. `company` fragt nur ab, wenn ein Firmenname eingetragen ist. `private` fragt nur ab, wenn keiner eingetragen ist. Jeder andere Wert als `private` und `company` wirkt wie `no`.

> [!NOTE]
>
> Mehrere Eigenheiten der Auswertung sind dabei zu beachten.
>
> `MaxLength` wird bei einem Wert kleiner oder gleich null sowie bei einem Wert über dem internen Maximum stillschweigend auf dieses Maximum gesetzt. Es gibt keine Fehlermeldung.
>
> `Type = checkbox` setzt `MaxLength` fest auf 10, weil als Wert nur `checked` oder nichts gespeichert wird.
>
> `Type = dateofbirth` setzt `UseAddressInput` fest auf `customer`. Die Eingabe wird zusätzlich in den Kundendaten gespeichert.
>
> Jeder Wert von `Type`, der nicht `listbox`, `dateofbirth` oder `checkbox` lautet, ergibt `input`.

Zu jedem `Type` gehört eine technische ID, die im Template über die `PAY-`Tags abgefragt werden kann.

| Wert | technische ID |
| - | - |
| `listbox` | 0 |
| `input` | 1 |
| `dateofbirth` | 2 |
| `checkbox` | 3 |

### `+listentry`

Die Einträge einer Auswahlliste legen Sie in Unterabschnitten `+listentry` fest. Es sind bis zu 100 Einträge möglich. Der Abschnitt wird nur benötigt, wenn `Type = listbox` gesetzt ist.

| Parameter | Zweck | Werte |
| - | - | - |
| `Entry-Txt` | angezeigter Text, erscheint auch in der lesbaren Bestellung | Text, maximal 128 Zeichen |
| `ID` | technischer Wert, erscheint in der technischen Bestellung | Text, maximal 64 Zeichen |

Lassen Sie `ID` bei einem Eintrag weg, erhalten Sie eine Auswahlmöglichkeit ohne technischen Wert, beispielsweise für den Eintrag "Bitte wählen Sie".

> [!WARNING]
>
> Der Wert von `ID` wird an das externe System übermittelt, wenn die Zusatzinformation für ein Zahlungs- oder Clearingverfahren verwendet wird.

### Reservierte IDs

Alle IDs mit dem Präfix `ws_` sind reserviert. Zusatzinformationen mit diesen IDs werden von bestimmten Clearing- und Bonitätsverfahren ausgewertet. Für sie überschreibt der Kernel einen Teil Ihrer Konfiguration, damit das Verfahren die Daten in der erwarteten Form erhält.

| ID | Zweck | erzwungene Einstellungen |
| - | - | - |
| `ws_clearing_easycredit` | Checkbox für Zustimmung und Datenübermittlung beim easyCredit-Ratenkauf | keine |
| `ws_clearing_computop_paypal_state` | Parameter "State" bei PayPal über Computop | `UseAddressInput = delivery` |
| `ws_clearing_computop_cc_state` | Parameter "State" bei Kreditkarte über Computop, nötig für 3-D Secure 2.0 | `UseAddressInput = delivery` |
| `ws_clearing_paypal_state` | Parameter "State" bei PayPal in der Direktanbindung | `UseAddressInput = delivery` |
| `ws_clearing_computop_clickandbuy_customer_state` | "State" der Rechnungsadresse bei ClickAndBuy über Computop | `UseAddressInput = customer` |
| `ws_clearing_computop_clickandbuy_delivery_state` | "State" der Lieferadresse bei ClickAndBuy über Computop | `UseAddressInput = onlydelivery` |
| `ws_clearing_computop_klarna_gender` | Geschlecht bei Klarna über Computop | `UseAddressInput = customer`, `CountryList-ISO = *`, `UserDependency = private`, `Required = yes` |
| `ws_clearing_computop_klarna_ssn` | Sozialversicherungsnummer bei Klarna über Computop | `UseAddressInput = customer` |
| `ws_clearing_computop_klarna_salary` | Einkommensangabe bei Klarna über Computop | `UseAddressInput = customer` |
| `ws_clearing_computop_klarna_mobilenr` | Mobilnummer bei Klarna über Computop | `UseAddressInput = customer`, `CountryList-ISO = *`, `Required = yes` |
| `ws_clearing_computop_klarna_reference` | Referenz bei Klarna über Computop | `UseAddressInput = customer`, `CountryList-ISO = *`, `UserDependency = company`, `Required = yes` |
| `ws_clearing_computop_potfinance_accowner` | Kontoinhaber bei PostFinance über Computop | `UseAddressInput = customer`, `Type = input`, `CountryList-ISO = *`, `Required = yes` |
| `ws_clearing_paymorrow_phone` | Parameter "Phone" bei Paymorrow | `UseAddressInput = customer`, `CountryList-ISO = *`, `Required = yes`, nur ohne vorhandene Telefonnummer |
| `ws_clearing_ppc_invoice_phone` | Telefonnummer bei Kauf auf Rechnung über RatePay und PayPal Checkout | `UseAddressInput = customer`, `CountryList-ISO = *`, `Required = yes`, nur ohne vorhandene Telefonnummer |

> [!NOTE]
>
> Die Tabelle ist in dieser Migration anhand des Kernels vervollständigt worden.
>
> Die beiden Einträge mit dem Zusatz "nur ohne vorhandene Telefonnummer" werden gar nicht abgefragt, wenn in der Rechnungsadresse bereits eine Telefon- oder Mobilnummer steht. Das Pflichtfeld entfällt dann.

## `PaymentEnvironmentDependencies-Definitions`

Hier legen Sie fest, dass eine Zahlungsart nur auf bestimmten Endgeräten angeboten wird. Grundlage ist der User-Agent, den der Browser des Käufers übermittelt. Die Zuordnung zur Zahlungsart erfolgt über den Parameter `+UsePaymentEnvironmentDependency-ID` im `PaymentXXX-Txt`-Abschnitt.

Der Abschnitt darf nur **einmal** in der `shop.config` stehen und braucht mindestens einen Unterabschnitt `+EnvironmentDependency`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentEnvironmentDependencies-Definitions>
   <+EnvironmentDependency>
      ID               = useapple
      ShowDisabled-Txt = Diese Zahlungsart steht auf Ihrem Gerät nicht zur Verfügung.
      <+DependencyGroup>
         <+Dependency>
            Field = useragent
            Type  = contains
            Value = Safari
         </+Dependency>
      </+DependencyGroup>
   </+EnvironmentDependency>
</PaymentEnvironmentDependencies-Definitions>
```

> [!WARNING]
>
> Die Bedingungen in diesem Abschnitt machen eine Zahlungsart **verfügbar**, wenn sie erfüllt sind. Der umgekehrte Fall lässt sich nicht konfigurieren. Eine Bedingung, die zutrifft, kann eine Zahlungsart nicht ausschließen.

| Parameter | Zweck | Werte |
| - | - | - |
| `+EnvironmentDependency` | eigenständiger Unterabschnitt, nicht mit anderen verknüpft | |
| `ID` | eindeutige ID für die Zuordnung zur Zahlungsart | beispielsweise `useapple` |
| `ShowDisabled-Txt` | Text bei ausgegrauter Darstellung | Text |
| `+DependencyGroup` | mehrere dieser Abschnitte sind **oder**-verknüpft | |
| `+Dependency` | mehrere dieser Abschnitte innerhalb einer Gruppe sind **und**-verknüpft | |
| `Field` | technischer Feldname des geprüften Werts | `useragent` |
| `Type` | Art der Prüfung | siehe unten |
| `Value` | geprüfter Wert, nur bei `value`, `contains`, `notcontains`, `greater` und `smaller` relevant | Text |

| `Type` | Bedingung ist erfüllt, wenn |
| - | - |
| `empty` | das Feld leer ist |
| `filled` | das Feld gefüllt ist |
| `value` | der Feldwert dem Wert in `Value` entspricht |
| `contains` | der Wert aus `Value` Teil des Feldes ist |
| `notcontains` | der Wert aus `Value` nicht Teil des Feldes ist |
| `greater` | der Feldwert größer als der Wert in `Value` ist |
| `smaller` | der Feldwert kleiner als der Wert in `Value` ist |

Beachten Sie die Verschachtelung. `+EnvironmentDependency` enthält `+DependencyGroup`, diese enthält `+Dependency`.

## `PaymentProductDependencies-Definitions`

Hier legen Sie fest, dass eine Zahlungsart vom Produktindex, von der Produktnummer oder von einem freien Produktdatenfeld abhängt. Die Zuordnung erfolgt über `+UseProductDependency-ID` im `PaymentXXX-Txt`-Abschnitt.

Auch dieser Abschnitt darf nur **einmal** in der `shop.config` stehen und braucht mindestens einen Unterabschnitt `+ProductDependency`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentProductDependencies-Definitions>
   <+ProductDependency>
      ProductDependency-ID = keine_sperrgut
      ShowDisabled-Txt     = Für Speditionsware steht diese Zahlungsart nicht zur Verfügung.
      <+DependencyGroup>
         <+Dependency>
            <+Condition>
               Field          = AF-Versandart
               Type           = notvalue
               Value          = Spedition
               SetBehavior    = Single
               BasketBehavior = match-all
            </+Condition>
         </+Dependency>
      </+DependencyGroup>
   </+ProductDependency>
</PaymentProductDependencies-Definitions>
```

> [!WARNING]
>
> Wie beim Abschnitt für Endgeräte machen die Bedingungen eine Zahlungsart **verfügbar**, wenn sie erfüllt sind. Ein Ausschluss lässt sich nicht formulieren. Wer eine Zahlungsart für bestimmte Produkte ausschließen möchte, formuliert die Bedingung deshalb negativ, beispielsweise mit `notvalue` oder `notinlist`.

| Parameter | Zweck | Werte |
| - | - | - |
| `+ProductDependency` | eigenständiger Unterabschnitt, nicht mit anderen verknüpft | |
| `ProductDependency-ID` | eindeutige ID für die Zuordnung zur Zahlungsart | alphanumerisch, Binde- und Unterstrich |
| `ShowDisabled-Txt` | Text bei ausgegrauter Darstellung. **Hat Vorrang** vor dem Text aus dem `ShowDisabled-Txt`-Unterabschnitt der Zahlungsart | Text |
| `+DependencyGroup` | mehrere dieser Abschnitte sind **oder**-verknüpft | |
| `+Dependency` | mehrere dieser Abschnitte innerhalb einer Gruppe sind **und**-verknüpft | |
| `+Condition` | die eigentliche Bedingung | |
| `Field` | geprüftes Feld | `ProdIndex`, `ProdNumber` oder `AF-<freies Produktfeld>` |
| `Type` | Art der Prüfung | siehe unten |
| `Value` | geprüfter Wert, nicht relevant bei `Type = empty` | Text |
| `SetBehavior` | Behandlung von Set-Produkten | `asUnit`, `Single`. Standard: `Single` |
| `BasketBehavior` | wie viele Produkte im Warenkorb die Bedingung erfüllen müssen | `match-all`, `match-once`. Standard: `match-all` |

Freie Produktfelder tragen das Präfix `AF-`, beispielsweise `AF-DeliveryTime`. Sie müssen zusätzlich im Abschnitt `AdditionalProductFieldsInBasket` für den Warenkorb aktiviert sein.

| `Type` | Bedingung ist erfüllt, wenn |
| - | - |
| `empty` | das Produktdatenfeld leer ist |
| `inlist` | der Wert aus `Value` in der Liste von `Field` enthalten ist |
| `notinlist` | der Wert aus `Value` nicht in der Liste von `Field` enthalten ist |
| `value` | der Feldwert genau dem Wert in `Value` entspricht |
| `notvalue` | der Feldwert nicht dem Wert in `Value` entspricht |
| `prefix` | der Feldwert mit dem Wert in `Value` beginnt |
| `notprefix` | der Feldwert nicht mit dem Wert in `Value` beginnt |
| `includedinlist` | der Wert aus `Value` in der Werteliste des Produktdatenfelds steht |
| `notincludedinlist` | der Wert aus `Value` nicht in der Werteliste des Produktdatenfelds steht |
| `greater` | der Feldwert größer als der Wert in `Value` ist |
| `smaller` | der Feldwert kleiner als der Wert in `Value` ist |
| `matchsimplewildcard` | der Feldwert auf das Muster in `Value` passt |
| `notmatchsimplewildcard` | der Feldwert nicht auf das Muster in `Value` passt |

Bei `greater` und `smaller` werden beide Werte in ganze Zahlen umgewandelt. Ein Wert, der sich nicht umwandeln lässt, wird als 0 gelesen.

Bei `matchsimplewildcard` und `notmatchsimplewildcard` steht `?` für genau ein beliebiges Zeichen an dieser Position und `*` für beliebig viele Zeichen. Der Stern darf nur am Ende stehen.

Im Hinweis zur Verschachtelung stand `<+ProducttDependency>` mit doppeltem t. Beim Parameter `BasketBehavior` stand als zulässiger Wert `matche-once` statt `match-once`.

## Die einzelnen Zahlungsarten

Alle folgenden Abschnitte verstehen zusätzlich sämtliche Standardparameter von oben. Aufgeführt sind nur die jeweils eigenen Parameter.

### Ohne eigene Parameter

Diese Abschnitte kommen mit den Standardparametern aus.

| Abschnitt | Zahlungsart |
| - | - |
| `PaymentBill-Txt` | Rechnung. Je nach Provider kommen Parameter in gesonderten Abschnitten hinzu |
| `PaymentCashOnDelivery-Txt` | Nachnahme |
| `PaymentAccount-Txt` | Kundenkonto |
| `PaymentIDeal-Txt` | iDEAL |
| `PaymentOnlineTransfer-Txt` | giropay Online-Überweisung |
| `PaymentTWINT-Txt` | TWINT. Üblicherweise mit `BillCountry-List = CHE` eingeschränkt |
| `PaymentUserDef1-Txt` bis `PaymentUserDef5-Txt` | frei definierbare Zahlungsarten |

### `PaymentPrepayment-Txt`

Vorauskasse. Die drei Parameter füllen die Anzeige der Bankverbindung.

| Parameter | Zweck |
| - | - |
| `TableHeader` | Titel der HTML-Tabelle, beispielsweise `Bankverbindung` |
| `BankInfo1` | Text für das Element "Bankinstitut" |
| `BankInfo2` | Text für das Element "Konto-Nr." |

### `PaymentCreditCard-Txt`

Kreditkarte. Die angebotenen Kartentypen legen Sie zusätzlich in den Abschnitten `Card1` bis `Card5` fest.

| Parameter | Zweck | Werte |
| - | - | - |
| `Holder` | Bezeichnung für das Feld "Kreditkarteninhaber" | Text |
| `Number` | Bezeichnung für das Feld "Kreditkartennummer" | Text |
| `Valid` | Bezeichnung für das Feld "Gültigkeit" | Text |
| `UserDescr` | frei wählbarer Name der Karte im Kundenkonto | Text |
| `SelectCCNoSaveEntry` | Eintrag für "einmalig eingeben, nicht speichern" | Text |
| `SelectCCEntryPrefix` | Eintrag für gespeicherte Kreditkartendaten | Text |
| `SelectCCSeparator` | optische Trennung in der Auswahlbox | Text |
| `ShowCardDataAfterOnlineClearing` | Anzeige der Kartendaten in der Bestellung | `no`, `protected`, `unsafe`. Standard: `no` |
| `CtopHostedCbDefChecked` | Checkbox zum Speichern der Kartendaten im Computop-Template vorbelegen | `yes`, `no` |
| `CtopHostedCustomField5` bis `CtopHostedCustomField10` | CustomFields an das Computop Paygate | Text mit Tags |
| `ComputopChDesc` | Text auf der Kreditkartenabrechnung | maximal 30 Zeichen |
| `ComputopClearingLinkValidForSeconds` | Gültigkeitsdauer des Clearing-Links an Computop | Sekunden. Standard: 600 |
| `DummyItemAddition` | Dummyprodukt für Zusatzkosten bei Anbindung über PayPal Checkout | Produktname |
| `LanguageCode` | Sprachcode nach BCP 47 bei Anbindung über PayPal Checkout | beispielsweise `de-DE` |

> [!WARNING]
>
> `ShowCardDataAfterOnlineClearing` entscheidet darüber, ob Kreditkartendaten in der Bestellung sichtbar werden.
>
> `no` zeigt sie nicht an und ist die empfohlene Einstellung.
>
> `protected` zeigt sie ausschließlich im verschlüsselten Online-Servicebereich.
>
> `unsafe` ist ausschließlich für Pseudo-Kreditkartennummern gedacht, die der Payment-Dienstleister erzeugt und die ohne dessen Anbindung wertlos sind. Diese Einstellung darf nur in begründeten Ausnahmefällen und nach Abstimmung mit der WEBSALE AG aktiviert werden.

Der Inhalt der CustomFields wird nach dem Parsen auf 50 Zeichen gekürzt und anschließend UTF-8-kodiert.

### `PaymentDebitNote-Txt`

Lastschrift. Dieser Abschnitt deckt drei Varianten ab. Die klassische Lastschrift, die Lastschrift mit Paymorrow und die Lastschrift über PayPal Checkout. Entsprechend sind nicht alle Parameter für jede Anbindung relevant.

#### Bezeichnungen der Eingabefelder

| Parameter | Feld |
| - | - |
| `Owner` | Kontoinhaber |
| `IBAN` | IBAN |
| `BIC` | BIC |
| `Bank` | Bankinstitut |
| `Country` | Land |
| `AccountNbr` | Kontonummer. Nicht nötig bei `SEPAMode = on` |
| `BankRoutingNbr` | Bankleitzahl. Nicht nötig bei `SEPAMode = on` |
| `UserDescr` | individuelle Bezeichnung der Bankverbindung durch den Kunden |
| `AccountDataNotProofed` | Fehlermeldung, wenn die Bankverbindung nicht geprüft wurde |

#### Pflichtfelder und Sichtbarkeit

| Parameter | Zweck | Werte |
| - | - | - |
| `BankRequired` | Name der Bank ist Pflichtfeld | `yes`, `no`. Standard: `yes` |
| `UserDescrRequired` | individuelle Bezeichnung ist Pflichtfeld | `yes`, `no`. Standard: `no` |
| `BICRequired` | BIC ist grundsätzlich Pflichtfeld | `yes`, `no`. Standard: `no` |
| `BICRequired-List` | Länderkürzel für die länderabhängige Pflicht. Greift nur bei `BICRequired = no` | kommaseparierte Liste |
| `BICRequired-ListType` | Pflicht für die genannten Länder oder für alle anderen | `inList`, `notInList`. Standard: `inList` |
| `BICVisible-List` | Länderkürzel für die Sichtbarkeit des BIC-Felds | kommaseparierte Liste, 2-stellig nach ISO 3166-2 |
| `BICVisible-ListType` | Anzeige für die genannten Länder oder für alle anderen | `inList`, `notInList`. Standard: `inList` |
| `BICVisibleEmptyIBAN` | eingegebene BIC löschen, wenn das Feld durch die Länderauswahl ausgeblendet wird | `yes`, `no`. Standard: `yes` |

#### SEPA

| Parameter | Zweck | Werte |
| - | - | - |
| `SEPAMode` | SEPA-Verfahren schalten | `on`, `off`, `test`. Standard: `off` |
| `SEPACountry-List` | Länder für die SEPA-Abfrage | 2-stellig nach ISO 3166-2 |
| `SEPACountry-Rule` | Regel zur Länderliste | `AllowCountries`, `DenyCountries`. Standard: `DenyCountries` |
| `SEPACreditorIdentifier` | Gläubiger-Identifikationsnummer | Text |
| `SEPAMandateGeneratorPrefix` | Präfix der automatisch erzeugten Mandatsreferenz | beispielsweise `DEU-` |
| `SEPAMandateGeneratorOffset` | Startwert für den numerischen Teil der Mandatsreferenz | beispielsweise `320001` |

Mit `SEPAMandateGeneratorPrefix = DEU-` und `SEPAMandateGeneratorOffset = 320001` lauten die ersten erzeugten Mandatsreferenzen `DEU-320001`, `DEU-320002` und so weiter.

Dem Offset war `DEU-` zugeordnet, dem Präfix `320001`.

#### Elektronische Lastschrift

| Parameter | Zweck | Werte |
| - | - | - |
| `CapturingDays` | nur bei elektronischer Lastschrift. Nähere Auskunft über die WEBSALE AG | 0 bis 6. Standard: 0 |
| `CapturingMode` | nur bei elektronischer Lastschrift | `auto`, `manual`. Standard: `auto` |

#### Auswahlbox gespeicherter Bankverbindungen

| Parameter | Zweck |
| - | - |
| `SelectAccountNoSaveEntry` | erster Eintrag, mit dem die Daten nicht gespeichert werden |
| `SelectAccountEntryPrefix` | Eintrag für eine gespeicherte Bankverbindung |
| `SelectAccountSeparator` | optische Trennung in der Auswahlbox |

#### Paymorrow

| Parameter | Zweck | Werte |
| - | - | - |
| `B2BMode` | bei Firmenkunden zusätzliche Felder abfragen | `standard`, `advanced`. Standard: `standard` |
| `PaymorrowRequestLanguageCode` | Sprache der Paymorrow-Inhalte | `de`, `en`. Standard: `de` |
| `PaymorrowExternalNotifyMessagePrefix` | HTML vor der externen Paymorrow-Fehlermeldung | beispielsweise `<div class="box_error">` |
| `PaymorrowExternalNotifyMessageSuffix` | HTML nach der externen Paymorrow-Fehlermeldung | beispielsweise `</div>` |
| `PaymorrowLineItemDefaultName` | Ersatzname, wenn ein Produkt keinen Namen hat | Text |
| `PaymorrowLineItemAdditionName` | Dummyprodukt für Zusatzkosten | Text |
| `PaymorrowLineItemAdditionNumber` | Pseudo-Produktnummer dazu | Zahl |
| `PaymorrowLineItemPaymentCostName` | Dummyprodukt für Zahlungskosten | Text |
| `PaymorrowLineItemPaymentCostNumber` | Pseudo-Produktnummer dazu | Zahl |
| `PaymorrowLineItemReductionName` | Dummyprodukt für Rabatte | Text |
| `PaymorrowLineItemReductionNumber` | Pseudo-Produktnummer dazu | Zahl |
| `PaymorrowLineItemShippingName` | Dummyprodukt für Versandkosten | Text |
| `PaymorrowLineItemShippingNumber` | Pseudo-Produktnummer dazu | Zahl |
| `SalutationCodeFemale-List` | weibliche Anrede-Codes aus der Anreden-Konfiguration | kommaseparierte Liste |
| `SalutationCodeMale-List` | männliche Anrede-Codes aus der Anreden-Konfiguration | kommaseparierte Liste |

Ein Produktname ist für Paymorrow zwingend. `PaymorrowLineItemDefaultName` verhindert, dass ein Produkt ohne Namen den Kauf blockiert. Die Pseudo-Produktnummern dürfen nicht aus dem Nummernkreis der im Shop angebotenen Produkte stammen und sind mit dem Händler abzustimmen.

Die externen Fehlermeldungen von Paymorrow werden über das Tag `MSG-PayDeliv_Notify` ausgegeben. Ohne Prefix und Suffix erscheinen sie ungestylt.

Die Anrede-Listen sorgen dafür, dass bei der Adressübergabe an Paymorrow die richtige Anrede vorbelegt wird.

### `PaymentDebitNote-Country`

Hält die Klartextnamen zu den Ländercodes der Lastschrift. Die Parameternamen sind die ISO-Codes selbst, zusätzlich ist `other` möglich.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentDebitNote-Country>
   DEU   = Deutschland
   AUT   = Österreich
   other = anderes Land
</PaymentDebitNote-Country>
```

### `PaymentPaymorrow-Txt`

Rechnung mit Paymorrow. Die Parameter `B2BMode`, `PaymorrowRequestLanguageCode`, die beiden Notify-Parameter, die acht LineItem-Parameter und die beiden Anrede-Listen entsprechen denen aus `PaymentDebitNote-Txt`. Zusätzlich gilt:

| Parameter | Zweck | Werte |
| - | - | - |
| `ExplicitAllowDifferentDeliveryAddress` | abweichende Lieferadresse zulassen | `yes`, `no`. Standard: `no` |

> [!WARNING]
>
> Für Paymorrow wird `DenyDifferentDeliveryAddress` standardmäßig auf `yes` gesetzt. `ExplicitAllowDifferentDeliveryAddress = yes` überschreibt das. Eine akzeptierte abweichende Lieferadresse muss vorab mit Paymorrow abgestimmt werden.

### `PaymentPaypal-Txt`

PayPal in der Direktanbindung, über Computop und als Express Checkout. Je nach Integration ist nur ein Teil der Parameter relevant.

| Parameter | Zweck | Werte |
| - | - | - |
| `CapturingMode` | bei PayPal über Computop. `auto` bucht sofort ab, `manual` reserviert nur | `auto`, `manual`. Standard: `auto` |
| `CompuTopTxType` | bei PayPal über Computop und `CapturingMode = manual` | `order`, `authorization`. Standard: `order` |
| `PaypalPaymentAction` | Zeitpunkt und Art des Zahlungseinzugs in der Direktanbindung | `sale`, `authorization`, `order`. Standard: `sale` |
| `InstantPaymentOnly-Allow` | nur Zahlungsmethoden mit sofortiger Abbuchung zulassen | `yes`, `no`. Standard: `yes` |
| `ExpressCheckout-Allow` | PayPal Express Checkout aktivieren | `yes`, `no`. Standard: `no` |
| `ExpressCheckoutMaxAmountAddition` | maximaler Aufschlag auf die Zwischensumme beim Express Checkout | Betrag mit Punkt als Dezimaltrenner |
| `ExpressCheckoutNoShipping` | Umgang mit der Lieferadresse auf den PayPal-Seiten | `0`, `1`, `2` |
| `LanguageCode` | Sprachcode für die PayPal-Zahlungsseite | zwei- oder fünfstellig nach PayPal-Vorgabe |
| `PassBasketToPayPal-ModeExpressCheckout` | Form der Warenkorbübergabe beim Express Checkout | siehe unten |
| `PassBasketToPayPal-ModeBasisCheckout` | Form der Warenkorbübergabe bei PayPal als Zahlungsart | siehe unten |
| `PassBasketToPayPal-DummyAddition` | Dummyprodukt für sonstige Kosten | Produktname |
| `PassBasketToPayPal-DummyReduction` | Dummyprodukt für sonstige Abschläge und Rabatte | Produktname |
| `PassToPaypalAsCustomParameter` | beliebiger Text im Feld CUSTOM, für die Suche in den PayPal-Transaktionen | maximal 256 alphanumerische Zeichen |
| `PayPalLogoImg` | Logo auf der PayPal-Checkout-Seite, Vorgabe 190 mal 60 Pixel | URL ab `https://` |
| `PayPalBrandName` | Firmenname auf der PayPal-Seite | maximal 127 Zeichen |
| `PayPalCartBorderColor` | Rahmenfarbe der PayPal-Seite | Hexadezimalwert, beispielsweise `4A3BB1` |
| `PaypalDenyPendingPayments-Allow` | Transaktionen im Status "pending" ablehnen | `yes`, `no`. Standard: `no` |
| `PaypalSendUserActionCommitToPayPal-Allow` | nur Direktanbindung. PayPal zeigt dann den Button "Bestellung abschließen" | `yes`, `no`. Standard: `no` |
| `InflateAuthorizationAmount` | Sicherheitsaufschlag bei Autorisierung wegen Rundungsdifferenzen | Betrag |

`ExpressCheckoutNoShipping` steuert die Lieferadresse. `0` zeigt sie auf den PayPal-Seiten an. `1` blendet alle Lieferadressfelder aus. `2` übernimmt die Adresse aus dem Kundenkonto des Shops, wenn der Käufer keine angibt.

Für die Warenkorbübergabe stehen drei Modi zur Verfügung. `AllEntriesAsSingleLineItem-TotalSum` übergibt die gesamte Bestellung als eine Position. `OneEntryPerLineItem-SubTotalSum` übergibt eine Position je Warenkorbeintrag ohne Auf- und Abschläge und ist nur beim Express Checkout möglich. `OneEntryPerLineItemWithDummies-TotalSum` übergibt eine Position je Warenkorbeintrag plus die Dummyprodukte. Standard ist in beiden Fällen `AllEntriesAsSingleLineItem-TotalSum`.

Sind `PassBasketToPayPal-DummyAddition` oder `PassBasketToPayPal-DummyReduction` leer, schaltet der Shop den Modus automatisch auf `AllEntriesAsSingleLineItem-TotalSum` zurück.

> [!WARNING]
>
> Bei `PaypalPaymentAction = order` und `PaypalPaymentAction = authorization` muss `InstantPaymentOnly-Allow = no` gesetzt sein.
>
> `InflateAuthorizationAmount` wird nur bei diesen beiden Werten ausgewertet. Bei `sale` bleibt der Parameter ohne Wirkung, weil kein Capture stattfindet. Negative Werte werden auf 0 gesetzt.

`PaypalPaymentAction` im Detail. `sale` bucht sofort ab. `authorization` autorisiert nur und prüft die Bonität bei PayPal, die Autorisierung ist maximal 29 Tage gültig. `order` holt lediglich die Zustimmung des Nutzers ein, ohne dass PayPal die Verfügbarkeit der Mittel prüft, und lässt sich länger als 29 Tage offenhalten.

Zeichen, die nicht alphanumerisch sind, werden bei `PassToPaypalAsCustomParameter` nicht an PayPal übergeben. Das betrifft auch Leerzeichen und Umlaute.

Wird kein Logo über `PayPalLogoImg` definiert, erscheint der unter `PayPalBrandName` eingetragene Firmenname. Fehlt auch dieser, verwendet PayPal den im Account hinterlegten Firmennamen.

### `PaymentPayPalPlus-Txt`

PayPal PLUS.

| Parameter | Zweck | Werte |
| - | - | - |
| `PassBasketToPayPal-DummyAddition` | Dummyprodukt für sonstige Kosten | Produktname |
| `PassBasketToPayPal-DummyReduction` | Dummyprodukt für sonstige Abschläge und Rabatte | Produktname |
| `PaypalDenyPendingPayments-Allow` | Zahlungen im Status "pending" ablehnen | `yes`, `no`. Standard: `no` |
| `ExperienceProfileID` | wird im Online-Servicebereich im Dienst "PaypalPlus Manager" angelegt | beispielsweise `XXXX-XXXX-XXXX-XXXX` |

Bei `PaypalDenyPendingPayments-Allow = no` muss der Händler im Nachgang prüfen, ob für eine Bestellung im Status "pending" die Zahlung erfolgt ist, bevor er sie bearbeitet.

### `PaymentPayPalCheckout-Txt`

PayPal über die Anbindung PayPal Checkout.

| Parameter | Zweck | Werte |
| - | - | - |
| `DummyItemAddition` | Dummyprodukt für sonstige Kosten | Produktname |
| `LanguageCode` | Sprachcode nach BCP 47 | beispielsweise `de-DE` |
| `ExpressCheckout-Allow` | Express Checkout aktivieren | `yes`, `no`. Standard: `no` |

### `PaymentPayPalCheckoutPayLater-Txt`

Pay Later über PayPal Checkout. Kennt `DummyItemAddition` und `LanguageCode` mit derselben Bedeutung wie oben.

### `PaymentPayPalInvoice-Txt`

Kauf auf Rechnung mit RatePay über PayPal Checkout. Alle fünf Parameter sind zwingend auszufüllen.

| Parameter | Zweck | Werte |
| - | - | - |
| `BrandName` | Firmenname, den RatePay in die E-Mail an den Käufer übernimmt | Text |
| `CustomerServiceInstruction` | Kontakt zum Kundenservice für dieselbe E-Mail | Text |
| `LogoImg` | URL des Logos für dieselbe E-Mail | URL ab `https://` |
| `DummyItemAddition` | Dummyprodukt für Zusatzkosten und Rundungsdifferenzen | Produktname |
| `LanguageCode` | Sprachcode nach BCP 47 | `de-DE` |

Kauf auf Rechnung über diese Anbindung steht derzeit nur in Deutschland zur Verfügung.

### Alternative Zahlungsmethoden über PayPal Checkout

Diese Abschnitte folgen alle demselben Muster und kennen `DummyItemAddition` sowie `LanguageCode`.

| Abschnitt | Zahlungsart | üblicher `LanguageCode` |
| - | - | - |
| `PaymentPayPalCheckoutAPM_BANCONTACT-Txt` | Bancontact | `nl-BE` |
| `PaymentPayPalCheckoutAPM_BLIK-Txt` | BLIK | `pl-PL` |
| `PaymentPayPalCheckoutAPM_EPS-Txt` | eps | `de-AT` |
| `PaymentPayPalCheckoutAPM_IDEAL-Txt` | iDEAL | `nl-NL` |
| `PaymentPayPalCheckoutAPM_MYBANK-Txt` | MyBank | `it-IT` |
| `PaymentPayPalCheckoutAPM_PRZELEWY24-Txt` | Przelewy24 | `pl-PL` |

Zwei Abschnitte bringen darüber hinaus eigene Parameter mit.

`PaymentPayPalCheckoutAPM_GOOGLEPAY-Txt` für Google Pay kennt zusätzlich `ExpressCheckout-Allow` mit den Werten `yes` und `no`, Standard `no`.

`PaymentPayPalCheckoutAPM_APPLEPAY-Txt` für Apple Pay kennt zusätzlich `ExpressCheckout-Allow`, `Brandname` für den Firmennamen auf der PayPal-Seite mit maximal 127 Zeichen sowie `ExpressCheckoutNoDeliveryMessage` mit den Werten `0`, `1` und `2` für den Umgang mit der Lieferadresse.

Der Beispielcode war mit `<PaymentPayPalCheckoutAPM_GOOGLEPAY-Txt>` überschrieben. In der Parametertabelle wurde der Parameter als `Brandname` eingeführt, im Beschreibungstext aber als `PayPalBrandName` bezeichnet. Der korrekte Parametername in diesem Abschnitt lautet `Brandname`.

### `PaymentApplePay-Txt` und `PaymentGooglePay-Txt`

Apple Pay und Google Pay in der Anbindung über Computop. Beide Abschnitte kennen dieselben drei Parameter.

| Parameter | Zweck | Werte |
| - | - | - |
| `ComputopClearingLinkValidForSeconds` | Gültigkeitsdauer des Clearing-Links an Computop | Sekunden. Standard: 600 |
| `ComputopChDesc` | Text auf der Kreditkartenabrechnung | maximal 30 Zeichen |
| `CtopHostedCustomField5` bis `CtopHostedCustomField10` | CustomFields an das Computop Paygate | Text mit Tags |

Ist das zugehörige Computop-Clearing nicht freigeschaltet, wird der gesamte Abschnitt übersprungen und keiner dieser Parameter gelesen.

### `PaymentKlarna-Txt`

Klarna Payments in der Direktanbindung.

| Parameter | Zweck | Werte |
| - | - | - |
| `KlarnaLocaleCode` | Sprachcode nach Klarna-Vorgabe | beispielsweise `de_DE` |
| `AdditionProductName` | Dummyprodukt für Zusatzkosten | Text |
| `ReductionProductName` | Dummyprodukt für Rabatte | Text |
| `KlarnaOrderLinesOmitFreeItems` | kostenfreie Produkte mit 0 Euro nicht an Klarna übermitteln | `yes`, `no`. Standard: `no` |
| `KlarnaDesignColorBorder` | Rahmenfarbe des Klarna-Widgets | beispielsweise `#FF9900` |
| `KlarnaDesignColorBorderSelected` | Rahmenfarbe für die Auswahl | Farbwert |
| `KlarnaDesignColorDetails` | Farbe der Details | Farbwert |
| `KlarnaDesignColorText` | Textfarbe | Farbwert |
| `KlarnaDesignRadiusBorder` | Rahmenradius | Wert |

### `PaymentPaydirekt-Txt`

Paydirekt.

| Parameter | Zweck | Werte |
| - | - | - |
| `CapturingMode` | `auto` schließt die Zahlung sofort ab, `manual` reserviert nur | `auto`, `manual`. Standard: `auto` |
| `PaydirektLineItemAdditionName` | Dummyprodukt für Zusatzkosten | Text |
| `PaydirektLineItemAdditionNumber` | Pseudo-Produktnummer dazu | Zahl |
| `PaydirektLineItemReductionName` | Dummyprodukt für Rabatte | Text |
| `PaydirektLineItemReductionNumber` | Pseudo-Produktnummer dazu | Zahl |

Die Pseudo-Produktnummern dürfen nicht aus dem Nummernkreis der angebotenen Produkte stammen.

### `PaymentBillie-Txt`

Billie Rechnungskauf.

| Parameter | Zweck | Werte |
| - | - | - |
| `MerchantName` | Händlername, wird im JavaScript-Parameter `billie_config_data` benötigt | Text |
| `Duration` | Zahlungsziel ab Rechnungsstellung in Tagen | 7 bis 120. Standard: 30 |
| `AllowPreWaitingState` | Bestellung trotz Status "pre\_waiting" ausführen | `yes`, `no`. Standard: `no` |

### `PaymentInstallment-Txt`

Ratenkauf. Je nach Provider kommen weitere Abschnitte hinzu.

| Parameter | Zweck | Werte |
| - | - | - |
| `UseInterestAmountAsPaymentCostsForEasyCredit` | nur bei easyCredit. Zinsen als Zahlungskosten in die Gesamtsumme aufnehmen | `yes`, `no`. Standard: `yes` |

> [!WARNING]
>
> Der Shopbetreiber ist verpflichtet, dem Käufer vor Abschluss des Kaufs den Gesamtbetrag inklusive Zinsen anzuzeigen, spätestens auf der Bestellübersichtsseite. Werden die Zinskosten als Zahlungskosten verwendet, ist das automatisch der Gesamtbetrag der Bestellung. Andernfalls fließen die Zinskosten nicht automatisch in die Gesamtsumme ein.

### `PaymentDIRECTebanking-Txt`

SOFORT Überweisung.

| Parameter | Zweck | Werte |
| - | - | - |
| `LanguageID` | Sprache, mit der SOFORT Überweisung aufgerufen wird | `DE`, `EN`, `NL`, `FR`, `PL`. Standard: `DE` |
| `Reason1` | erstes Verwendungszweck-Feld | Text |
| `Reason2` | zweites Verwendungszweck-Feld | Text |

### `PaymentPostFinance-Txt`

PostFinance.

| Parameter | Zweck | Werte |
| - | - | - |
| `CtopLanguageCode` | optional. Bevorzugter Sprachcode der Zahlungsseiten | 2-stellig, beispielsweise `de` |
| `CtopSellingPoint` | optional. Verkaufsstelle | maximal 50 Zeichen |
| `CtopService` | optional. Verkaufte Produkte oder Dienstleistung | maximal 50 Zeichen |

### `PaymentPayU-Txt`

PayU.

| Parameter | Zweck | Werte |
| - | - | - |
| `PayUArticleListAdditionName` | Dummyprodukt für Zusatzkosten | Text |
| `PayUArticleListReductionName` | Dummyprodukt für Rabatte | Text |

## Bonitätsprüfung

Zwei Abschnitte stellen die Schwellenwerte der Bonitätsprüfung ein. Welche Zahlungsart geprüft wird, entscheiden die Parameter `InfoScore-Allow` und `CreditPass-Allow` im jeweiligen `PaymentXXX-Txt`-Abschnitt.

### `InfoScore`

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<InfoScore>
   MinOrder-Value           = 100
   eScoreDenyLessThan-Value = 351
   CreditCheckPeriod        = 6
</InfoScore>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `MinOrder-Value` | optional. Prüfung nur ab diesem Gesamtwarenwert. Ohne Wert wird immer geprüft | Betrag |
| `eScoreDenyLessThan-Value` | **obligatorisch**. Alle gelieferten eScore-Werte unterhalb dieses Werts gelten als zu schlechte Bonität | Zahl |
| `CreditCheckPeriod` | optional. Erneute Prüfung nach dieser Anzahl Monate seit der letzten Prüfung | Zahl in Monaten |

Ob der Gesamtwarenwert brutto oder netto betrachtet wird, hängt von der Einstellung des Shops im Abschnitt `VAT` ab.

Soll beispielsweise die Zahlungsart Rechnung entfallen, sobald Infoscore einen Wert von 350 oder weniger liefert, setzen Sie `InfoScore-Allow = yes` im Abschnitt `PaymentBill-Txt` und `eScoreDenyLessThan-Value = 351`. Je höher der Infoscore-Wert, desto besser die Bonität. Die passende Entscheidungsschwelle klären Sie direkt mit Infoscore.

`CreditCheckPeriod` funktioniert nur, wenn Ihr Warenwirtschaftssystem das Datum der letzten Prüfung liefert.

### `CreditPass`

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<CreditPass>
   Countries         = DEU
   MinTotalSum-Value = 10
</CreditPass>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Countries` | Länder, für die die Prüfung durchgeführt wird | kommaseparierte 3-stellige ISO-Codes |
| `MinTotalSum-Value` | Mindestgesamtsumme, ab der die Prüfung aktiviert wird | Betrag |

## `Card1` bis `Card5`

Legt die akzeptierten Kreditkartentypen fest. Zusätzlich muss die Zahlungsart Kreditkarte im Abschnitt `PaymentCreditCard-Txt` mit `Allow = yes` aktiviert sein.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Card1>
   Allow           = yes
   Name            = VISA
   CompuTopBrandID = VISA
   WSCardType      = 1
</Card1>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `Allow` | Kreditkartentyp anbieten | `yes`, `no`. Standard: `no` |
| `Name` | Name der Kreditkarte | Text |
| `CompuTopBrandID` | nur mit Computop. BrandID, falls `CompuTopBrandDetermination = no` | siehe unten |
| `OgoneBrandID` | nur mit Ogone. Wird nicht automatisch ermittelt | Auskunft über die WEBSALE AG |
| `TeleCashSec2ID` | TeleCash-ID der Karte für die Schnittstelle TeleCash Connect | `M`, `V`, `A`, `C`, `J` |
| `WSCardType` | technischer Typcode der Karte | siehe unten |
| `BrandID` | allgemeine BrandID | Text |
| `PaymetricBrandID` | BrandID für Paymetric | Text |
| `Img` | Symbolbild des Kartentyps | Dateiname |
| `Link` | Link mit Informationen zum Kartentyp | URL |
| `ImgOnClick` | JavaScript beim Klick auf das Symbol | JavaScript |

Ein `Card`-Abschnitt wird vollständig verworfen, wenn `Name` leer ist oder `Allow` nicht auf `yes` steht. Es erscheint keine Meldung.

Werte für `CompuTopBrandID`: `VISA`, `MasterCard`, `Maestro`, `AMEX`, `Diners`, `Discover` und `AirPlus`.

Werte für `TeleCashSec2ID`: `M` für MasterCard, `V` für Visa, `A` für American Express, `C` für Diners und `J` für JCB.

Werte für `WSCardType`: `1` für VISA, `2` für MasterCard, `3` für American Express, `4` für Diners Club und `5` für JCB. Werte über 100 sind frei verwendbar. Der Parameter ist Pflicht bei Nutzung des Bestellgenerators, wird für den technischen Ablauf der Bestellung aber nicht ausgewertet.

## `CompuTop-ErrorMessages`

Legt fest, wie der Shop mit Fehlermeldungen von Computop umgeht. Der Abschnitt wird nur gebraucht, wenn in fremdsprachigen Subshops die Computop-Fehlermeldungen in der Sprache des Subshops erscheinen sollen.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<CompuTop-ErrorMessages>
   NotificationAddress = admin@beispiel.fr
   Default-Message     = Pour le code ~WS-CTopErrorCode~, il n'y a pas de message particulier
   <ErrorMessages>
      CTopErrorCode-0001 = Numéro de transaction invalide
      CTopErrorCode-0002 = default
   </ErrorMessages>
</CompuTop-ErrorMessages>
```

| Parameter | Zweck | Werte |
| - | - | - |
| `CTopErrorCode-xxxx` | Meldung je Fehlercode, im Unterabschnitt `ErrorMessages`. `xxxx` ist der Code von Computop | Text oder `default` |
| `Default-Message` | Standardmeldung für alle nicht oder als `default` definierten Codes | Text, Tag `WS-CTopErrorCode` möglich |
| `NotificationAddress` | Empfänger einer E-Mail bei Fehlercodes, die nicht definiert sind | E-Mail-Adresse |

Die Fehlercodes erhalten Sie direkt von Computop.

## `Paymorrow-Mapping` und `PaymorrowDebit-Mapping`

Verknüpfen freie Adressdatenfelder des Shops mit den Parametern von Paymorrow. Das wird gebraucht, um bei Firmenkunden Rechtsform, Firmeninhaber und Registernummer abzufragen. `Paymorrow-Mapping` gilt für Rechnung mit Paymorrow, `PaymorrowDebit-Mapping` für Lastschrift mit Paymorrow. Beide Abschnitte kennen dieselben drei Parameter.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Paymorrow-Mapping>
   LegalForm          = Suffix25
   Owner              = Suffix26
   RegistrationNumber = Suffix27
</Paymorrow-Mapping>
```

| Parameter | Verknüpft mit dem freien Adressdatenfeld für |
| - | - |
| `LegalForm` | die Rechtsform von Firmenkunden |
| `Owner` | den Firmeninhaber |
| `RegistrationNumber` | die Registernummer |

Die Adressdatenfelder selbst legen Sie im Abschnitt `AddressFields-Txt` an.

Referenz: [Abschnitt AddressFields-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#addressfields-txt)

## `Paymorrow-NotifyMessages` und `PaymorrowDebit-NotifyMessages`

Definieren die Fehlermeldungen für Rechnung beziehungsweise Lastschrift mit Paymorrow. Für jeden Fehlerfall wird ein Unterabschnitt `+Entry` angelegt. Beide Abschnitte kennen dieselben sieben Parameter.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Paymorrow-NotifyMessages>
   <+Entry>
      customerStatus             =
      declineFinal               =
      declineType                =
      Message                    = Die gewünschte Zahlungsart steht für diese Transaktion leider nicht zur Verfügung.
      responseStatus             =
      responseErrors_error_group =
      responseErrors_error_name  =
   </+Entry>
</Paymorrow-NotifyMessages>
```

| Parameter | Zweck |
| - | - |
| `Message` | Fehlermeldung, die dem Käufer angezeigt wird |
| `customerStatus` | Wert aus der Paymorrow-Response |
| `declineFinal` | Wert aus der Paymorrow-Response |
| `declineType` | Wert aus der Paymorrow-Response |
| `responseStatus` | Wert aus der Paymorrow-Response |
| `responseErrors_error_group` | Wert aus der Paymorrow-Response |
| `responseErrors_error_name` | Wert aus der Paymorrow-Response |

Welche Werte Paymorrow in welchem Fehlerfall liefert, klären Sie direkt mit Paymorrow.

Treten mehrere Fehler gleichzeitig auf, erscheint nur die erste in diesem Abschnitt definierte zutreffende Meldung. Die Reihenfolge der `+Entry`-Abschnitte entscheidet also darüber, welche Meldung der Käufer sieht.


## Related topics

- [Zahlungsarten-Codes](https://dokumentation.websale.de/v8s/materialien/zahlungsarten-codes.md)
- [Übersicht - Zahlungsarten](https://dokumentation.websale.de/frontend/funktionsubersicht/zahlungsarten.md)
- [Zahlungsarten anlegen](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/zahlungsarten-anlegen.md)
- [Eigene Zahlungsarten definieren](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/eigene-zahlungsarten-definieren.md)
- [Schaltflächen der Zahlungsarten](https://dokumentation.websale.de/v8s/referenz/tags/bt/zahlungsarten.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.