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

# PayPal Checkout

> Wie Sie PayPal Checkout in WEBSALE V8s einrichten: Onboarding, die acht Zahlungsarten unter einem Vertrag, Express-Checkout und das Hinterlegen der Zahlungsquelle im Vault.

PayPal Checkout ist die aktuelle PayPal-Anbindung von WEBSALE. Sie ist kein einzelnes Bezahlverfahren, sondern eine Klammer: Mit einem Vertrag und einem Onboarding schalten Sie bis zu acht Zahlungsarten frei, die alle über dieselbe PayPal-Schnittstelle abgewickelt werden, vom PayPal-Konto über Kreditkarte und Lastschrift bis zu den länderspezifischen Verfahren.

Das ist der entscheidende Unterschied zu den einzeln angebundenen Zahlungsarten. Sie richten einmal die technische Grundlage ein und danach jede gewünschte Zahlungsart nach demselben Muster. Diese Seite ist deshalb so aufgebaut: erst das Onboarding, dann das Muster, dann die Abweichungen der einzelnen Zahlungsarten.

![Screen 5zahlungsarten Paypal Checkout](https://mintcdn.com/websaleag-44ee7ea6/qbW8uRSswcI46vuk/images/screen-5zahlungsarten-paypal-checkout.jpg?fit=max\&auto=format\&n=qbW8uRSswcI46vuk\&q=85\&s=96c13894efcb0783a6a9130487a19aca)

## Welche Zahlungsarten PayPal Checkout abdeckt

| Zahlungsart | Abschnitt in der `shop.config` | Zahlungsart-Code |
| - | - | - |
| PayPal-Konto | `<PaymentPayPalCheckout-Txt>` | 37 |
| Kauf auf Rechnung (Ratepay) | `<PaymentPayPalInvoice-Txt>` | 36 |
| Später bezahlen (Pay Later) | `<PaymentPayPalCheckoutPayLater-Txt>` | 38 |
| Kreditkarte | `<PaymentCreditCard-Txt>` | 1 |
| Lastschrift | `<PaymentDebitNote-Txt>` | 4 |
| Alternative, länderspezifische Zahlungsmethoden | `<PaymentPayPalCheckoutAPM_…-Txt>` | 40 bis 47 |
| Google Pay | `<PaymentPayPalCheckoutAPM_GOOGLEPAY-Txt>` | 48 |
| Apple Pay | `<PaymentPayPalCheckoutAPM_APPLEPAY-Txt>` | 49 |

Kreditkarte und Lastschrift benutzen dieselben Abschnittsnamen und dieselben Zahlungsart-Codes wie die klassischen Anbindungen über einen anderen Zahlungsdienstleister. Welcher Dienstleister die Zahlung abwickelt, entscheidet allein die Freischaltung durch WEBSALE, nicht der Abschnittsname. Sie können eine dieser Zahlungsarten daher nicht gleichzeitig über PayPal Checkout und über einen anderen Anbieter laufen lassen.

## Schritt 1: Das PayPal-Onboarding

Bevor irgendeine dieser Zahlungsarten funktioniert, muss Ihr PayPal-Geschäftskonto mit WEBSALE verbunden werden. Das geschieht einmal pro Shop über den Online-Shop-Betreuer.

1. Melden Sie sich im Online-Shop-Betreuer an.
2. Rufen Sie das PayPal-Onboarding auf und starten Sie es.
3. Sie werden zu PayPal weitergeleitet und melden sich dort mit Ihrem PayPal-Geschäftskonto an.
4. Bestätigen Sie die Verbindung. Anschließend kehren Sie in den Online-Shop-Betreuer zurück.

Das Onboarding verbindet Ihr PayPal-Konto mit WEBSALE, es schaltet aber noch keine einzige Zahlungsart frei. Die Freischaltung jeder gewünschten Zahlungsart nimmt WEBSALE anschließend für Sie vor. Melden Sie deshalb Ihrem WEBSALE-Ansprechpartner, welche der acht Zahlungsarten Sie anbieten wollen.

> [!WARNING]
>
> Ist eine Zahlungsart nicht durch WEBSALE freigeschaltet, schaltet der Shop sie beim Einlesen der Konfiguration von sich aus wieder ab, unabhängig davon, was in `Allow` steht. Das gilt für jede der acht Zahlungsarten. Wenn eine korrekt konfigurierte Zahlungsart im Bestellablauf nicht erscheint, ist die fehlende Freischaltung die erste Vermutung.

Wegweiser: Online-Shop-Betreuer

## Schritt 2: Das gemeinsame Muster

Jede der acht Zahlungsarten wird nach demselben Muster eingebaut. Die folgenden vier Schritte gelten für alle, die Abweichungen stehen weiter unten bei der jeweiligen Zahlungsart.

### 2.1 Zahlungsart in der `shop.config` anlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckout-Txt>
   Allow            = yes
   TestMode         = yes
   Name             = PayPal
   NameSuffix       = Bezahlen Sie bequem mit Ihrem PayPal-Konto.
   Img              = logo-paypal.png
   RadioOnClick     = selectPayment('~ID~');
   ImgOnClick       = selectPaymentImage('~ID~');
   DelivererID-List = standard,express

   LanguageCode       = de_DE
   DummyItemAddition  = Zusatzkosten
</PaymentPayPalCheckout-Txt>
```

Die allgemeinen Parameter sind dieselben wie bei jeder anderen Zahlungsart. Hinzu kommen die PayPal-eigenen:

| Parameter | Bedeutung |
| - | - |
| `LanguageCode` | Sprache und Land der PayPal-Oberfläche, im Format `de_DE` |
| `DummyItemAddition` | Bezeichnung der Sammelposition für Zuschläge im an PayPal übergebenen Warenkorb. Bleibt der Parameter leer, setzt der Shop `Zusatzkosten` ein |

PayPal bekommt den Warenkorb positionsweise übergeben. Zu- und Abschläge, die keiner einzelnen Position zuzuordnen sind, lassen sich dort nicht als Korrektur abbilden und gehen deshalb als eigene Sammelposition mit. `DummyItemAddition` gibt dieser Position ihren Namen.

### 2.2 Das PayPal-JavaScript-SDK einbinden

Das SDK wird über einen Skript-Tag geladen, dessen URL Sie mit WEBSALE-Tags zusammensetzen. Binden Sie es auf der Seite ein, auf der der Bezahlvorgang stattfindet, in der Regel `ws_order.htm`.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-UsePayPalCheckout}
   <script
      src="https://www.paypal.com/sdk/js?client-id=~PPC-ClientID~&merchant-id=~PPC-MerchantID~&currency=~WS-Currency~&intent=~PPC-Intent~&components=buttons"
      data-partner-attribution-id="WEBSALE_Cart"
      data-page-type="checkout">
   </script>
{/PPC-UsePayPalCheckout}
```

| Tag | Liefert |
| - | - |
| `~PPC-ClientID~` | die Client-ID Ihrer PayPal-Anbindung |
| `~PPC-MerchantID~` | Ihre PayPal-Händlerkennung |
| `~PPC-Intent~` | `capture` oder `authorize`, abhängig davon, wie WEBSALE Ihre Anbindung eingerichtet hat |
| `~PPC-IntegrationDate~` | das Integrationsdatum im Format `JJJJ-MM-TT` |
| `~PPC-Sandbox~` | Klammerung, die nur im Sandbox-Betrieb greift |
| `~PPC-ClientToken~` | das Client-Token, nötig für Kreditkarte und für die Erkennung wiederkehrender Käufer |

> [!WARNING]
>
> Schreiben Sie in der URL nie `&currency=` unmittelbar hinter einen Parameter, ohne zu prüfen, wie Ihr Template kodiert wird. Die Zeichenfolge `&curren` ist eine gültige HTML-Entity und wird von manchen Werkzeugen in das Währungszeichen umgewandelt, wodurch der Parameter unbrauchbar wird. Schreiben Sie den Parameter in diesem Fall als `&amp;currency=`.

PayPal versioniert das SDK nicht über eine Versionsnummer, sondern über ein Integrationsdatum. WEBSALE pflegt dieses Datum zentral und stellt es als `~PPC-IntegrationDate~` bereit. Übergeben Sie es statt einer festen Version, dann bekommen Sie automatisch die jeweils passende SDK-Fassung.

Welchen Wert `components=` bekommt und ob weitere Parameter nötig sind, hängt von der Zahlungsart ab. Die Übersicht steht in Abschnitt 3.

### 2.3 Den Bezahlbereich im Template ausgeben

Die Zahlungsart selbst erscheint zusammen mit allen anderen über `~WS-PaymentFields~` auf `ws_pay_deliv.htm`. Der eigentliche Bezahlbereich, also der PayPal-Button oder das Eingabefeld, gehört auf die Bestellübersicht `ws_order.htm` und wird in `{PPC-UsePayPalCheckout}` geklammert.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-UsePayPalCheckout}
   <div id="ppc_button_container"></div>
   <div id="ppc_error" style="display: none;"></div>
{/PPC-UsePayPalCheckout}
```

`{PPC-UsePayPalCheckout}` ist ausschließlich als Klammerung verwendbar, nicht als einzelnes Tag. Es liefert nur dann `wahr`, wenn die gerade gewählte Zahlungsart tatsächlich über PayPal Checkout abgewickelt wird. Während eines laufenden Express-Checkouts liefert es `falsch`, denn dort ist der Bezahlvorgang bereits abgeschlossen.

Die Links, die das SDK für seine Rückmeldungen braucht, liefern drei Tags:

| Tag | Wofür |
| - | - |
| `~PPC-OnApproveLink~` | Aufruf nach erfolgreicher Freigabe durch den Käufer |
| `~PPC-OnCancelLink~` | Aufruf nach Abbruch durch den Käufer |
| `~PPC-OnErrorLink~` | Aufruf nach einem Fehler |

### 2.4 Das Template für den Zwischenstand anlegen

Bei jeder Zahlungsart über PayPal Checkout gibt es einen Moment, in dem der Käufer bereits freigegeben hat, die Bestellung im Shop aber noch nicht abgeschlossen ist. Für diesen Moment braucht der Shop eine eigene Seite. Sie wird über einen Link angesprungen, den `~PPC-PendingLink~` liefert.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Template-Txt>
   PPCPending = ws_ppc_pending.htm
</Template-Txt>
```

