> ## 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.

# Materialien Paymorrow-Fehlermeldungen

> Eine vollständige Beispielkonfiguration für die Abschnitte Paymorrow-NotifyMessages und PaymorrowDebit-NotifyMessages, mit den Werten, auf die der Shop prüft, und den Bedingungen, unter denen die Meldungen überhaupt greifen.

Lehnt Paymorrow eine Anfrage ab, liefert die Antwort einen eigenen Hinweistext mit. Der ist oft technisch formuliert und passt selten zur Ansprache des Shops. Mit den Abschnitten `Paymorrow-NotifyMessages` und `PaymorrowDebit-NotifyMessages` hinterlegen Sie eigene Meldungen und ordnen sie den Antworten von Paymorrow zu.

Diese Seite enthält eine vollständige Beispielkonfiguration zum Übernehmen, dazu die Werte, auf die der Shop prüft. Was die einzelnen Parameter bedeuten, steht in der Referenz.

Wegweiser: [Paymorrow](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paymorrow.md) · Referenz: [Abschnitt Paymorrow-NotifyMessages](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md)

## Wann die Meldungen überhaupt greifen

> [!WARNING]
>
> Der Shop setzt seine eigenen Meldungen nur ein, wenn **beides** zutrifft:
>
> 1. Die Zahlungsart steht auf `B2BMode = Advanced`.
> 2. Das Feld Firma in der Rechnungsadresse ist ausgefüllt.
>
> Trifft eines davon nicht zu, bleibt der gesamte Abschnitt wirkungslos, und der Käufer sieht den Text, den Paymorrow selbst in der Antwort mitgeschickt hat. Eine Fehlermeldung oder ein Protokolleintrag weist nicht darauf hin.
>
> Prüfen Sie `B2BMode` in `PaymentPaymorrow-Txt` beziehungsweise `PaymentDebitNote-Txt`, bevor Sie Meldungen pflegen, die nie erscheinen.

Der Rahmen um die Meldung kommt aus `PaymorrowExternalNotifyMessagePrefix` und `PaymorrowExternalNotifyMessageSuffix` derselben Zahlungsart. Dort setzen Sie das HTML für die Fehlerbox, nicht in die Meldung selbst.

## Die Beispielkonfiguration

Für den Rechnungskauf steht sie im Abschnitt `Paymorrow-NotifyMessages`.

