Identitätsnachweise Ihrer Nutzer/innen verifizieren
In diesem Leitfaden wird erläutert, wie Sie mit Stripe Identity Identitätsnachweise sicher erfassen und verifizieren können.
Bevor Sie loslegen
- Aktivieren Sie Ihr Konto.
- Füllen Sie Ihren Antrag für Stripe Identity aus.
- (Optional) Passen Sie Ihre Markeneinstellungen auf der Seite Branding-Einstellungen an.
Notiz
Um Zugriff auf das Identity iOS SDK zu erhalten, gehen Sie zu den Identitätseinstellungen und klicken auf Aktivieren.
Um die Identität Ihrer iOS-Nutzer/innen zu verifizieren. zeigen Sie in Ihrer Anwendung ein Verifizierungsformular an. In diesem Leitfaden erfahren Sie, wie Sie:
- Stripe einrichten.
- Einen Server-Endpoint hinzufügen.
- Das Verifizierungsformular anzeigen.
- Verifizierungsereignisse verarbeiten.
Die Schritte in diesem Leitfaden sind vollständig in unserer Beispiel-App und auf unserem Beispiel-Backend-Server implementiert.
EinrichtenServerseitigClientseitig
Notiz
Wenn Sie beabsichtigen, dieses SDK mit dem Identitätsdienst von Stripe zu verwenden, dürfen Sie dieses SDK nicht ändern. Die Verwendung einer modifizierten Version dieses SDK mit dem Identitätsdienst von Stripe ohne die schriftliche Genehmigung von Stripe stellt einen Verstoß gegen Ihren Vertrag mit Stripe dar und kann zur Schließung Ihres Stripe-Kontos führen.
SDK installieren Client-side
Das Stripe iOS SDK ist Open Source, vollständig dokumentiert und kompatibel mit Apps, die iOS 13.0 oder höher unterstützen.
Führen Sie zur Installation des SDK die folgenden Schritte aus:
- Wählen Sie in Xcode File > Add Packages … und geben Sie als Repository-URL
https://github.com/stripe/stripe-ios-spm
ein. - Wählen auf unserer Veröffentlichungsseite die neueste Version aus.
- Fügen Sie das Produkt StripeIdentity zum Ziel Ihrer App hinzu.
Notiz
For details on the latest SDK release and past versions, see the Releases page on GitHub. To receive notifications when a new release is published, watch releases for the repository.
Kamerazugriff einrichten Client-side
Das Stripe Identity iOS SDK erfordert Zugriff auf die Kamera des Geräts, um Ausweisdokumente zu erfassen. So aktivieren Sie Ihre App zum Anfordern von Kameraberechtigungen:
- Öffnen Sie die Datei Info.plist Ihres Projekts in Xcode.
- Fügen Sie den Schlüssel
NSCameraUsageDescription
hinzu. - Fügen Sie einen Zeichenfolgenwert hinzu, der Ihren Nutzer/innen den Grund für den erforderlichen Kamerazugriff erläutert. Beispiel:
Diese App verwendet Ihre Kamera, um ein Foto von Ihren Identitätsnachweisen zu machen.
Weitere Informationen zum Anfordern des Kamerazugriffs finden Sie in der Dokumentation von Apple.
Stripe auf dem Server installieren Server-side
Registrieren Sie sich zunächst für ein Stripe-Konto.
Installieren Sie dann die Bibliotheken für den Zugriff auf die Stripe-API über Ihre Anwendung:
Server-Endpoint hinzufügenServerseitig
VerificationSession erstellen
Eine VerificationSession ist die programmgesteuerte Darstellung der Verifizierung. Sie enthält Details zur Art der Verifizierung (z. B. welche Prüfung durchgeführt werden soll). Sie können das Feld verifizierte Ergebnisse erweitern, um Details zu den verifizierten Daten anzuzeigen.
Sie benötigen einen serverseitigen Endpoint zum Erstellen der VerificationSession. Die serverseitige Erstellung der VerificationSession
verhindert, dass böswillige Nutzer/innen die Verifizierungsoptionen außer Kraft setzen und Abwicklungskosten für Ihr Konto verursachen. Fügen Sie dem Endpoint eine Authentifizierung hinzu, indem Sie einen Verweis auf die Nutzer/innen in die Metadaten der Sitzung einschließen oder die Sitzungs-ID in Ihrer Datenbank speichern.
For security, don’t create a VerificationSession
object that’s directly accessible from the mobile client. Instead, your server provides the SDK with an ephemeral key — a short-lived API key with restricted access to the VerificationSession. You can think of an ephemeral key as a session, authorizing the SDK to retrieve and update a specific VerificationSession
object for the duration of the session.
Nach der erfolgreichen Erstellung einer VerificationSession
und eines temporären Schlüssels senden Sie die VerificationSession
-ID und den temporären Geheimschlüssel an den Client, um das Formular zum Hochladen von Dokumenten anzuzeigen.
Notiz
Eine laufende Implementierung dieses Endpoints für schnelle Tests ist auf Glitch verfügbar.
// Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys const stripe = require('stripe')(
); // In the route handler for /create-verification-session: // Authenticate your user. // Create the session. const verificationSession = await stripe.identity.verificationSessions.create({ type: 'document', metadata: { user_id: '{{USER_ID}}', }, }); // Create an ephemeral key for the VerificationSession const ephemeralKey = await stripe.ephemeralKeys.create( {verification_session: verificationSession.id}, {apiVersion: '2024-04-10'} ); // Return only the ID and ephemeral key secret to the frontend. const verficationSessionId = verificationSession.id; const ephemeralKeySecret = ephemeralKey.secret;'sk_test_4eC39HqLyjWDarjtT1zdp7dc'
Vorsicht
Der temporäre Geheimschlüssel ist an die VerificationSession
gebunden und ermöglicht es Ihrer App, sensible Verifizierungsinformationen wie Dokumente und Selfie-Bilddateien zu erfassen. Es ist einmalig verwendbar und läuft nach 1 Stunde ab. Speichern Sie ihn nicht, protokollieren Sie ihn nicht und betten Sie ihn nicht in eine URL ein und machen Sie ihn nicht für andere Personen als den/die Nutzer/in zugänglich. Stellen Sie sicher, dass Sie TLS für alle Endpoints aktiviert haben, die den geheimen temporären Schlüssel zurückgeben. Senden Sie nur den temporäre Geheimschlüssel an Ihre App, um zu vermeiden, dass die Verifizierungskonfiguration oder -ergebnisse preisgegeben werden.
Testen Sie Ihren Endpoint, indem Sie Ihren Webserver starten (z. B. localhost:4242
) und mit curl eine POST-Anfrage zur Erstellung einer VerificationSession senden:
curl -X POST -is "http://localhost:4242/create-verification-session" -d ""
Die Antwort in Ihrem Terminal sieht folgendermaßen aus:
HTTP/1.1 200 OK Content-Type: application/json { id: "vs_QdfQQ6xfGNJR7ogV6...", ephemeral_key_secret: "ek_YWNjdF8xRm..." }
Das Verifizierungsformular anzeigenClientseitig
Richten Sie eine Schaltfläche zum Anzeigen eines Verifizierungsformulars ein. Nachdem sie auf die Schaltfläche geklickt haben, können Ihre Nutzer/innen ein Bild ihres Reisepasses, Führerscheins oder Personalausweises erfassen und hochladen.
Bevor Sie loslegen, sollte Ihre Verifizierungsseite Folgendes enthalten:
- Erläuterungen für die Nutzer/innen zur Notwendigkeit der Identitätsprüfung.
- Eine Schaltfläche zum Verifizieren der Identität über die Nutzeroberfläche von Stripe.
Schaltfläche hinzufügen
Erstellen Sie zunächst eine Ansichtssteuerung mit einer Schaltfläche, die auswählbar ist und über eine Ladeanzeige verfügt:
import UIKit class VerifyViewController: UIViewController { @IBOutlet weak var verifyButton: UIButton! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! }
Stripe Identity SDK importieren
Importieren Sie StripeIdentity
in Ihre Ansichtssteuerung:
import UIKit import StripeIdentity class VerifyViewController: UIViewController { @IBOutlet weak var verifyButton: UIButton! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! }
Eine Aktion zur Schaltfläche „Verifizieren“ hinzufügen
Da Sie nun über eine Schaltfläche und einen Endpoint zum Erstellen einer VerificationSession
verfügen, können Sie die Schaltfläche so anpassen, dass das Formular zum Hochladen von Dokumenten nach dem Antippen angezeigt wird.
Fügen Sie einen Aufruf hinzu, um folgende Schritte auszuführen:
- Die
VerificationSession
-ID und den temporären Geheimschlüssel von Ihrem Endpoint abrufen. - Ein
IdentityVerificationSheet
mit Ihrem Marken-Logo instanziieren und dem/der Nutzer/in anzeigen. - Das
VerificationFlowResult
verarbeiten, um zu ermitteln, ob der/die Nutzer/in den Verifizierungsablauf abgeschlossen hat.
import UIKit import StripeIdentity class VerifyViewController: UIViewController { @IBOutlet weak var verifyButton: UIButton! @IBOutlet weak var activityIndicator: UIActivityIndicatorView! override func viewDidLoad() { super.viewDidLoad() verifyButton.addTarget(self, action: #selector(didTapVerifyButton), for: .touchUpInside) } @objc func didTapVerifyButton() { // Disable the button while the request is made verifyButton.isEnabled = false activityIndicator.startAnimating() // Make request to your verification endpoint var urlRequest = URLRequest(url: URL(string: "https://{{YOUR_SERVER_BASE_URL}}/create-verification-session")!) urlRequest.httpMethod = "POST" let task = URLSession.shared.dataTask(with: urlRequest) { [weak self] data, response, error in DispatchQueue.main.async { [weak self] in // Re-enable button self?.verifyButton.isEnabled = true self?.activityIndicator.stopAnimating() guard error == nil, let data = data, let responseJson = try? JSONDecoder().decode([String: String].self, from: data), let verificationSessionId = responseJson["id"], let ephemeralKeySecret = responseJson["ephemeral_key_secret"] else { // Handle error print(error as Any) return } self?.presentVerificationSheet(verificationSessionId: verificationSessionId, ephemeralKeySecret: ephemeralKeySecret) } } task.resume() } func presentVerificationSheet(verificationSessionId: String, ephemeralKeySecret: String) { // Configure a square brand logo. Recommended image size is 32 x 32 points. let configuration = IdentityVerificationSheet.Configuration( brandLogo: UIImage(named: "{{YOUR_BRAND_LOGO}}")! ) // Instantiate and present the sheet let verificationSheet = IdentityVerificationSheet( verificationSessionId: verificationSessionId, ephemeralKeySecret: ephemeralKeySecret, configuration: configuration ) verificationSheet.present(from: self, completion: { result in switch result { case .flowCompleted: // The user has completed uploading their documents. // Let them know that the verification is processing. print("Verification Flow Completed!") case .flowCanceled: // The user did not complete uploading their documents. // You should allow them to try again. print("Verification Flow Canceled!") case .flowFailed(let error): // If the flow fails, you should display the localized error // message to your user using error.localizedDescription print("Verification Flow Failed!") print(error.localizedDescription) } }) } }
Verifizierungsformular testen
Testen Sie, ob die Schaltfläche „Verifizieren“ ein Formular zum Hochladen von Dokumenten anzeigt:
- Klicken Sie auf die Schaltfläche Identität verifizieren.
- Stellen Sie sicher, dass keine Fehlermeldungen angezeigt werden.
Wenn Ihre Integration nicht funktioniert:
- Legen Sie einen Haltepunkt an der Stelle fest, an der Sie die
VerificationSession
-ID und den temporären Geheimschlüssel abrufen. - Stellen Sie sicher, dass keine Netzwerkfehler vorhanden sind und dass der Endpoint eine
VerificationSession
-ID und einen temporären Geheimschlüssel zurückgibt.
Verifizierungsereignisse verarbeiten
Dokumentprüfungen erfolgen asynchron, d. h., die Ergebnisse der Prüfung sind nicht sofort verfügbar. Die Prüfung eines Identitätsnachweises dauert in der Regel 1 bis 3 Minuten. Sobald die Verarbeitung abgeschlossen ist, ändert sich der Status der VerificationSession von processing
in verified
.
Stripe übermittelt die folgenden Ereignisse, wenn sich der Status einer Sitzung ändert:
Ereignisname | Beschreibung | Nächste Schritte |
---|---|---|
identity.verification_session.verified | Die Verarbeitung aller Verifizierungsprüfungen ist abgeschlossen und alle wurden erfolgreich verifiziert. | Lösen Sie relevante Aktionen in Ihrer Anwendung aus. |
identity.verification_session.requires_input | Die Verarbeitung aller Verifizierungsprüfungen ist abgeschlossen und mindestens eine dieser Prüfungen ist fehlgeschlagen. | Lösen Sie relevante Aktionen in Ihrer Anwendung aus und ermöglichen Sie Ihren Nutzer/innen, die Verifizierung zu wiederholen. |
Verwenden Sie einen Webhook-Handler, um diese Ereignisse zu empfangen und Aktionen wie das Senden einer E-Mail zur Bestätigung, das Aktualisieren der Verifizierungsergebnisse in Ihrer Datenbank oder das Abschließen eines Onboarding-Schritts zu automatisieren. Sie können die Verifizierungsereignisse auch im Dashboard anzeigen.
Ereignisse empfangen und Geschäftsaktionen ausführen
Mit Code
Erstellen Sie einen Webhook-Handler, um Ereignisse zu überwachen und benutzerdefinierte asynchrone Verifizierungsabläufe zu erstellen. Mit der Stripe-CLI können Sie Ihre Webhook-Integration lokal testen und Fehler beheben.
Nutzerdefinierten Webhook erstellen
Ohne Code
Verwenden Sie das Dashboard, um alle Ihre Verifizierungen anzuzeigen, die erfassten Daten zu prüfen und fehlgeschlagene Verifizierungen nachvollziehen zu können.