Apple Pay
Ermöglichen Sie Kundinnen und Kunden die sichere Zahlungsabwicklung mit Apple Pay auf ihrem iPhone, iPad oder ihrer Apple Watch.
Apple Pay ist mit den meisten Stripe-Produkten und -Funktionen kompatibel. Nutzerinnen und Nutzer von Stripe können Apple Pay in iOS-Anwendungen ab iOS 9 sowie im Web in Safari ab iOS 10 oder macOS Sierra akzeptieren. Es fallen keine zusätzlichen Gebühren für die Verarbeitung von Apple Pay-Zahlungen an und die Preisgestaltung ist genau wie bei anderen Kartentransaktionen.
Apple Pay ist für Karteninhaber/innen bei teilnehmenden Banken in unterstützten Ländern verfügbar. Weitere Informationen finden Sie in der Dokumentation zu teilnehmenden Banken von Apple.
Zahlungsablauf
Unten finden Sie eine Demonstration des Apple Pay-Zahlungsablaufs auf Ihrer Bezahlseite:

Stripe und Apple Pay im Vergleich zu In-App-Käufen
For sales of physical goods, services, and certain other things, your app can accept Apple Pay or any other Stripe-supported payment method. Those payments are processed through Stripe, and you only need to pay Stripe’s processing fees. In some countries, you can link to an external website, such as Stripe Checkout, to accept payments on iOS for sales of digital products, content, and subscriptions.
Apple Pay akzeptieren
Stripe bietet Ihnen mehrere Möglichkeiten, Apply Pay als Zahlungsmethode hinzuzufügen. Weitere Informationen zur Integration finden Sie unter der jeweiligen Methode:
Sie können das React Native SDK von Stripe verwenden, um sowohl Zahlungen per Apple Pay als auch herkömmliche Kreditkartenzahlungen anzunehmen. Bevor Sie beginnen, müssen Sie sich im Apple Developer Program anmelden und Stripe auf Ihrem Server und in Ihrer App einrichten. Führen Sie dann die folgenden Schritte aus:
- Eine Apple-Händler-ID registrieren
- Neues Apple Pay-Zertifikat erstellen
- Mit Xcode integrieren
- Apple-Händler-ID in StripeProvider festlegen
- Prüfen, ob Apple Pay unterstützt wird
- Zahlungsformular anzeigen
- Zahlung an Stripe senden
Notiz
Wenn Sie React Native und Expo verwenden, wird Apple Pay von Expo Go nicht unterstützt. Um Apple Pay mit Expo zu verwenden, müssen Sie einen Entwicklungs-Build erstellen. Wenn Sie bereits ein Expo Go-Projekt haben, können Sie es zu einem Entwicklungs-Build migrieren.
Eine Apple-Händler-ID registrieren
Beantragen Sie eine Apple-Händler-ID, indem Sie sich auf der Apple Developer-Website für eine neue Kennung registrieren.
Tragen Sie eine Beschreibung und eine Kennung in das Formular ein. Die Beschreibung ist nur für Ihre internen Zwecke bestimmt und kann später geändert werden. Stripe empfiehlt, dass Sie den Namen Ihrer App als Kennung verwenden, zum Beispiel merchant.
.
Neues Apple Pay-Zertifikat erstellen
Erstellen Sie ein Zertifikat für Ihre App, um Zahlungsdaten zu verschlüsseln.
Gehen Sie zu den iOS-Zertifikateinstellungen im Dashboard, klicken Sie auf Neue Anwendung hinzufügen und befolgen Sie die Anleitung.
Laden Sie eine Certificate Signing Request (CSR)-Datei herunter, um ein sicheres Zertifikat von Apple zu erhalten, mit dem Sie Apple Pay verwenden können.
Eine CSR-Datei muss verwendet werden, um genau ein Zertifikat auszustellen. Wenn Sie Ihre Apple-Händler-ID wechseln, müssen Sie zu den iOS-Zertifikateinstellungen im Dashboard gehen, um eine neue CSR und ein Zertifikat zu erhalten.
Mit Xcode integrieren
Fügen Sie Ihrer App die Apple Pay-Funktion hinzu. Öffnen Sie in Xcode Ihre Projekteinstellungen, klicken Sie auf die Registerkarte Signing & Capabilities (Anmeldung und Funktionen) und fügen Sie die Apple Pay-Funktion hinzu. Möglicherweise werden Sie an dieser Stelle aufgefordert, sich bei Ihrem Entwicklerkonto anzumelden. Wählen Sie die zuvor erstellte Händler-ID aus. Ihre App sollte nun Apple Pay unterstützen.

