Weiter zum Inhalt
Konto erstellen
oder
anmelden
Das Logo der Stripe-Dokumentation
/
KI fragen
Konto erstellen
Anmelden
Jetzt starten
Zahlungen
Umsatz
Plattformen und Marktplätze
Geldmanagement
Entwickler-Tools

Schaltfläche für ZahlungsanfrageVeraltet

Zahlungs- und Adressdaten von Kund/innen erfassen, die Apple Pay, Google Pay oder Link nutzen.

Legacy-Funktion

Der Inhalt auf dieser Seite bezieht sich auf ein Legacy-Element. Verwenden Sie stattdessen das Express Checkout Element. Wenn Sie bereits über eine Integration der Schaltfläche für Zahlungsanfragen verfügen, verwenden Sie unseren Migrationsleitfaden, um zum Express Checkout Element zu wechseln.

Die Schaltfläche für Zahlungsanfragen hat die folgenden Einschränkungen:

  • Unterstützt nur Kartenzahlungsmethoden
  • Link wird unterstützt, aber nur, wenn Kartenfinanzierungsquellen verwendet werden
  • Zeigt nur eine Zahlungsoption an

Demo

Vorsicht

Entweder wird die Payment Request API von Ihrem Browser nicht unterstützt oder Sie haben keine gespeicherte Zahlungsmethode. Um die Live-Demo für die Schaltfläche „Zahlungsanfrage“ zu testen, wechseln Sie zu einem der folgenden unterstützen Browser und speichern Sie eine Zahlungsmethode.

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.

Voraussetzungen

Bevor Sie beginnen, müssen Sie:

  • Überprüfen Sie die Anforderungen für jeden Zahlungsschaltflächentyp:
    • Für Apple Pay ist macOS 10.12.1+ oder iOS 10.1+ erforderlich.
    • Kompatible Geräte unterstützen automatisch Google Pay.
  • Registrieren Sie Ihre Domain sowohl in einer Sandbox als auch im Live-Modus.
  • Fügen Sie Ihrem Browser eine Zahlungsmethode hinzu. Sie können beispielsweise eine Karte in Chrome speichern, eine Karte zu Ihrem Google Pay-Konto hinzufügen oder eine Karte zu 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

Installieren Sie React Stripe.js und den Stripe.js-Loader aus dem öffentlichen npm-Register.

Command Line
npm install --save @stripe/react-stripe-js @stripe/stripe-js

Notiz

Mit der Demo in CodeSandbox können Sie React Stripe.js ausprobieren, ohne ein neues Projekt erstellen zu müssen.

Stripe.js und Elements zu Ihrer Seite hinzufügen

Um Element-Komponenten zu verwenden, schließen Sie die Komponente Ihrer Bezahlseite in einen Elements-Anbieter ein. Rufen Sie loadStripe mit Ihrem veröffentlichbaren Schlüssel auf und übergeben Sie das zurückgegebene Promise an den Elements-Anbieter.

index.jsx
import React from 'react'; import ReactDOM from 'react-dom'; import {Elements} from '@stripe/react-stripe-js'; import {loadStripe} from '@stripe/stripe-js'; import CheckoutForm from './CheckoutForm'; // Make sure to call `loadStripe` outside of a component's render to avoid // recreating the `Stripe` object on every render. const stripePromise = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); function App() { return ( <Elements stripe={stripePromise}> <CheckoutForm /> </Elements> ); }; ReactDOM.render(<App />, document.getElementById('root'));

paymentRequest Instanz erstellen
Clientseitig

Erstellen Sie in der Komponente Ihres Bezahlformulars eine Instanz von stripe.paymentRequest mit allen erforderlichen Optionen.