Die Seite selbst ist kurz und enthält kein sichtbares Bedienelement. Sie leitet sofort weiter.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<html>
<head>
   <meta charset="~WS-Charset~">
   <title>Ihre Bestellung wird verarbeitet</title>
</head>
<body>
   <p>Ihre Zahlung wird geprüft. Bitte haben Sie einen Moment Geduld.</p>
   <form id="ppc_pending_form" method="post" action="~PPC-PendingLink~"></form>
   <script>
      document.getElementById('ppc_pending_form').submit();
   </script>
</body>
</html>
```

> [!WARNING]
>
> Diese Seite darf den Käufer nicht zum Warten verleiten und sie darf keinen Zurück-Button anbieten. Ein Abbruch an dieser Stelle hinterlässt eine freigegebene Zahlung ohne zugehörige Bestellung.

Dieses Template wird von allen acht Zahlungsarten gemeinsam benutzt. Sie legen es einmal an, nicht pro Zahlungsart.

Referenz: Abschnitt Template-Txt · [Abschnitt PaymentXXX-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/zahlungsarten.md)

## Schritt 3: Die einzelnen Zahlungsarten

Alles Folgende baut auf dem Muster aus Schritt 2 auf. Beschrieben sind nur die Abweichungen.

### Auf einen Blick

| Zahlungsart | `components=` | `fundingSource` | Besonderheit |
| - | - | - | - |
| PayPal-Konto | `buttons` | `paypal` | Vault möglich, Express-Checkout möglich |
| Kauf auf Rechnung | `buttons` | `paypal` | FraudNet-Skript und Rechtstexte nötig |
| Später bezahlen | `buttons,messages` | `paylater` | Werbehinweis über `messages` möglich |
| Kreditkarte | `buttons,hosted-fields` | entfällt | Eingabefelder von PayPal, Client-Token nötig |
| Lastschrift | `buttons` | `sepa` | eigener Funding-Source-Aufruf |
| Alternative Verfahren | `buttons,funding-eligibility` | je Verfahren | Mindestbestellwert und Land beachten |
| Google Pay | `googlepay` | entfällt | eigene Google-Pay-Bibliothek zusätzlich |
| Apple Pay | `applepay` | entfällt | Domain-Verifizierung bei Apple nötig |

### 3.1 PayPal-Konto

Die Grundform. Sie kommt ohne Zusätze aus.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckout-Txt>
   Allow             = yes
   Name              = PayPal
   LanguageCode      = de_DE
   DummyItemAddition = Zusatzkosten
</PaymentPayPalCheckout-Txt>
```

