Zahlungen für digitale Waren auf iOS mit benutzerdefiniertem Bezahlvorgang akzeptieren
Öffnen Sie Ihren eigenen benutzerdefinierten Bezahlvorgang, um digitale In-App-Waren und Abonnements mit Payment Element zu verkaufen.
In einigen Ländern können Sie auf eine externe Website verlinken, um Zahlungen in iOS zu akzeptieren. In diesem Leitfaden wird beschrieben, wie Sie ein Abonnement in Ihrer App verkaufen, indem Sie mithilfe von Elements eine Weiterleitung auf Ihre eigene Bezahlseite veranlassen. Wenn Sie bereits über eine eigene Bezahlseite mit Elements verfügen, finden Sie weitere Informationen unter Einrichten von universellen Links.
Notiz
Sales-Team kontaktieren Wenn Ihr Unternehmen neu bei Stripe ist, ein hohes Zahlungsvolumen verarbeitet und fortgeschrittene Integrationsanforderungen hat.
Sie werden Folgendes entwickeln
Notiz
Dieser Leitfaden beschreibt nur das Verfahren für den Verkauf von digitalen Waren in der App. Wenn Sie Folgendes verkaufen, lesen Sie stattdessen den Leitfaden zum nativen Bezahlen per iOS:
- Physische Waren
- Waren und Dienste zum Verbrauch außerhalb Ihrer App
- Persönliche Dienstleistungen in Echtzeit zwischen zwei Individuen
Dieser Leitfaden bietet Informationen zu den folgenden Vorgehensweisen:
- Erfassen Sie Zahlungsinformationen mit Ihrer eigenen Zahlungsseite mithilfe von Elements.
- Modellieren Sie Ihre Abonnements mit Produkten, Preisen und Kundinnen/Kunden.
- Verwenden Sie Universelle Links, um von Checkout direkt an Ihre App weiterzuleiten.
- Überwachen Sie Webhooks, um die In-App-Abonnements Ihrer Kundinnen und Kunden zu aktualisieren.
Stripe einrichtenServerseitig
Registrieren Sie sich zunächst für ein Stripe-Konto.
Fügen Sie dann die Stripe API-Bibliothek Ihrem Backend hinzu:
Installieren Sie als Nächstes die Stripe CLI. Die CLI bietet die erforderlichen Webhook-Tests und kann zum Erstellen Ihrer Produkte und Preise ausgeführt werden.
Weitere Installationsoptionen finden Sie unter Mit der Stripe-CLI loslegen.
Produkte und Preise erstellen
Erstellen Sie Ihre Produkte und deren Preise im Dashboard oder mit der Stripe CLI.
In diesem Beispiel werden ein einzelnes Produkt und ein einzelner Preis verwendet, um ein Abonnementprodukt mit einem monatlichen Preis von 9,99 USD darzustellen.
Navigieren Sie zur Seite Produkt hinzufügen und erstellen Sie ein Abonnementprodukt mit einem monatlichen Preis von 9,99 USD.
Zeichnen Sie nach Erstellung des Preises die Preis-ID auf, sodass diese in nachfolgenden Schritten verwendet werden kann. Preis-IDs sehen in etwa wie folgt aus: price_
.
Klicken Sie als Nächstes auf In Live-Modus kopieren, um Ihr Produkt aus einer Testumgebung in den Live-Modus zu klonen.
Kundinnen/Kunden erstellenServerseitig
Jedes Mal, wenn Ihre Kundin/Ihre Kunde Ihre Bezahlseite aufruft, erstellen Sie ein Customer-Objekt für ihn/sie, sofern noch keines existiert.
Ihr Server muss Folgendes verarbeiten:
- Kundenerstellung (falls es noch keine/n passende/n Stripe-Kunden/-Kundin gibt)
- Die Abonnementerstellung befindet sich im Status
incomplete
. - Das Client-Geheimnis des PaymentIntent an das Frontend zurückgeben.
- Webhook-Verarbeitung, damit Sie den Abonnementstatus Ihrer Kundinnen/Kunden in Ihrer eigenen Datenbank aktualisieren können.
Achtung
Speichern Sie eine Zuweisung auf Ihrem Server zwischen dem Benutzerkonto und der Stripe-Kunden-ID. Ohne eine solche Verbindung zur Zuordnung einer Kundin/eines Kunden zu einem Kauf, können Ihre Kundinnen und Kunden ihre Käufe nicht erhalten.
Ändert ein Kunde/eine Kundin seine/ihre E-Mail-Adresse auf der Checkout-Seite, aktualisiert sich das Kundenobjekt mit der neuen E-Mail-Adresse.
Abonnement erstellenServerseitig
Beim Erstellen eines Abonnements zur Verwendung des Payment Element übergeben Sie üblicherweise payment_
. Hierdurch wird Stripe angewiesen, ein Abonnement mit dem Status incomplete
zu erstellen und einen Payment Intent für die erste Zahlung zu generieren.
Notiz
Speichern Sie die subscription.
in Ihrer Datenbank, um zukünftige Abonnementereignisse wie Kündigungen, Upgrades und Downgrades zu verwalten.
Notiz
Apple Pay ist standardmäßig aktiviert und wird automatisch im Payment Element angezeigt, wenn ein Kunde/eine Kundin ein unterstütztes Gerät verwendet und mindestens eine Karte in der Wallet-App gespeichert hat. Mit der Eigenschaft payment_
können Sie zusätzliche Zahlungsmethoden akzeptieren. Weitere Details finden Sie in der Übersicht über die Zahlungsmethoden.
Universelle Links einrichten
Universelle Links ermöglichen es Ihrer Bezahlseite einen Deep Link zu Ihrer App zu erstellen. So konfigurieren Sie einen universellen Link:
- Fügen Sie Ihrer Domain eine
apple-app-site-association
-Datei hinzu. - Fügen Sie Ihrer App eine Berechtigung für die zugewiesenen Domains (“Associated Domains”) hinzu.
- Fügen Sie eine Fallbackseite für Ihre Checkout-Umleitungs-URL hinzu.
Definieren Sie die zugewiesenen Domains
Fügen Sie Ihrer Domain eine Datei unter .
hinzu, um die URLs zu definieren, die Ihre App verarbeitet. Stellen Sie Ihrer App-ID die Team-ID voran, die Sie auf der Mitgliedschafts-Seite des Apple Developer Portals finden.
{ "applinks": { "apps": [], "details": [ { "appIDs": [ "A28BC3DEF9.com.example.MyApp1", "A28BC3DEF9.com.example.MyApp1-Debug" ], "components": [ { "/": "/checkout_redirect*", "comment": "Matches any URL whose path starts with /checkout_redirect" } ] } ] } }
Achtung
Sie müssen der Datei den MIME-Typ application/json
hinzufügen. Mit curl -I
bestätigen Sie den Inhaltstyp.
curl -I https://example.com/.well-known/apple-app-site-association
Auf der Seite Zugewiesene Domains unterstützen von Apple finden Sie weitere Einzelheiten hierzu.
Fügen Sie Ihrer App eine Berechtigung für die zugewiesenen Domains (“Associated Domains”) hinzu.
- Öffnen Sie den Bereich Signierung & Kapazitäten der Zielanwendung Ihrer App.
- Klicken Sie auf + Funktion und wählen Sie dann Zugewiesene Domains aus.
- Fügen Sie der Liste der zugewiesenen Domains einen Eintrag für
applinks:example.
hinzu.com
Weitere Informationen zu universellen Links finden Sie auf der Seite Universelle Links von Apple.
Obgleich iOS Links an die in Ihrer apple-app-site-association
-Datei definierten URLs abruft, kann es zu Situationen kommen, in denen die Umleitung Ihre App nicht öffnen kann.
Erstellen Sie eine Fallback-Seite auf Ihren success
- und cancel
-URLs. Sie können zum Beispiel eine /checkout_
-Seite und eine /checkout_
-Seite haben.
Checkout in Safari öffnenClientseitig
Fügen Sie Ihrer App eine Checkout-Schaltfläche hinzu. Mit dieser Schaltfläche wird Ihre nutzerdefinierte Bezahlseite in Safari geöffnet.
import Foundation import SwiftUI import StoreKit struct BuySubscriptionsView: View { @EnvironmentObject var myBackend: MyBackend @State var paymentComplete = false var body: some View { // Check if payments are blocked by Parental Controls on this device. if !SKPaymentQueue.canMakePayments() { Text("Payments are disabled on this device.") } else { if paymentComplete { Text("Payment complete!") } else { Button { UIApplication.shared.open("https://example.com/checkout", options: [:], completionHandler: nil) } label: { Text("Subscribe") }.onOpenURL { url in // Handle the universal link from Checkout. if url.absoluteString.contains("success") { // The payment was completed. Show a success // page and fetch the latest customer entitlements // from your server. paymentComplete = true } } } } } }
Zu Ihrer App zurückleitenServerseitig
Stellen Sie bei Verwendung von Elements sicher, dass Sie Nutzer/innen nach einer erfolgreichen Zahlungsbestätigung (über den registrierten universellen Link) zurück zu Ihrer App leiten.
Umgang mit BestellabwicklungServerseitig
Wenn der/die Nutzer/in die erste Zahlung abschließt oder wenn nachfolgende wiederkehrende Zahlungen erfolgen, sendet Stripe beispielsweise folgende Ereignisse:
invoice.
payment_ succeeded customer.
subscription. updated invoice.
payment_ failed
Überwachen Sie diese Ereignisse in Ihrem Webhook-Endpoint. Zum Beispiel:
Um Ihre Integration zu testen, können Sie Ereignisse im Dashboard überwachen oder die Stripe CLI verwenden. Richten Sie bei der Entwicklung in der Produktion einen Webhook-Endpoint ein und abonnieren Sie die entsprechenden Ereignistypen. Wenn Sie Ihren STRIPE_
-Schlüssel nicht kennen, klicken Sie auf den Webhook im Dashboard, um ihn anzuzeigen.
Tests
So testen Sie, ob Ihre Checkout-Schaltfläche funktioniert:
- Klicken Sie auf die Schaltfläche zum Bezahlen, die Sie zu Ihrem Bezahlvorgang mit dem Payment Element von Stripe weiterleitet.
- Geben Sie die Testnummer , einen dreistelligen CVC, ein Ablaufdatum und eine gültige Postleitzahl.
- Tippen Sie auf Bezahlen.
- Der Webhook
invoice.
wird ausgelöst und Stripe benachrichtigt Ihren Server über die Transaktion.payment_ succeeded - Sie werden zu Ihrer App zurückgeleitet.
Wenn Ihre Integration nicht funktioniert, sehen Sie sich die zusätzlichen Testressourcen an.