import React, {useState, useEffect} from 'react'; import {PaymentRequestButtonElement, useStripe} from '@stripe/react-stripe-js'; const CheckoutForm = () => { const stripe = useStripe(); const [paymentRequest, setPaymentRequest] = useState(null); useEffect(() => { if (stripe) { const pr = stripe.paymentRequest({ country: 'US', currency: 'usd', total: { label: 'Demo total', amount: 1099, }, requestPayerName: true, requestPayerEmail: true, }); } }, [stripe]); // Use a traditional checkout form. return 'Insert your form or button component here.'; }

Notiz

Verwenden Sie den Parameter requestPayerName, um die Rechnungsadresse der zahlenden Person für Apple Pay zu erfassen. Mithilfe der Rechnungsadresse können Sie die Verifizierung der Adresse durchführen und betrügerische Zahlungen blockieren. Alle anderen Zahlungsmethoden erfassen die Rechnungsadresse automatisch, falls sie angegeben ist.

Schaltflächenelement für Zahlungsanfragen rendern
Clientseitig

Überprüfen Sie mithilfe von canMakePayment, ob die Kundin/der Kunde über eine aktive Zahlungsmethode verfügt. Wenn dies der Fall ist, rendern Sie das Element <PaymentRequestButtonElement>. Fall dies nicht der Fall ist, können Sie das Element nicht rendern. In diesem Fall empfehlen wir, ein herkömmliches Bezahlformular anzuzeigen.

import React, {useState, useEffect} from 'react'; import {PaymentRequestButtonElement, useStripe} from '@stripe/react-stripe-js'; const CheckoutForm = () => { const stripe = useStripe(); const [paymentRequest, setPaymentRequest] = useState(null); useEffect(() => { if (stripe) { const pr = stripe.paymentRequest({ country: 'US', currency: 'usd', total: { label: 'Demo total', amount: 1099, }, requestPayerName: true, requestPayerEmail: true, }); // Check the availability of the Payment Request API. pr.canMakePayment().then(result => { if (result) { setPaymentRequest(pr); } }); } }, [stripe]); if (paymentRequest) { return <PaymentRequestButtonElement options={{paymentRequest}} /> } // Use a traditional checkout form. return 'Insert your form or button component here.'; }

Erstellen Sie ein PaymentIntent
Serverseitig

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.

Command Line
cURL
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card

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ßen
Clientseitig

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 token- oder 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.

Darüber hinaus gelten für jede Zahlungsmethode und jeden Browser bestimmte Anforderungen:

Safari

  • Safari auf einem Mac mit macOS Sierra oder neuer.
  • Ein kompatibles Gerät mit einer Karte in seiner Wallet, das mit Handoff mit Ihrem Mac gekoppelt ist, oder ein Mac mit TouchID. Anweisungen dazu finden Sie auf der Apple-Supportseite.
  • Eine registrierte Domain bei Apple Pay.
  • Wenn Sie einen iFrame verwenden, muss sein Ursprung mit dem Ursprung der obersten Ebene übereinstimmen (mit Ausnahme von Safari 17+, wenn Sie das Attribut allow="payment" angeben). Zwei Seiten haben denselben Ursprung, wenn Protokoll, Host (vollständiger Domain-Name) und Port (falls angegeben) für beide Seiten gleich sind.

Mobile Safari

  • Mobile Safari unter iOS 10.1 oder neuer.
  • Eine Karte in Ihrer Wallet (gehen Sie zu Einstellungen > Wallet & Apple Pay).
  • Eine registrierte Domain bei Apple Pay.
  • Wenn Sie einen iFrame verwenden, muss sein Ursprung mit dem Ursprung der obersten Ebene übereinstimmen (mit Ausnahme von Safari 17+, wenn Sie das Attribut allow="payment" angeben). Zwei Seiten haben denselben Ursprung, wenn Protokoll, Host (vollständiger Domain-Name) und Port (falls angegeben) für beide Seiten gleich sind.

Ab iOS 16 funktioniert Apple Pay möglicherweise in einigen Nicht-Safari-Mobilbrowsern, wenn eine Karte in Ihrer Wallet gespeichert ist.

Versandinformationen erfassen

Um Versandinformationen zu erfassen, geben Sie beim Erstellen der Zahlungsanfrage zunächst requestShipping: true an.

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 ermitteln, wann Kundinnen/Kunden eine Versandadresse auswählen. Verwenden Sie die Adresse, um gültige Versandoptionen von Ihrem Server abzurufen, den Gesamtbetrag zu aktualisieren oder andere Vorgänge der Geschäftslogik durchzuführen. Die im Ereignis shippingaddresschange enthaltenen Adressinformationen sind möglicherweise durch den Browser anonymisiert, um sensible Daten zu verbergen, die zur 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, }); } });