Apple Pay-Funktion in Xcode aktivieren
Apple-Händler-ID in StripeProvider festlegen
Geben Sie in der Komponente StripeProvider
die Apple-Händler-ID an, für die Sie sich erfolgreich registriert haben:
import { StripeProvider } from '@stripe/stripe-react-native'; function App() { return ( <StripeProvider publishableKey="
" merchantIdentifier="merchant.com.{{YOUR_APP_NAME}}" > // Your app code here </StripeProvider> ); }pk_test_TYooMQauvdEDq54NiTphI7jx
Prüfen, ob Apple Pay unterstützt wird
Bevor Sie Apple Pay als Zahlungsoption in Ihrer App anzeigen, sollten Sie prüfen, ob die Geräte der Nutzer/innen Apple Pay unterstützen und ob im Wallet eine Karte hinterlegt ist:
import { PlatformPayButton, isPlatformPaySupported } from '@stripe/stripe-react-native'; function PaymentScreen() { const [isApplePaySupported, setIsApplePaySupported] = useState(false); useEffect(() => { (async function () { setIsApplePaySupported(await isPlatformPaySupported()); })(); }, [isPlatformPaySupported]); // ... const pay = async () => { // ... }; // ... return ( <View> {isApplePaySupported && ( <PlatformPayButton onPress={pay} type={PlatformPay.ButtonType.Order} appearance={PlatformPay.ButtonStyle.Black} borderRadius={4} style={{ width: '100%', height: 50, }} /> )} </View> ); }
Payment Intent erstellen
Serverseitig
Erstellen Sie einen Endpoint, der einen PaymentIntent mit einem Betrag und einer Währung generiert. Legen Sie den zu bezahlenden Betrag immer serverseitig fest, also in einer vertrauenswürdigen Umgebung, und nicht clientseitig. So wird verhindert, dass böswillige Kund/innen ihre eigenen Preise festlegen können.
Clientseitig
Erstellen Sie eine Methode, die einen PaymentIntent von Ihrem Server anfordert:
function PaymentScreen() { // ... const fetchPaymentIntentClientSecret = async () => { const response = await fetch(`${API_URL}/create-payment-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ some: 'value', }), }); const { clientSecret } = await response.json(); return clientSecret; }; // ... }
Fehlerbehebung
Wenn bei der Tokenerstellung Fehler mit der Stripe-API auftreten, liegt höchstwahrscheinlich ein Problem mit Ihrem Apple Pay-Zertifikat vor. In diesem Fall müssen Sie ein neues Zertifikat generieren und bei Stripe hochladen, wie auf dieser Seite beschrieben. Stellen Sie dabei sicher, dass Sie einen CSR verwenden, den Sie vom Dashboard abgerufen und nicht selbst generiert haben. Xcode legt alte Zertifikate oft fälschlicherweise im Zwischenspeicher ab. Stripe empfiehlt daher, zusätzlich zur Erstellung eines neuen Zertifikats auch eine neue Apple-Händler-ID zu erstellen.
Wenn Sie den Fehler erhalten, hat das folgenden Grund:
Sie haben Ihr Apple-Händler-Konto nicht bei Stripe hinterlegt.
Wahrscheinlich sendet Ihre App Daten, die mit einem früheren (nicht von Stripe stammenden) CSR/Zertifikat verschlüsselt wurden. Stellen Sie sicher, dass alle Zertifikate widerrufen werden, die durch nicht von Stripe stammende CSRs generiert wurden und Ihre Apple-Händler-ID aufweisen. Wenn dadurch das Problem nicht behoben wird, löschen Sie die Händler-ID in Ihrem Apple-Konto und legen Sie eine neue an. Erstellen Sie dann ein neues Zertifikat basierend auf dem zuvor verwendeten (von Stripe bereitgestellten) CSR. Sie müssen dieses neue Zertifikat nicht bei Stripe hochladen. Aktivieren und deaktivieren Sie die Apple Pay-Anmeldedaten in Ihrer App, um sicherzustellen, dass sie korrekt aktualisiert werden.
Zahlungsformular anzeigen
In your PlatformPayButton
’s onPress
prop, call confirmPlatformPayPayment
to open an Apple Pay sheet. To display the customer’s cart items on the payment sheet, pass the items as an argument. The final item must represent your company and the total; it appears in the sheet with the word “Pay” prepended (for example, “Pay iHats, Inc. $50”).
Notiz
Fügen Sie in Ihren Code, der die Kundenaktion abwickelt, keine komplexen oder asynchronen Aktionen ein, bevor Sie das Zahlungsformular anzeigen. Wenn die Nutzeraktion das Zahlungsformular nicht direkt aufruft, gibt Apple Pay einen Fehler zurück.
import { confirmPlatformPayPayment } from '@stripe/stripe-react-native'; function PaymentScreen() { // ... see above const pay = async () => { const clientSecret = await fetchPaymentIntentClientSecret() const { error, paymentIntent } = await confirmPlatformPayPayment( clientSecret, { applePay: { cartItems: [ { label: 'Example item name', amount: '14.00', paymentType: PlatformPay.PaymentType.Immediate, }, { label: 'Tax', amount: '1.60', paymentType: PlatformPay.PaymentType.Immediate, }, { label: 'iHats, Inc.', amount: '15.60', paymentType: PlatformPay.PaymentType.Immediate, }, ], merchantCountryCode: 'US', currencyCode: 'USD', requiredShippingAddressFields: [ PlatformPay.ContactField.PostalAddress, ], requiredBillingContactFields: [PlatformPay.ContactField.PhoneNumber], }, } ); if (error) { // handle error } else { Alert.alert('Success', 'Check the logs for payment intent details.'); console.log(JSON.stringify(paymentIntent, null, 2)); } }; // ... see above }
OptionalZahlungsmethode erstellenClientseitig
Wenn Sie Ihre Zahlung auf Ihrem Server bestätigen, können Sie Apple Pay verwenden, um nur eine PaymentMethod
zu erfassen, anstatt eine Zahlung zu bestätigen. Rufen Sie dazu die Methode createPlatformPayPaymentMethod
auf:
import {PlatformPayButton, isPlatformPaySupported, createPlatformPayPaymentMethod} from '@stripe/stripe-react-native'; function PaymentScreen() { const [isApplePaySupported, setIsApplePaySupported] = useState(false); useEffect(() => { (async function () { setIsApplePaySupported(await isPlatformPaySupported()); })(); }, [isPlatformPaySupported]); const createPaymentMethod = async () => { const { error, paymentMethod } = await createPlatformPayPaymentMethod({ applePay: { cartItems: [ { label: 'Example item name', amount: '14.00', paymentType: PlatformPay.PaymentType.Immediate, }, { label: 'Total', amount: '12.75', paymentType: PlatformPay.PaymentType.Immediate, }, ], merchantCountryCode: 'US', currencyCode: 'USD', }, }); if (error) { Alert.alert(error.code, error.message); return; } else if (paymentMethod) { Alert.alert( 'Success', `The payment method was created successfully. paymentMethodId: ${paymentMethod.id}` ); } }; return ( <View > {isApplePaySupported && ( <PlatformPayButton onPress={createPaymentMethod} type={PlatformPay.ButtonType.SetUp} appearance={PlatformPay.ButtonStyle.WhiteOutline} style={{ width: '65%', height: 50, }} /> )} </View> ); }
OptionalWiederkehrende ZahlungenClientseitig
In iOS 16 oder höher können Sie Händler-Token übernehmen, indem Sie das Feld request
in den applePay
-Parameter-Objekten von confirmPlatformPayPayment()
und confirmPlatformPaySetupIntent
festlegen.
await confirmPlatformPayPayment( clientSecret, { applePay: { // Make sure to include the rest of the necessary fields request: { type: PlatformPay.PaymentRequestType.Recurring, description: 'String describing my payment', managementUrl: 'www.<a URL where the user can update the payment method for the recurring payment>.com', billing: { paymentType: PlatformPay.PaymentType.Recurring, intervalUnit: PlatformPay.IntervalUnit.Month, intervalCount: 3, label: 'My label', amount: '39.00', }, }, }, } );
Weitere Informationen zur Verwendung wiederkehrender Zahlungen mit Apple Pay finden Sie in der PassKit-Dokumentation von Apple.
OptionalSendungsverfolgungClientseitig
Um die Bestellverfolgung in iOS 16 oder höher einzuführen, verwenden Sie den Rückruf setOrderTracking
für die PlatformPayButton
-Komponente.
Gehen Sie in Ihrer Implementierung wie folgt vor:
- Rufen Sie die Bestelldetails für die abgeschlossene Bestellung von Ihrem Server ab.
- Rufen Sie den angegebenen Abschluss-Handler in
setOrderTracking
mit den Ergebnissen von Ihrem Server auf.
<PlatformPayButton // Make sure to include the rest of the necessary props setOrderTracking={(completion) => { const { orderIdentifier, orderType, authToken, webServiceUrl } = fetchOrderDetailsFromMyBackend(); completion(orderIdentifier, orderType, authToken, webServiceUrl); }} />
Weitere Informationen zur Bestellungsnachverfolgung finden Sie in der Dokumentation zu Wallet-Bestellungen von Apple.
Apple Pay testen
Um Apple Pay zu testen, müssen Sie eine echte Kreditkartennummer und Ihre API-Testschlüssel verwenden. Stripe erkennt, dass Sie sich im Test-Modus befinden und gibt ein Testkarten-Token zurück, das Sie verwenden können, sodass Sie Testzahlungen mit einer Live-Karte durchführen können, ohne diese zu belasten.
Sie können Stripe Testkarten oder Apple Pay-Testkarten nicht in Apple Pay Wallets speichern, um Apple Pay zu testen.