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
Für den Verkauf von physischen Waren, Dienstleistungen und bestimmten anderen Dingen kann Ihre App Apple Pay oder jede andere von Stripe unterstützte Zahlungsmethode akzeptieren. Diese Zahlungen werden über Stripe abgewickelt und Sie müssen nur die Bearbeitungsgebühren von Stripe zahlen. Der Verkauf von digitalen Produkten, Inhalten und anderen Dingen muss jedoch über die In-App-Käufe von Apple erfolgen. Diese Zahlungen werden von Apple verarbeitet und unterliegen deren Transaktionsgebühren.
Weitere Informationen darüber, bei welchen Verkäufen In-App-Käufe verwendet werden müssen, finden Sie in den App Store-Überprüfungsrichtlinien von Apple.
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
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
Rufen Sie in der onPress
-Eigenschaft von PlatformPayButton
confirmPlatformPayPayment
auf, um ein Apple Pay-Formular zu öffnen. Um die Artikel des Warenkorbs der Kundin/des Kunden auf dem Zahlungsformular anzuzeigen, übergeben Sie die Artikel als Argument.
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 } = await confirmPlatformPayPayment( clientSecret, { 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', 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 }
Apple Pay testen
Stripe-Testkarteninformationen können nicht in der App Wallet in iOS gespeichert werden. Stripe erkennt aber, wenn Sie Ihre Test-API-Schlüssel verwenden, und gibt ein Testkarten-Token zurück. So können Sie Testzahlungen mit einer Live-Karte durchführen, ohne dass diese belastet wird.