### 3.2 Kauf auf Rechnung mit Ratepay

Den Rechnungskauf wickelt PayPal nicht selbst ab, sondern der Partner Ratepay. Daraus ergeben sich drei Zusätze.

**Erstens** braucht die Bestellseite das FraudNet-Skript von PayPal. Es dient der Betrugserkennung und muss geladen sein, bevor der Käufer die Bestellung auslöst.

**Zweitens** müssen Sie die Rechtstexte von Ratepay anzeigen, insbesondere den Hinweis auf die Abtretung der Forderung und die Datenschutzerklärung von Ratepay. Ohne diese Texte ist die Anbindung nicht abnahmefähig.

**Drittens** meldet Ratepay Ablehnungen mit eigenen Fehlercodes zurück. Das Tag `~PPC-PayPalErrorCode()~` gibt Ihnen den zuletzt gemeldeten Code, so dass Sie dem Käufer eine passende Meldung zeigen können statt einer allgemeinen Fehlermeldung.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-PayPalErrorCode(INVALID_BILLING_ADDRESS)}
   <p class="fehler">Die Rechnungsadresse konnte nicht geprüft werden. Bitte prüfen Sie Ihre Eingaben.</p>
{/PPC-PayPalErrorCode(INVALID_BILLING_ADDRESS)}
```

Der Rechnungskauf verlangt eine deutsche Rechnungsadresse und eine Telefonnummer. Fragen Sie beides über die Adresseingabe ab und schränken Sie die Zahlungsart über `BillCountry-Rule` und `BillCountry-List` auf die zulässigen Länder ein, sonst wählt der Käufer eine Zahlungsart, die er anschließend nicht nutzen kann.

### 3.3 Später bezahlen

Pay Later zeigt dem Käufer die Möglichkeit, den Kaufbetrag zu stunden oder in Raten zu zahlen. Die Konditionen stellt PayPal, der Shop übergibt nur den Betrag.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckoutPayLater-Txt>
   Allow             = yes
   Name              = Später bezahlen
   LanguageCode      = de_DE
   DummyItemAddition = Zusatzkosten
</PaymentPayPalCheckoutPayLater-Txt>
```

