Identitätsnachweise Ihrer Nutzer/innen verifizieren
Erstellen Sie Sitzungen und erfassen Sie Identitätsnachweise.
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 dieser Anleitung sind vollständig in der Beispiel-App und dem 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.
Notiz
Details zur aktuellen SDK-Version und zu vorherigen Versionen finden Sie auf der Seite Releases auf GitHub. Um bei Veröffentlichung einer neuen Version eine Benachrichtigung zu erhalten, achten Sie auf die Releases zum jeweiligen 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 Nutzern/Nutzerinnen 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.
Erstellen Sie aus Sicherheitsgründen kein VerificationSession
-Objekt, das direkt über den mobilen Client zugänglich ist. Stattdessen stellt Ihr Server dem SDK einen temporären Schlüssel zur Verfügung – einen kurzlebigen API-Schlüssel mit eingeschränktem Zugriff auf die VerificationSession. Einen temporären Schlüssel können Sie sich als Sitzung vorstellen, die das SDK autorisiert, ein bestimmtes VerificationSession
-Objekt für die Dauer der Sitzung abzurufen und zu aktualisieren.
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 finden Sie hier zum schnellen Testen.
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
VerificationResult
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 Completed!") case .flowCanceled: // The user did not complete uploading their documents. // You should allow them to try again. print("Verification Canceled!") case .flowFailed(let error): // If the flow fails, you should display the localized error // message to your user using error.localizedDescription print("Verification 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 werden in der Regel abgeschlossen, wenn Nutzer/innen zu Ihrer Website zurückgeleitet werden, und Sie können das Ergebnis sofort über die API abrufen. Manchmal steht die Dokumentenprüfung noch nicht bereit und muss asynchron fortgesetzt werden. In diesem Fall werden Sie über Webhooks benachrichtigt, wenn das Verifizierungsergebnis bereitsteht. Nachdem die Verarbeitung abgeschlossen ist, wechselt der Status der VerificationSession von processing
zu 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 waren erfolgreich. | 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.