Rechnungsposten anzeigen

Verwenden Sie displayItems, um PaymentItem-Objekte und eine Preisaufschlüsselung in der Zahlungsschnittstelle des Browsers anzuzeigen.

const pr = 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 die folgenden Parameter, um das Element anzupassen:

const options = { 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%'. }, } } <PaymentRequestButtonElement options={options} />

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

Verwenden Sie die Schaltfläche für Zahlungsanfragen in Stripe Connect.

Connect-Plattformen müssen bei Verwendung der Schaltfläche für Zahlungsanfragen möglicherweise zusätzliche Schritte durchführen.

  1. Wenn Sie Direct Charges erstellen oder den Token zu einem Kunden/einer Kundin für das verbundene Konto hinzufügen, müssen Sie die Option stripeAccount in der Stripe-Instanz des Frontends festlegen:

    const stripe = Stripe(
    'pk_test_TYooMQauvdEDq54NiTphI7jx'
    , { apiVersion: "2025-05-28.basil", stripeAccount: 'CONNECTED_STRIPE_ACCOUNT_ID', });
  2. Wenn Sie bei der Erstellung des Payment oder Setup Intent on_behalf_of angegeben haben, müssen Sie den gleichen Wert mit der Option onBehalfOf an die paymentRequest-Instanz übergeben:

    const paymentRequest = stripe.paymentRequest({ country: 'US', currency: 'usd', total: { label: 'Demo total', amount: 1099, }, requestPayerName: true, requestPayerEmail: true, onBehalfOf: 'CONNECTED_STRIPE_ACCOUNT_ID', });
  3. Registrieren Sie alle Domains, auf denen Sie die Schaltfläche für Zahlungsanfragen anzeigen möchten.

  1. Bevor Sie die PaymentRequest-Instanz in Ihrem Frontend erstellen, legen Sie die Option stripeAccount für die Stripe-Instanz fest:

    const stripe = Stripe(
    'pk_test_TYooMQauvdEDq54NiTphI7jx'
    , { apiVersion: "2025-05-28.basil", stripeAccount: 'CONNECTED_STRIPE_ACCOUNT_ID', });
  2. 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.

Stripe Ihren Kundinnen/Kunden anzeigen

Stripe erfasst Informationen über Kundeninteraktionen mit Elements , um Ihnen Dienste bereitzustellen, Betrug vorzubeugen und seine Dienste zu verbessern. Dies umfasst auch die Verwendung von Cookies und IP-Adressen, um zu ermitteln, welche Elements ein/e Kund/in während einer einzelnen Checkout-Sitzung gesehen hat. Sie sind dafür verantwortlich, alle Rechte und Zustimmungen offenzulegen und einzuholen, die Stripe benötigen, um Ihre Daten auf diese Weise zu nutzen. Weitere Informationen finden Sie in unserem Datenschutzcenter.

Siehe auch

  • Weitere Infos zu Apple Pay
  • Weitere Infos zu Google Pay
War diese Seite hilfreich?
JaNein
Benötigen Sie Hilfe? Kontaktieren Sie den Kundensupport.
Nehmen Sie an unserem Programm für frühzeitigen Zugriff teil.
Schauen Sie sich unser Änderungsprotokoll an.
Fragen? Sales-Team kontaktieren.
LLM? Lesen Sie llms.txt.
Unterstützt von Markdoc