Ergänzen Sie in der SDK-URL `components=buttons,messages`, wenn Sie den Werbehinweis von PayPal einbinden wollen, der auf dem Produkt oder im Warenkorb die möglichen Raten nennt.

### 3.4 Kreditkarte

Die Kartendaten gibt der Käufer nicht im Shop ein, sondern in Feldern, die PayPal in Ihre Seite einbettet. Sie gestalten die Felder, die Daten selbst sehen Sie nie.

Dafür brauchen Sie zwei Dinge zusätzlich: `components=buttons,hosted-fields` in der SDK-URL und das Client-Token als Attribut am Skript-Tag.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-UsePayPalCheckout}
   <script
      src="https://www.paypal.com/sdk/js?client-id=~PPC-ClientID~&merchant-id=~PPC-MerchantID~&currency=~WS-Currency~&intent=~PPC-Intent~&components=buttons,hosted-fields"
      data-client-token="~PPC-ClientToken~"
      data-partner-attribution-id="WEBSALE_Cart">
   </script>
{/PPC-UsePayPalCheckout}
```

> [!WARNING]
>
> Ohne `data-client-token` werden die Eingabefelder nicht aufgebaut, und zwar ohne sichtbare Fehlermeldung. Wenn der Kartenbereich leer bleibt, prüfen Sie zuerst dieses Attribut.

### 3.5 Lastschrift

Die SEPA-Lastschrift über PayPal Checkout nutzt denselben Button-Aufbau wie das PayPal-Konto, wird aber über die Funding-Source `sepa` aufgerufen.

```js theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
paypal.Buttons({
   fundingSource: paypal.FUNDING.SEPA
}).render('#ppc_button_container');
```

Der Käufer gibt seine Bankverbindung bei PayPal ein, nicht im Shop. Eine eigene IBAN-Prüfung im Shop entfällt damit, und es wird auch kein SEPA-Mandat durch den Shop erzeugt.

### 3.6 Alternative, länderspezifische Zahlungsmethoden

Unter diesem Sammelbegriff fasst PayPal Verfahren zusammen, die jeweils nur in einem Land verbreitet sind. Jedes hat einen eigenen Abschnitt in der `shop.config`.

| Verfahren | Abschnitt | Code | Land |
| - | - | - | - |
| Bancontact | `<PaymentPayPalCheckoutAPM_BANCONTACT-Txt>` | 40 | Belgien |
| BLIK | `<PaymentPayPalCheckoutAPM_BLIK-Txt>` | 41 | Polen |
| eps-Überweisung | `<PaymentPayPalCheckoutAPM_EPS-Txt>` | 42 | Österreich |
| giropay | `<PaymentPayPalCheckoutAPM_GIROPAY-Txt>` | 43 | Deutschland |
| iDEAL | `<PaymentPayPalCheckoutAPM_IDEAL-Txt>` | 44 | Niederlande |
| MyBank | `<PaymentPayPalCheckoutAPM_MYBANK-Txt>` | 45 | Italien |
| Przelewy24 | `<PaymentPayPalCheckoutAPM_PRZELEWY24-Txt>` | 46 | Polen |
| SOFORT | `<PaymentPayPalCheckoutAPM_SOFORT-Txt>` | 47 | mehrere |

Alle acht lesen dieselben Parameter:

| Parameter | Bedeutung |
| - | - |
| `LanguageCode` | Sprache und Land der PayPal-Oberfläche |
| `BrandName` | Der Name, unter dem Ihr Shop beim Verfahren erscheint |
| `DummyItemAddition` | Sammelposition für Zuschläge. Voreinstellung `Zusatzkosten` |
| `DummyItemDiscount` | Sammelposition für Abschläge. Voreinstellung `Rabatt` |

Jedes dieser Verfahren hat eigene Vorgaben für die Währung, das Land des Käufers und häufig einen Mindestbestellwert. Bilden Sie diese Vorgaben mit den allgemeinen Filterparametern der Zahlungsart ab, also mit `BillCountry-Rule`, `DeliveryCountry-Rule` und `MinOrder-Value`. Der Shop prüft sie sonst nicht, und die Zahlung scheitert erst bei PayPal.

Wegweiser: [Zahlungsarten anlegen, für die Filterparameter](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/zahlungsarten-anlegen.md)

### 3.7 Google Pay

Google Pay läuft technisch ebenfalls über PayPal Checkout, benötigt aber zusätzlich die Google-Pay-Bibliothek und eine eigene Beschreibung des Bezahlvorgangs.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckoutAPM_GOOGLEPAY-Txt>
   Allow             = yes
   Name              = Google Pay
   LanguageCode      = de_DE
   BrandName         = Ihr Shopname
   DummyItemAddition = Zusatzkosten
   DummyItemDiscount = Rabatt
</PaymentPayPalCheckoutAPM_GOOGLEPAY-Txt>
```