> [accordion] Fehlermeldungen für Paymorrow
>
> ```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
> <Paymorrow-NotifyMessages>
>     <+Entry>
>         responseStatus = OK
>         customerStatus = DECLINED
>         declineFinal = Y
>         Message = Die gewünschte Zahlart steht für diese Transaktion leider nicht zur Verfügung. Bitte wählen Sie eine andere Zahlart aus (1).
>     </+Entry>
>
>     <+Entry>
>         responseStatus = OK
>         customerStatus = DECLINED
>         declineFinal = N
>         declineType = INVALID_ADDRESS
>         Message = Bitte prüfen Sie Ihre Adressangabe (1).
>     </+Entry>
>
>     <+Entry>
>         responseStatus = OK
>         customerStatus = DECLINED
>         declineFinal = N
>         declineType = IDENT
>         Message = Bitte prüfen Sie Ihre Adressangabe (2).
>     </+Entry>
>
>     <+Entry>
>         responseStatus = OK
>         customerStatus = DECLINED
>         declineFinal = N
>         declineType = NOT_ALLOWED_DIFFERENT_BILLING_SHIPPING
>         Message = Rechnungs- und Lieferadresse müssen identisch sein.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = OK
>         customerStatus = DECLINED
>         declineFinal = N
>         declineType = DONT_COMMUNICATE
>         Message = Die gewünschte Zahlart steht für diese Transaktion leider nicht zur Verfügung. Bitte wählen Sie eine andere Zahlart aus (2).
>     </+Entry>
>
>     <+Entry>
>         responseStatus = OK
>         customerStatus = DECLINED
>         declineFinal = N
>         declineType = LIMIT
>         Message = Für diesen Bestellwert steht die gewünschte Zahlart leider nicht zur Verfügung. Bitte wählen Sie eine andere Zahlart aus (5).
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = FIRST_NAME
>         Message = Bitte überprüfen Sie den angegebenen Vornamen.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = LAST_NAME
>         Message = Bitte überprüfen Sie den angegebenen Nachnamen.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = EMAIL
>         Message = Bitte überprüfen Sie die angegebene E-Mail-Adresse.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = DATE_OF_BIRTH
>         Message = Bitte überprüfen Sie das angegebene Geburtsdatum.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = MOBILE_NUMBER
>         Message = Bitte überprüfen Sie die angegebene Mobilfunknummer.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = PHONE_NUMBER
>         Message = Bitte überprüfen Sie die angegebene Telefonnummer.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = BILLING_ADDRESS
>         Message = Bitte überprüfen Sie die angegebene Rechnungsadresse.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = SHIPPING_ADDRESS
>         Message = Bitte überprüfen Sie die angegebene Lieferadresse.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = COMPANY
>         Message = Bitte überprüfen Sie den angegebenen Firmennamen.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         responseErrors_error_name = SDD_ACCOUNT_NO
>         Message = Bitte überprüfen Sie die angegebene Kontoverbindung.
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         responseErrors_error_group = USER_INPUT
>         Message = Die gewünschte Zahlart steht für diese Transaktion leider nicht zur Verfügung. Bitte wählen Sie eine andere Zahlart aus (3).
>     </+Entry>
>
>     <+Entry>
>         responseStatus = ERROR
>         Message = Die gewünschte Zahlart steht für diese Transaktion leider nicht zur Verfügung. Bitte wählen Sie eine andere Zahlart aus (4).
>     </+Entry>
> </Paymorrow-NotifyMessages>
> ```

Für die Lastschrift übernehmen Sie dieselben Einträge unverändert in den Abschnitt `PaymorrowDebit-NotifyMessages`. Beide Zahlungsarten haben eine eigene Freigabe und damit eine eigene Meldungsliste, die Einträge selbst unterscheiden sich nicht.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymorrowDebit-NotifyMessages>
    ...
