Schaltfläche für ZahlungsanfrageVeraltet
Zahlungs- und Adressdaten von Kund/innen erfassen, die Apple Pay, Google Pay oder Link nutzen.
Legacy feature
The content on this page refers to a Legacy Element. Use the Express Checkout Element instead. If you have an existing Payment Request Button integration, use our migration guide to switch to Express Checkout Element.
The Payment Request Button has the following limitations:
- Only supports card payment methods
- Link is supported, but only when card funding sources are used
- Only shows one payment option
Demo
Vorsicht
Das Schaltfläche für Zahlungsanfragen-Element zeigt dynamisch Wallet-Optionen während des Bezahlvorgangs an und bietet Ihnen eine zentrale Integration für Apple Pay, Google Pay und Link. Alternativ können Sie mit dem Express Checkout Element Ihren Kundinnen/Kunden mehrere One-Click-Zahlungsschaltflächen anbieten. Vergleichen Sie das Express Checkout Element und die Schaltfläche für Zahlungsanfragen.
Kundinnen und Kunden sehen Apple Pay oder Google Pay, wenn sie diese Funktionen auf ihrem Gerät aktiviert haben und je nachdem, welchen Browser sie verwenden. Wenn Link angezeigt wird, könnte es sein, weil Kundinnen/Kunden:
- Sie haben auf ihrem Gerät weder Apple Pay noch Google Pay aktiviert.
- Verwenden Sie Chrome mit aktiven, authentifizierten Link-Sitzungen.
Browser + Wallet | Zahlungsschaltfläche |
---|---|
Safari + Apple Pay aktiviert | Apple Pay |
Chrome + Link authentifiziert | Link |
Chrome + Google Pay aktiviert und Link nicht authentifiziert | Google Pay |
Chrome unter iOS 16 + Apple Pay und Google Pay aktiviert | Apple Pay |
Beliebiger Browser + Kein aktives Apple Pay oder Google Pay | Link |
Voraussetzungen
Bevor Sie beginnen, müssen Sie folgende Schritte durchführen:
Überprüfen Sie die Anforderungen für jeden Zahlungsschaltflächentyp:
- Apple Pay und Google Pay werden für IP-Adressen in Indien nicht angezeigt, planen Sie Ihre Integrationstests daher entsprechend.
- Für Apple Pay ist macOS 10.12.1+ oder iOS 10.1+ erforderlich.
- Kompatible Geräte unterstützen automatisch Google Pay.
Registrieren und verifizieren Sie Ihre Domain im Test-Modus und im Live-Modus.
Ihrem Browser eine Zahlungsmethode hinzufügen. Beispiel: Sie können eine Karte in Chrome speichern oder Ihrem Google Pay-Konto bzw. Ihrer Wallet für Safari hinzufügen.
Ihre Anwendung über HTTPS bereitstellen. Dies ist eine Voraussetzung sowohl in der Entwicklung als auch in der Produktion. Eine Möglichkeit, um zu beginnen, ist die Nutzung eines Dienstes wie ngrok.
Stripe Elements einrichtenClientseitig
Elements ist als Teil von Stripe.js verfügbar. Nehmen Sie es in Ihre Seite auf und erstellen Sie einen Container, der für das Element paymentRequestButton
verwendet wird:
<script src="https://js.stripe.com/v3/"></script> <div id="payment-request-button"> <!-- A Stripe Element will be inserted here. --> </div>
Ihr veröffentlichbarer Stripe-API-Schlüssel ist ebenfalls erforderlich, da Stripe damit Ihre Website identifiziert:
const stripe = Stripe(
, { apiVersion: "2024-11-20.acacia", });'pk_test_TYooMQauvdEDq54NiTphI7jx'
paymentRequest-Instanz erstellenClientseitig
Create an instance of stripe.paymentRequest with all required options.
const paymentRequest = stripe.paymentRequest({ country: 'US', currency: 'usd', total: { label: 'Demo total', amount: 1099, }, requestPayerName: true, requestPayerEmail: true, });
Notiz
Verwenden Sie den Parameter requestPayerName
, um die Rechnungsadresse der zahlenden Person für Apple Pay und Link zu erfassen. Sie können die Rechnungsadresse verwenden, um eine Adressprüfung durchzuführen und betrügerische Zahlungen zu blockieren. Alle anderen Zahlungsmethoden erfassen die Rechnungsadresse automatisch, wenn diese verfügbar ist.
paymentRequestButton erstellen und verbindenClientseitig
Erstellen Sie das Element paymentRequestButton
und überprüfen Sie mithilfe von canMakePayment()
, ob Ihre Kundin/Ihr Kunde über eine aktive Zahlungsmethode verfügt. Wenn dies der Fall ist, verbinden Sie das Element mit dem Container, um die Schaltfläche für Zahlungsanfragen anzuzeigen. Wenn keine aktive Zahlungsmethode vorhanden ist, können Sie das Element nicht verbinden. Wir empfehlen in diesem Fall, ein herkömmliches Bezahlformular anzuzeigen.
Notiz
Wenn Sie Apple Pay mit der Schaltfläche für Zahlungsanfragen akzeptieren, müssen Sie Apple Pay laut der Richtlinien von Apple auf Ihrer Website als Hauptzahlungsoption anbieten. Intern verwendet die Schaltfläche für Zahlungsanfragen die Apple Pay canMakePaymentWithActiveCard
-API.
const elements = stripe.elements(); const prButton = elements.create('paymentRequestButton', { paymentRequest, }); (async () => { // Check the availability of the Payment Request API first. const result = await paymentRequest.canMakePayment(); if (result) { prButton.mount('#payment-request-button'); } else { document.getElementById('payment-request-button').style.display = 'none'; } })();
PaymentIntent erstellenServerseitig
Stripe verwendet ein PaymentIntent-Objekt, um Ihre Absicht darzustellen, eine Kundenzahlung einzuziehen. Dabei werden die Abbuchungsversuche und Zahlungsstatusänderungen während des gesamten Vorgangs dokumentiert.
Erstellen Sie einen PaymentIntent
auf Ihrem Server mit einem Betrag und einer Währung. Entscheiden Sie immer auf der Server-Seite, einer vertrauenswürdigen Umgebung, im Gegensatz zum Client, wie viel berechnet werden soll. Dadurch wird verhindert, dass böswillige Kund/innen ihre eigenen Preise wählen können.
Im zurückgegebenen PaymentIntent ist ein Client-Geheimnis enthalten, mit dem Sie den Zahlungsvorgang sicher abschließen können, anstatt das gesamte PaymentIntent-Objekt zu übergeben. Senden Sie das Client-Geheimnis zur Verwendung im nächsten Schritt zurück an den Client.
Zahlung abschließenClientseitig
Achten Sie auf das Ereignis paymentmethod
, um ein PaymentMethod-Objekt zu empfangen. Übergeben Sie die PaymentMethod-ID und das Client-Geheimnis des PaymentIntent an stripe.confirmCardPayment, um die Zahlung abzuschließen.
paymentRequest.on('paymentmethod', async (ev) => { // Confirm the PaymentIntent without handling potential next actions (yet). const {paymentIntent, error: confirmError} = await stripe.confirmCardPayment( clientSecret, {payment_method: ev.paymentMethod.id}, {handleActions: false} ); if (confirmError) { // Report to the browser that the payment failed, prompting it to // re-show the payment interface, or show an error message and close // the payment interface. ev.complete('fail'); } else { // Report to the browser that the confirmation was successful, prompting // it to close the browser payment method collection interface. ev.complete('success'); // Check if the PaymentIntent requires any actions and, if so, let Stripe.js // handle the flow. If using an API version older than "2019-02-11" // instead check for: `paymentIntent.status === "requires_source_action"`. if (paymentIntent.status === "requires_action") { // Let Stripe.js handle the rest of the payment flow. const {error} = await stripe.confirmCardPayment(clientSecret); if (error) { // The payment failed -- ask your customer for a new payment method. } else { // The payment has succeeded -- show a success message to your customer. } } else { // The payment has succeeded -- show a success message to your customer. } } });
Vorsicht
Der Kunde/die Kundin kann die Zahlungsoberfläche in einigen Browsern schließen, auch nachdem er/sie die Zahlung autorisiert hat. Dies bedeutet, dass Sie möglicherweise ein Abbruchereignis für Ihr PaymentRequest-Objekt erhalten, nachdem Sie ein paymentmethod
-Ereignis empfangen haben. Wenn Sie das Ereignis cancel
erneut als Hook zum Stornieren einer Kundenbestellung verwenden, erstatten Sie auch die soeben erstellte Zahlung.
Integration testen
Um Ihre Integration zu testen, müssen Sie HTTPS und einen unterstützten Browser verwenden. Wenn Sie das paymentRequestButton
Element in einem iFrame verwenden, muss das allow-Attribut des iFrame auf „Zahlung“ gesetzt werden.
Regionale TestsIndien
Stripe Elements unterstützt weder Google Pay noch Apple Pay für Stripe-Konten und Kundinnen und Kunden in Indien. Daher können Sie Ihre Google Pay- oder Apple Pay-Integration nicht testen, wenn sich die IP-Adresse der testenden Person in Indien befindet, selbst wenn sich das Stripe-Konto außerhalb Indiens befindet.
Zusätzlich gelten für jede Zahlungsmethode und jeden Browser spezifische Anforderungen:
Versandinformationen erfassen
Um Versandinformationen zu erfassen, nehmen Sie zunächst die Zeile requestShipping: true
in die Erstellung der Zahlungsanfrage auf.
In diesem Schritt können Sie auch ein Array mit shippingOptions
bereitstellen, wenn die Adresse der Kundin/des Kunden keine Auswirkungen auf Ihre Versandoptionen hat.
const paymentRequest = stripe.paymentRequest({ country: 'US', currency: 'usd', total: { label: 'Demo total', amount: 1099, }, requestShipping: true, // `shippingOptions` is optional at this point: shippingOptions: [ // The first shipping option in this list appears as the default // option in the browser payment interface. { id: 'free-shipping', label: 'Free shipping', detail: 'Arrives in 5 to 7 days', amount: 0, }, ], });
Überwachen Sie als Nächstes das Ereignis shippingaddresschange
, um zu erkennen, wann eine Kundin/ein Kunde eine Versandadresse auswählt. Verwenden Sie die Adresse, um gültige Versandoptionen von Ihrem Server abzurufen, die Summe zu aktualisieren oder eine andere Geschäftslogik durchzuführen. Sie können die Adressdaten im Ereignis shippingaddresschange
im Browser anonymisieren, um keine sensiblen Informationen preiszugeben, die für die Berechnung der Versandkosten nicht erforderlich sind.
Der/die Kund/in muss an dieser Stelle gültige shippingOptions
angeben, um mit dem Ablauf fortzufahren.
paymentRequest.on('shippingaddresschange', async (ev) => { if (ev.shippingAddress.country !== 'US') { ev.updateWith({status: 'invalid_shipping_address'}); } else { // Perform server-side request to fetch shipping options const response = await fetch('/calculateShipping', { data: JSON.stringify({ shippingAddress: ev.shippingAddress }) }); const result = await response.json(); ev.updateWith({ status: 'success', shippingOptions: result.supportedShippingOptions, }); } });
Einzelposten anzeigen
Use displayItems to display PaymentItem objects and show the price breakdown in the browser’s payment interface.
const paymentRequest = stripe.paymentRequest({ country: 'US', currency: 'usd', total: { label: 'Demo total', amount: 2000, }, displayItems: [ { label: 'Sample item', amount: 1000, }, { label: 'Shipping cost', amount: 1000, } ], });
Schaltfläche anpassen
Verwenden Sie folgende Parameter, um das Element anzupassen:
elements.create('paymentRequestButton', { paymentRequest, style: { paymentRequestButton: { type: 'default', // One of 'default', 'book', 'buy', or 'donate' // Defaults to 'default' theme: 'dark', // One of 'dark', 'light', or 'light-outline' // Defaults to 'dark' height: '64px', // Defaults to '40px'. The width is always '100%'. }, }, });
Verwendung Ihrer eigenen Schaltfläche
Falls Sie Ihre eigene Schaltfläche gestalten möchten, anstatt das Element paymentRequestButton
zu verwenden, können Sie basierend auf dem Ergebnis von paymentRequest.canMakePayment() Ihre eigene individuelle Schaltfläche anzeigen. Verwenden Sie anschließend paymentRequest.show(), um bei einem Klick auf die Schaltfläche die Browseroberfläche anzuzeigen.
Falls Sie Ihre eigene Schaltfläche erstellen, befolgen Sie die Human Interface Guidelines für Apple Pay und die Brand Guidelines für Google Pay.
Vorsicht
Link wird in nutzerdefinierten Schaltflächenkonfigurationen nicht unterstützt und wird den Kundinnen und Kunden nicht angezeigt, wenn Sie sich für die Verwendung einer Schaltfläche entscheiden.
Ein Apple Pay-Händler-Token für vom Händler initiierte Transaktionen hinzufügen
Richten Sie Ihre Schaltfläche für Zahlungsanfragen ein, um eine Apple Pay MPAN anzufordern. Damit können Sie vom Händler initiierte Transaktionen (Merchant Initiated Transactions, MIT) für wiederkehrende, automatisch geladene oder zurückgestellte Zahlungen ermöglichen.
- Erstellen Sie eine Instanz der Zahlungsanfrage.
- Übergeben Sie das
applePay
-Objekt, das für Ihr MPAN-Anwendungsszenario relevant ist (über das Dropdown-Menü können Sie Codebeispiele verschiedener Anwendungsszenarien anzeigen). - Nehmen Sie relevante Parameter für Ihr Anwendungsszenario auf.
Schaltfläche für Zahlungsanfrage mit Stripe Connect verwenden
Connect-Plattformen, die für das verbundene Konto Direct Charges erstellen oder das Token einem Customer-Objekt hinzufügen, müssen bei Verwendung der Schaltfläche für Zahlungsanfragen zusätzliche Schritte durchführen.
- Bevor Sie die
PaymentRequest
-Instanz in Ihrem Frontend erstellen, legen Sie die OptionstripeAccount
für die Stripe-Instanz fest:
const stripe = Stripe(
, { apiVersion: "2024-11-20.acacia", stripeAccount: 'CONNECTED_STRIPE_ACCOUNT_ID', });'pk_test_TYooMQauvdEDq54NiTphI7jx'
- Registrieren Sie alle Domains, auf denen Sie die Schaltfläche für Zahlungsanfragen anzeigen möchten.
Link für die Schaltfläche für Zahlungsanfragen
When new customers come to your site, they can use Link in the Payment Request Button to pay with their saved payment details. With Link, they don’t need to manually enter their payment information. Link requires domain registration.
Disclose Stripe to your customers
Stripe collects information on customer interactions with Elements to provide services to you, prevent fraud, and improve its services. This includes using cookies and IP addresses to identify which Elements a customer saw during a single checkout session. You’re responsible for disclosing and obtaining all rights and consents necessary for Stripe to use data in these ways. For more information, visit our privacy center.