Setzen Sie in der SDK-URL `components=googlepay` und laden Sie zusätzlich die Bibliothek von Google.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-UsePayPalCheckout}
   <script src="https://pay.google.com/gp/p/js/pay.js"></script>
   <div id="ppc_googlepay_container"></div>
   <div id="ppc_googlepay_error" style="display: none;"></div>
{/PPC-UsePayPalCheckout}
```

Die Angaben zum Betrag, die Google Pay erwartet, liefert `~PPC-GPayTransactionInfo~` fertig als JSON.

### 3.8 Apple Pay

Apple Pay funktioniert nur in Safari und nur auf Geräten von Apple, und es setzt voraus, dass Ihre Domain bei Apple verifiziert ist. Diese Verifizierung nimmt WEBSALE für Sie vor.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckoutAPM_APPLEPAY-Txt>
   Allow             = yes
   Name              = Apple Pay
   LanguageCode      = de_DE
   BrandName         = Ihr Shopname
   DummyItemAddition = Zusatzkosten
   DummyItemDiscount = Rabatt
</PaymentPayPalCheckoutAPM_APPLEPAY-Txt>
```

Setzen Sie in der SDK-URL `components=applepay`.

| Tag | Liefert |
| - | - |
| `~PPC-APayBrandName~` | den in `BrandName` hinterlegten Namen, für die Anzeige im Apple-Pay-Dialog |
| `~PPC-APayLineItems~` | die Warenkorbpositionen im von Apple Pay erwarteten Format |
| `~PPC-APayBillingContact~` | die Rechnungsadresse aus der Apple-Pay-Rückmeldung |

Prüfen Sie im Template mit einer Abfrage auf die Verfügbarkeit, bevor Sie den Apple-Pay-Bereich aufbauen. Auf einem Gerät ohne Apple Pay bleibt sonst eine leere Fläche stehen.

## Express-Checkout

Beim Express-Checkout beginnt der Käufer den Bezahlvorgang schon im Warenkorb. Er meldet sich bei PayPal an, PayPal liefert Name und Lieferadresse zurück, und der Käufer überspringt damit die Adresseingabe im Shop.

Angeboten werden kann der Express-Checkout über das PayPal-Konto, über Google Pay und über Apple Pay.

