Vérifier les pièces d'identité de vos utilisateurs
Ce guide explique comment utiliser Stripe Identity pour collecter et vérifier de manière sécurisée les pièces d’identité de vos utilisateurs.
Avant de commencer
- Activez votre compte.
- Remplissez votre formulaire d’inscription à Stripe Identity.
- (Facultatif) Personnalisez les paramètres de votre marque sur la page Paramètres de marque.
Note
Pour accéder au SDK Identity React Native, rendez-vous sur la page Paramètres d’identité et cliquez sur Activer.
Pour vérifier l’identité de vos utilisateurs sur React Native, affichez une feuille de vérification dans votre application. Ce guide comprend les étapes suivantes :
- Configurez Stripe.
- Ajouter un endpoint de serveur.
- Afficher la feuille de vérification.
- Gérer les événements de vérification.
Les étapes de ce guide sont entièrement implémentées dans notre application test et notre exemple de serveur back-end.
ConfigurerCôté serveurCôté client
Installer le SDK Client-side
Le SDK React Native est open source, possède une documentation complète et est compatible avec les apps prenant en charge iOS 13.0 ou Android 5.0 (API level 21) et versions ultérieures. En interne, il utilise les SDK natifs iOS et Android.
Pour installer le SDK, exécutez :
yarn add @stripe/stripe-identity-react-native
Note
Pour plus de détails sur la version la plus récente du SDK et ses versions antérieures, consultez la page Releases sur GitHub. Pour recevoir une notification lors de la diffusion d’une nouvelle version, suivez les versions du référentiel.
Pour iOS, exécutez pod install
dans le répertoire ios
pour vous assurer d’installer également les dépendances natives. Android ne nécessite aucune action supplémentaire.
Configurer l’autorisation d’accès à l’appareil photo pour iOS Client-side
Le SDK iOS de Stripe Identity doit pouvoir accéder à l’appareil photo de l’appareil pour capturer des pièces d’identité. Pour permettre à votre application de demander des autorisations d’accès à l’appareil photo :
- Ouvrez le fichier Info.plist de votre projet dans Xcode.
- Ajoutez la clé
NSCameraUsageDescription
. - Ajoutez une valeur de chaîne qui explique à vos utilisateurs pourquoi votre application a besoin d’autorisations d’accès à l’appareil photo, par exemple :
Cette application utilise l’appareil photo de votre appareil pour prendre une photo de vos pièces d’identité.
Consultez la documentation d’Apple pour en savoir plus sur les demandes d’autorisation d’accès à l’appareil photo.
Configurer le thème du matériel pour Android Client-side
Le SDK Android de Stripe Identity nécessite que l’activité d’hébergement utilise le thème du matériel. Pour activer le thème du matériel :
- Ouvrez le fichier
app/src/main/AndroidManifest.xml
de votre projet. - Assurez-vous que le thème
android:theme
appliqué àapplication
soit un enfant de l’un des thèmes de matériel (par exemple,Theme.MaterialComponents.DayNight
).
Pour en savoir plus sur le thème de matériel, cliquez ici.
Installer Stripe sur votre serveur Server-side
Pour commencer, créez un compte Stripe.
Installez ensuite les bibliothèques permettant d’accéder à l’API Stripe depuis votre application :
Ajouter un endpoint de serveurCôté serveur
Créer une VerificationSession
Une VerificationSession est une représentation programmatique de la vérification. Elle contient des détails concernant le type de vérification, comme les contrôles à effectuer. Vous pouvez développer le champ des résultats vérifiés pour afficher les données qui ont été contrôlées.
Vous avez besoin d’un endpoint côté serveur pour créer la VerificationSession. La création de la VerificationSession
côté serveur éliminera tout risque de remplacement des options de vérification par des utilisateurs malintentionnés et vous évitera ainsi des frais de traitement sur votre compte. Ajoutez une authentification à cet endpoint en incluant une référence utilisateur dans les métadonnées de la session ou en enregistrant l’ID de session dans votre base de données.
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.
Une fois votre VerificationSession
et votre clé éphémère créées, envoyez l’ID de la VerificationSession
et la clé secrète éphémère au client pour afficher la feuille de chargement de documents.
Note
Une implémentation fonctionnelle de cet endpoint est disponible sur Glitch à des fins de test rapide.
// 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'
Mise en garde
La clé secrète éphémère est liée à la session VerificationSession
et permet à votre application de collecter des données de vérification sensibles, telles que des fichiers contenant des pièces d’identité et images de selfie. Elle est à usage unique et expire au bout d’une heure. Ne la stockez pas, ne l’enregistrez pas, ne l’intégrez pas dans des URL et ne la dévoilez à personne d’autre que votre utilisateur. Veillez à ce que le protocole TLS soit activé sur tout endpoint renvoyant la clé secrète éphémère. Envoyez celle-ci uniquement à votre application pour éviter de dévoiler la configuration ou les résultats de la vérification.
Testez votre endpoint en démarrant votre serveur Web (par exemple, localhost:4242
) et en envoyant une requête POST avec curl pour créer une VerificationSession :
curl -X POST -is "http://localhost:4242/create-verification-session" -d ""
La réponse doit ressembler à ceci sur votre terminal :
HTTP/1.1 200 OK Content-Type: application/json { id: "vs_QdfQQ6xfGNJR7ogV6...", ephemeral_key_secret: "ek_YWNjdF8xRm..." }
Afficher la feuille de vérificationCôté client
Paramétrez un bouton afin qu’il feuille de chargement de document. En touchant le bouton, vos utilisateurs pourront capturer et charger une photo de leur passeport, de leur permis de conduire ou de leur carte d’identité.
Avant de démarrer, votre page de vérification doit :
- Expliquer à l’utilisateur pourquoi son identité doit être vérifiée.
- Inclure un bouton de vérification d’identité pour afficher l’interface utilisateur de Stripe.
Ajouter un bouton
Commencez par créer un composant Button :
import React from 'react'; import { View, Button, } from 'react-native'; function VerifyScreen() { return ( <View> <Button title='Verify' /> </View> ); }
Importer le SDK Stripe Identity
Importer le hook useStripeIdentity
:
import React from 'react'; import { View, Button, } from 'react-native'; import { useStripeIdentity } from "@stripe/stripe-identity-react-native"; function VerifyScreen() { return ( <View> <Button title='Verify' /> </View> ); }
Ajouter un gestionnaire d’événements au bouton de vérification
Maintenant que vous avez un bouton et un endpoint pour créer une VerificationSession, modifiez le bouton afin que son activation déclenche l’affichage de la feuille de chargement de documents.
Ajoutez un appel pour :
- Récupérez l’ID
VerificationSession
et la clé secrète éphémère depuis votre endpoint. - Instanciez le hook
useStripeIdentity
en transmettantfetchOptions
avec le logo de votre marque et affichez-le à l’utilisateur. - Gérez le
status
afin de savoir si l’utilisateur a exécuté le flux de vérification.
import React from 'react'; import { View, Button, Text, Image } from 'react-native'; import { useStripeIdentity } from "@stripe/stripe-identity-react-native"; // A square logo for your brand import logo from './assets/{{YOUR_BRAND_LOGO}}.png'; function VerifyScreen() { const fetchVerificationSessionParams = async () => { try { const data = await fetch(`${YOUR_SERVER_BASE_URL}/create-verification-session`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, }); const json = await data.json(); return json; } catch (e) { return {}; } }; const fetchOptions = async () => { const response = await fetchVerificationSessionParams(); return { sessionId: response.id, ephemeralKeySecret: response.ephemeral_key_secret, brandLogo: Image.resolveAssetSource(logo), }; }; const { status, present, loading } = useStripeIdentity(fetchOptions); const handlePress = React.useCallback(() => { present(); }, [present]); return ( <View> <Button title='Verify' disabled={loading} onPress={handlePress} /> <Text>Status: {status}</Text> </View> ); }
Tester la feuille de vérification
Vérifiez que le bouton de vérification affiche la feuille de chargement de documents :
- Touchez le bouton Vérifier l’identité.
- Vérifiez qu’aucun message d’erreur ne s’affiche.
Si votre intégration ne fonctionne pas :
- Fixez un point d’arrêt à l’endroit où vous récupérez l’ID
VerificationSession
et la clé secrète éphémère. - Vérifiez qu’il n’existe aucune erreur réseau et que l’endpoint renvoie un ID
VerificationSession
et une clé secrète éphémère.
Gérer les événements de vérification
Les vérifications de document sont asynchrones, ce qui signifie que les résultats de la vérification ne sont pas disponibles immédiatement. La vérification d’une pièce d’identité prend généralement entre 1 et 3 minutes. Une fois le traitement effectué, l’état de la VerificationSession passe de processing
à verified
.
Stripe envoie les événements suivants lorsque l’état de la session change :
Nom de l’événement | Description | Étapes suivantes |
---|---|---|
identity.verification_session.verified | Le traitement de tous les contrôles de vérification est terminé. La vérification a été effectuée avec succès. | Déclenchez les actions pertinentes dans votre application. |
identity.verification_session.requires_input | Le traitement de tous les contrôles de vérification est terminé, et au moins un des contrôles a échoué. | Déclenchez les actions appropriées dans votre application et autorisez le cas échéant l’utilisateur à effectuer une nouvelle tentative de vérification. |
Utilisez un gestionnaire de webhook pour recevoir ces événements et automatiser des actions telles que l’envoi d’un e-mail de confirmation, la mise à jour des résultats de la vérification dans votre base de données ou l’exécution d’une étape d’inscription. Vous pouvez également consulter les événements de vérification dans votre Dashboard.
Recevoir des événements et exécuter des actions métier
Avec code
Créez un gestionnaire de webhook pour écouter les événements et créer des flux de vérification asynchrones personnalisés. Testez et déboguez votre intégration de webhook en local avec la CLI Stripe.
Sans code
Utilisez le Dashboard pour consulter toutes vos vérifications, inspecter les données collectées et comprendre les échecs de vérification.