</PaymorrowDebit-NotifyMessages>
```

Die Ziffern in Klammern am Ende der allgemein gehaltenen Meldungen sind Absicht. Der Käufer sieht bei mehreren verschiedenen Ablehnungsgründen denselben Satz, und der Support erkennt an der Ziffer, welcher Fall eingetreten ist. Wenn Sie die Texte umformulieren, behalten Sie diese Unterscheidung bei.

Der Eintrag für `SDD_ACCOUNT_NO` betrifft die Kontoverbindung und greift nur bei der Lastschrift. In der Liste für den Rechnungskauf schadet er nicht, er trifft dort nur nie zu.

## Wie der Shop den passenden Eintrag sucht

Der Shop geht die `+Entry`-Abschnitte von oben nach unten durch und vergleicht die angegebenen Werte mit der Antwort von Paymorrow. Groß- und Kleinschreibung spielt dabei keine Rolle.

| Regel | Wirkung |
| - | - |
| Der **erste** Eintrag, bei dem alle angegebenen Werte passen, gewinnt | die Suche endet dort, spätere Einträge werden nicht mehr geprüft |
| Ein **weggelassener** Parameter wird nicht geprüft | der Eintrag passt dann auf jeden Wert dieses Feldes |
| `responseStatus` ist die Ausnahme | dieser Wert wird immer verglichen und muss in jedem Eintrag stehen |
| Ein Eintrag mit leerem `Message` beendet die Suche nicht | der Shop prüft dann den nächsten Eintrag weiter |

> [!WARNING]
>
> Aus der ersten und der zweiten Regel zusammen folgt die Reihenfolge der Beispielkonfiguration: zuerst die Einträge mit `declineType` beziehungsweise `responseErrors_error_name`, danach die allgemeineren. Ein Eintrag mit nur `responseStatus = ERROR` ganz oben würde alle darunter liegenden Einträge unerreichbar machen.
>
> `responseStatus` in einem Eintrag wegzulassen macht diesen Eintrag unerreichbar, denn der Shop vergleicht dann gegen einen leeren Wert. In der Beispielkonfiguration oben steht `responseStatus` deshalb in jedem Eintrag.

Für den erfolgreichen Fall `responseStatus = OK` zusammen mit `customerStatus = ACCEPTED` brauchen Sie keinen Eintrag. Es gibt dann nichts zu melden.

## Die Werte, auf die geprüft wird

Die Werte stammen aus der Antwort von Paymorrow. Welche davon in welchem Fehlerfall kommen, klären Sie mit Paymorrow. Die folgende Übersicht nennt die Werte, die das Shopsystem kennt und die die Beispielkonfiguration verwendet.

| Parameter | Werte |
| - | - |
| `responseStatus` | `OK`, `ERROR` |
| `customerStatus` | `ACCEPTED`, `DECLINED` |
| `declineFinal` | `Y`, `N` |
| `declineType` | `INVALID_ADDRESS`, `IDENT`, `NOT_ALLOWED_DIFFERENT_BILLING_SHIPPING`, `DONT_COMMUNICATE`, `LIMIT` und weitere |
| `responseErrors_error_group` | `USER_INPUT` und weitere |
| `responseErrors_error_name` | `FIRST_NAME`, `LAST_NAME`, `EMAIL`, `DATE_OF_BIRTH`, `MOBILE_NUMBER`, `PHONE_NUMBER`, `BILLING_ADDRESS`, `SHIPPING_ADDRESS`, `COMPANY`, `SDD_ACCOUNT_NO` und weitere |

Die Listen für `declineType`, `responseErrors_error_group` und `responseErrors_error_name` sind nicht abschließend. Paymorrow kann weitere Werte liefern, und das Shopsystem reicht sie unverändert an den Vergleich weiter. Deshalb endet jede Beispielkonfiguration mit einem Auffangeintrag, der nur `responseStatus` prüft.

`customerStatus` füllt der Shop aus zwei verschiedenen Feldern der Antwort: bei der Anfrage `getPaymentToken` aus dem Kundenstatus, bei der Anfrage `authorizeByRef` aus dem Autorisierungsstatus. Für die Konfiguration macht das keinen Unterschied, die Werte sind in beiden Fällen `ACCEPTED` und `DECLINED`.

`declineFinal = Y` bedeutet, dass Paymorrow die Zahlungsart für diese Sitzung endgültig ablehnt. Der Shop merkt sich das und bietet sie nicht erneut an. Bei `N` darf der Käufer seine Eingaben korrigieren und es noch einmal versuchen. Eine Meldung zu `Y` sollte deshalb zu einer anderen Zahlungsart führen, eine Meldung zu `N` zur Korrektur der Eingabe.

Referenz: [PAY- (Zahlungsarten anzeigen und auswählen)](https://dokumentation.websale.de/v8s/referenz/tags/pay/zahlungsarten-anzeigen-und-auswaehlen.md) · [PAYMORROW- (Paymorrow)](https://dokumentation.websale.de/v8s/referenz/tags/paymorrow.md)


## Related topics

- [Paymorrow](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paymorrow.md)
- [PAYMORROW- (Paymorrow)](https://dokumentation.websale.de/v8s/referenz/tags/paymorrow.md)
- [Zahlungsarten](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md)
- [Materialien Abo-Modul](https://dokumentation.websale.de/v8s/materialien/materialien-abo-modul.md)
- [Zahlungsarten-Codes](https://dokumentation.websale.de/v8s/materialien/zahlungsarten-codes.md)


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