![Paypalexpresscheckout Flow 1](https://mintcdn.com/websaleag-44ee7ea6/qbW8uRSswcI46vuk/images/paypalexpresscheckout_flow-1.png?fit=max\&auto=format\&n=qbW8uRSswcI46vuk\&q=85\&s=c9832cf82e6d1486947e78229d929744)

### Einschalten

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckout-Txt>
   ExpressCheckout-Allow                        = yes
   ExpressCheckout-AllowDeliveryAddressOverride = yes
</PaymentPayPalCheckout-Txt>
```

| Parameter | Bedeutung |
| - | - |
| `ExpressCheckout-Allow` | `yes` bietet den Express-Checkout an. Voreinstellung ist aus |
| `ExpressCheckout-AllowDeliveryAddressOverride` | `yes` erlaubt dem Käufer, die von PayPal gelieferte Lieferadresse im Shop noch zu ändern. Voreinstellung ist aus |

Bei Google Pay und Apple Pay heißt der zweite Parameter `ExpressCheckout-AllowAddressOverride` und erlaubt zusätzlich das Überschreiben der Rechnungsadresse. Das Lieferland bleibt in beiden Fällen gesperrt.

Für die Fälle, in denen eine per Express gelieferte Adresse nicht beliefert werden kann, gibt es zwei Meldungstexte:

| Parameter | Bedeutung |
| - | - |
| `ShippingAddressUnserviceableErrorMessage` | Text, wenn die gewählte Lieferadresse nicht beliefert werden kann. Voreinstellung `Cannot ship to the selected address` |
| `ExpressCheckoutNoDeliveryMessage` | Text, wenn für die Bestellung überhaupt keine Versandart zur Verfügung steht |

> [!WARNING]
>
> Beide Texte erscheinen im Dialog des Bezahldienstes, nicht in Ihrem Shop. Die Voreinstellung ist englisch. Hinterlegen Sie deutsche Texte, sonst bekommt ein deutschsprachiger Käufer an dieser Stelle eine englische Fehlermeldung.

### Im Warenkorb ausgeben

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{ST-PPCExpress}
   <div id="ppc_express_container"></div>
{/ST-PPCExpress}
```

| Tag | Bedeutung |
| - | - |
| `{ST-PPCExpress}` | Klammerung, greift wenn der Express-Checkout angeboten werden kann |
| `{ST-PPCExpress_allowed}` | greift, wenn der Express-Checkout grundsätzlich freigeschaltet ist |
| `{ST-PPCExpress_selected}` | greift, wenn der Käufer den Express-Checkout benutzt hat |
| `~BT-PPCExpress~` | Schaltfläche, die den Express-Checkout startet |
| `~BT-PPCExpress_reload~` | lädt den Express-Vorgang neu |
| `~BT-PPCExpress_cancel~` | bricht den Express-Vorgang ab |

Der Shop prüft vor dem Anbieten des Express-Checkouts vier Bedingungen: Er muss freigeschaltet sein, der Warenkorb muss bestellfähig sein, die Gesamtsumme muss über null liegen, und die Zahlungsart darf nicht durch einen Ihrer Filter ausgeschlossen sein. Scheitert eine dieser Prüfungen, erscheint der Button nicht. Das ist der erste Ort, an dem Sie suchen, wenn er fehlt.

### Die Rechnungsadresse

PayPal liefert beim Express-Checkout eine Lieferadresse, aber nicht zwingend eine brauchbare Rechnungsadresse. Sie haben zwei Möglichkeiten, damit umzugehen.

**Variante A: Der Käufer entscheidet.** Sie zeigen ein Ankreuzfeld, mit dem er die Lieferadresse als Rechnungsadresse übernehmen kann.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<input type="checkbox"
       name="~WS-PPCExpressUseDeliveryAddressForBilling_input~"
       id="ppc_use_deliv_for_bill"
       ~WS-PPCExpressUseDeliveryAddressForBilling_checked~
       onchange="this.form.submit();">
<label for="ppc_use_deliv_for_bill">Rechnungsadresse entspricht der Lieferadresse</label>
```

**Variante B: Der Shop fragt die Rechnungsadresse ab.** Sie lassen das Ankreuzfeld weg und führen den Käufer regulär durch die Adresseingabe. Das ist der sicherere Weg, wenn Sie auf eine geprüfte Rechnungsadresse angewiesen sind, etwa beim Rechnungskauf.

Wegweiser: [Abweichende Lieferadresse abfragen](https://dokumentation.websale.de/v8s/adressdaten/abweichende-lieferadresse-abfragen.md)

## Die Zahlungsquelle hinterlegen (Vault)

Angemeldete Kunden können ihre PayPal-Zahlungsquelle im Kundenkonto hinterlegen und beim nächsten Einkauf ohne erneute Anmeldung bezahlen. PayPal nennt das den Vault. Er steht nur beim PayPal-Konto zur Verfügung, nicht bei den übrigen Zahlungsarten.

![Screendesign Paypal Vaulting 20240620 112957](https://mintcdn.com/websaleag-44ee7ea6/qbW8uRSswcI46vuk/images/screendesign_paypal_vaulting-20240620-112957.jpg?fit=max\&auto=format\&n=qbW8uRSswcI46vuk\&q=85\&s=0ac78398ae0f38247472a7b682053fbf)

Das Hinterlegen der Zahlungsquelle muss von WEBSALE für Ihren Shop freigeschaltet werden. Ohne diese Freischaltung liefern alle Vault-Tags leere Werte, ohne dass eine Fehlermeldung erscheint.

### Einschalten

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<PaymentPayPalCheckout-Txt>
   VaultDescription     = Zahlungsquelle für Ihre künftigen Einkäufe in unserem Shop
   SaveInVaultCbDefault = checked
   UseVaultCbDefault    = checked
</PaymentPayPalCheckout-Txt>
```

| Parameter | Bedeutung |
| - | - |
| `VaultDescription` | Der Text, den PayPal dem Käufer beim Hinterlegen anzeigt |
| `SaveInVaultCbDefault` | `checked` setzt beim ersten Aufruf das Häkchen „Zahlungsquelle speichern" vor |
| `UseVaultCbDefault` | `checked` setzt das Häkchen „gespeicherte Zahlungsquelle benutzen" vor |

> [!WARNING]
>
> Ein vorbelegtes `SaveInVaultCbDefault` bedeutet, dass der Käufer seine Zahlungsquelle speichert, ohne aktiv zugestimmt zu haben. Ob das für Ihren Shop zulässig ist, klären Sie vor dem Einschalten mit Ihrem Datenschutzverantwortlichen.

### Im Template

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-UsePayPalCheckout}
   <input type="checkbox"
          name="~WS-PPCSaveInVault_input~"
          id="ppc_save_in_vault"
          ~WS-PPCSaveInVault_checked~>
   <label for="ppc_save_in_vault">Zahlungsquelle für künftige Einkäufe speichern</label>
{/PPC-UsePayPalCheckout}
```

Das Feld heißt im abgesendeten Formular `ws_ppc_save_in_vault`. Sie brauchen den Namen nur, wenn Sie das Feld per JavaScript ansprechen wollen, im Template setzen Sie ihn immer über das Tag.

Ist bereits eine Zahlungsquelle hinterlegt, entfällt der Bezahlbereich. `{PPC-UsePayPalCheckout}` liefert dann `falsch`, und Sie zeigen stattdessen die gespeicherte Quelle an.

| Tag | Liefert |
| - | - |
| `{PPC-Vaulted}` | Klammerung, greift wenn eine Zahlungsquelle hinterlegt ist |
| `~PPC-VaultedEmailAddress~` | die PayPal-Adresse der hinterlegten Quelle |
| `~PPC-UserIDToken~` | das Token, mit dem das SDK einen wiederkehrenden Käufer erkennt |
| `~PPC-CreateSetupTokenLink~` | Link zum Hinterlegen einer Quelle ohne gleichzeitige Bezahlung |
| `~PPC-CreatePaymentTokenLink~` | Link zum Anlegen einer neuen Quelle in der Verwaltung |
| `~WS-PPCVaultManageLink~` | Link auf die Verwaltungsseite im Kundenkonto |

### Die Verwaltungsseite

Der Kunde verwaltet seine hinterlegte Zahlungsquelle auf einer eigenen Seite im Kundenkonto.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<Template-Txt>
   PPCVaultManage = ws_ppc_vault_manage.htm
</Template-Txt>
```

Die Seite kennt drei Zustände, die Sie über Klammerungen unterscheiden:

| Tag | Zustand |
| - | - |
| `{PPC-VaultOverview}` | Übersicht der hinterlegten Quelle |
| `{PPC-VaultConfirmDelete}` | Rückfrage vor dem Löschen |
| `~PPC-DeleteVaultConfirm~` | Link auf die Rückfrage |
| `~PPC-DeleteVaultNoConfirm~` | Link, der ohne Rückfrage löscht |
| `~BT-PPCVault_refresh~` | Schaltfläche, die die Anzeige neu lädt |

> [!WARNING]
>
> `~PPC-DeleteVaultNoConfirm~` löscht die hinterlegte Zahlungsquelle sofort und ohne Rückfrage. Verwenden Sie im Kundenkonto den Weg über `~PPC-DeleteVaultConfirm~`, es sei denn, Sie haben eine eigene Rückfrage davorgeschaltet.

### Zusammen mit dem Abo-Modul

Wiederkehrende Bestellungen aus dem Abo-Modul können über die hinterlegte Zahlungsquelle abgebucht werden. Dafür muss das Abo auf die Zahlungsart PayPal-Konto festgelegt sein.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{SUBS-FixedPaymentCodeUsed(37)}
   <p>Diese Abo-Bestellung wird über Ihr hinterlegtes PayPal-Konto abgerechnet.</p>
{/SUBS-FixedPaymentCodeUsed(37)}
```

Zum Wechseln der hinterlegten Quelle aus dem Abo heraus dient `~WS-OTP3Sub(updatePayPalSubscription)~`.

Wegweiser: [Abo-Modul](https://dokumentation.websale.de/v8s/marketing-funktionen/abo-modul.md)

## Testen

Jede Zahlungsart über PayPal Checkout hat einen eigenen Testmodus, der die Abwicklung in die PayPal-Sandbox umleitet.

| Zahlungsart | URL-Parameter |
| - | - |
| PayPal-Konto | `paypalcheckout-test` |
| Kauf auf Rechnung | `invoiceaccount-test` |
| Später bezahlen | `paypalcheckoutpaylater-test` |
| Kreditkarte | `creditcardclearing-test` |
| Lastschrift | `debitaccount-test` |
| Alternative Verfahren, Google Pay, Apple Pay | `paypalcheckoutapm-test` |

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.ihre-shop-url.de/?test=on&paypalcheckout-test=on
```

> [!WARNING]
>
> Das Umschalten eines Zahlungsart-Testmodus verwirft die laufende Sitzung und damit den Warenkorb. Schalten Sie den Testmodus deshalb **vor** dem Befüllen des Warenkorbs ein, nicht auf der Bestellübersicht.

Im Sandbox-Betrieb zeigt `{PPC-Sandbox}` an, dass nicht produktiv abgerechnet wird.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{PPC-Sandbox}
   <p class="hinweis">PayPal-Sandbox aktiv, es wird kein Geld bewegt.</p>
{/PPC-Sandbox}
```

Zum Untersuchen von Fehlern liefern drei Tags die unveränderte Antwort von PayPal: `~PPC-CreateOrderRawResponse~`, `~PPC-OrderDetailsRawResponse~` und `~PPC-CaptureAuthorizeRawResponse~`. Geben Sie diese Tags nur im Testbetrieb aus, sie enthalten vollständige Zahlungsdaten.

Wegweiser: [Testmodi des Shops ein- und ausschalten](https://dokumentation.websale.de/v8s/domains/testmodi-des-shops-ein-ausschalten.md) · Referenz: [ST-PaymentTest](https://dokumentation.websale.de/v8s/referenz/tags/st/seitenzustand-und-navigation.md)

## Hinweismeldungen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<NotifyMessages-Txt>
   PayPalCheckout-ClearingError  = Der Bezahlvorgang mit PayPal konnte nicht abgeschlossen werden. Bitte versuchen Sie es erneut oder wählen Sie eine andere Zahlungsart.
   PayPalCheckout-ClearingCancel = Sie haben den Bezahlvorgang mit PayPal abgebrochen.
</NotifyMessages-Txt>
```

Referenz: [Abschnitt NotifyMessages-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/texte-und-meldungen.md#notifymessages-txt)

## Verwandte Themen

* Wegweiser: [Zahlungsarten anlegen, für die allgemeinen Parameter, die Filter und die Ausgabe im Template](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/zahlungsarten-anlegen.md)
* Wegweiser: [Versandarten anlegen, für die Kopplung über `DelivererID-List`](https://dokumentation.websale.de/v8s/versandarten-anlegen/versandarten-anlegen)
* Wegweiser: [Abo-Modul, für wiederkehrende Bestellungen über die hinterlegte Zahlungsquelle](https://dokumentation.websale.de/v8s/marketing-funktionen/abo-modul.md)
* Wegweiser: Online-Shop-Betreuer, für das PayPal-Onboarding


## Related topics

- [PayPal](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paypal.md)
- [PPC- (PayPal Checkout)](https://dokumentation.websale.de/v8s/referenz/tags/ppc-paypal-checkout.md)
- [$wsPayPalCheckout - PayPal](https://dokumentation.websale.de/frontend/referenz/module/wspaypalcheckout.md)
- [PAYPALEXPRESS- (PayPal Express Checkout)](https://dokumentation.websale.de/v8s/referenz/tags/paypalexpress.md)
- [PayPal PLUS](https://dokumentation.websale.de/v8s/zahlungsarten-anlegen/paypal-plus.md)


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