Se connecter à un lecteur
Connectez votre application à un lecteur Stripe Terminal.
Remarque
Si vous n’avez pas encore choisi de lecteur, comparez les lecteurs Terminal et sélectionnez celui qui répond le mieux à vos besoins.
Les lecteurs connectés par Bluetooth sont des appareils Bluetooth LE. Ils collectent les informations de paiement mais s’appuient sur un appareil mobile associé pour la communication avec Stripe.
Suivez ces étapes pour connecter votre application à un lecteur de terminal à l’aide du Bluetooth :
Mise en garde
N’utilisez pas des paramètres d’appareil mobile pour associer votre lecteur. L’association du lecteur via les paramètres de l’appareil empêche sa connexion à votre application.
Détecter les lecteursCôté client
Pour commencer, assurez-vous que votre lecteur est sous tension et à proximité.
Puis, à partir de votre application, recherchez les lecteurs connectés par Bluetooth disponibles à proximité avec la méthode discoverReaders
, en définissant discoveryMethod
sur bluetoothScan
.
function DiscoverReadersScreen() { const { discoverReaders, discoveredReaders } = useStripeTerminal({ onUpdateDiscoveredReaders: (readers) => { // After the SDK discovers a reader, your app can connect to it. }, }); useEffect(() => { handleDiscoverReaders(); }, []); const handleDiscoverReaders = async () => { // The list of discovered readers is reported in the `onUpdateDiscoveredReaders` method // within the `useStripeTerminal` hook. const { error } = await discoverReaders({ discoveryMethod: 'bluetoothScan', }); if (error) { Alert.alert( 'Discover readers error: ', `${error.code}, ${error.message}` ); } }; return <View />; }
Scan Bluetooth
Le scan Bluetooth recherche tous les lecteurs les plus proches et renvoie à votre application une liste de lecteurs disponibles. Au fur et à mesure que le processus de recherche avance, le SDK continue à invoquer onUpdateDiscoveredReaders
dans le hook useStripeTerminal
avec la dernière liste des lecteurs les plus proches.
La méthode de détection Bluetooth vous permet de définir un délai d’expiration afin de limiter la durée de détection. Cela permet d’économiser la batterie de l’appareil ou de déclencher un message d’erreur quand aucun appareil n’est trouvé.
Dans votre application mobile, nous vous recommandons d’afficher une liste des lecteurs trouvés qui se met à jour automatiquement, avec les numéros de série ou les libellés pour aider les utilisateurs à identifier leur lecteur.
Se connecter à un lecteurCôté client
Pour vous connecter à un lecteur détecté, appelez la méthode connectReader
depuis votre application.
Vous devez enregistrer votre lecteur en l’associant à un emplacement lors de la connexion. Pour ce faire, assurez-vous que locationId
est défini sur l’ID de l’emplacement approprié lors de la connexion.
const handleConnectBluetoothReader = async (id) => { const { reader, error } = await connectReader( { reader: selectedReader, locationId:
, }, 'bluetoothScan' ); if (error) { console.log('connectReader error', error); return; } console.log('Reader connected successfully', reader); };'{{LOCATION_ID}}'
Utiliser le mode veille
Ne programmez pas votre application pour appeler disconnectReader
afin d’économiser de l’énergie. Le lecteur assure une gestion efficace de l’alimentation à l’aide de son mode veille.
Gérer les déconnexions des lecteurs
Des déconnexions du lecteur peuvent parfois se produire entre votre application et le lecteur. Le lecteur peut par exemple se déconnecter de votre application s’il perd sa connexion à Internet ou si sa batterie est déchargée. Vous pouvez simuler une déconnexion inopinée en éteignant le lecteur.
UserCallbacks
comprend un onDidDisconnect
qui fournit à votre application le DisconnectReason
qui permet d’identifier la raison pour laquelle le lecteur s’est déconnecté.
Lorsqu’un lecteur se déconnecte, nous tentons automatiquement une reconnexion par défaut et vous recommandons d’afficher dans votre application des notifications qui indiquent l’état du lecteur tout au long du processus.
Pour afficher des notifications dans votre application lors de la reconnexion automatique, procédez comme suit :
- Réglez
autoReconnectOnUnexpectedDisconnect
sur true dansConnectBluetoothReaderParams
. - Mettez en œuvre les rappels de reconnexion automatique qui se trouvent dans les
UserCallbacks
. - Lorsque le SDK envoie
onDidStartReaderReconnect
à votre application, affichez un message indiquant que le lecteur a perdu la connexion et que la reconnexion est en cours.- Vous pouvez utiliser
cancelReaderReconnection
pour interrompre la tentative de reconnexion à tout moment.
- Vous pouvez utiliser
- Lorsque le SDK indique que la reconnexion a réussi en envoyant
onDidSucceedReaderReconnect
, affichez un message indiquant que la connexion a été rétablie et que le lecteur fonctionne normalement. - Si le SDK ne peut pas se reconnecter au lecteur et envoie
onDidFailReaderReconnect
, affichez un message indiquant qu’une déconnexion inattendue s’est produite.
Pour traiter vous-même les déconnexions du lecteur, vous pouvez procéder comme suit :
- Réglez
autoReconnectOnUnexpectedDisconnect
surfalse
pendant la connexion. - Traitez le rappel de déconnexion pour afficher dans l’application un message avertissant l’utilisateur que le lecteur s’est déconnecté de manière inattendue et lancer la détection et la connexion du lecteur.
const terminal = useStripeTerminal({ onDidReportUnexpectedReaderDisconnect: (error) => { // Consider displaying a UI to notify the user and start rediscovering readers }, });
Redémarrer le lecteur connecté
Les lecteurs M2 et BBPOS WisePad 3 de Stripe redémarrent automatiquement après 24 heures de fonctionnement. Vous pouvez cependant forcer le lecteur à redémarrer et réinitialiser sa minuterie de 24 heures à l’aide de l’API rebootReader
. Après cette action, le lecteur se déconnecte du SDK, puis redémarre. Si vous utilisez la reconnexion automatique, le SDK tente de rétablir la connexion avec le lecteur.
const { error } = await rebootReader(); if (error) { console.log('rebootReader error:', error); return; } console.log('rebootReader succeeded');
Reconnexion automatique au démarrage de l’application
Stripe Terminal ne se reconnecte pas automatiquement à un lecteur au démarrage de votre application. Vous pouvez créer un flux de reconnexion en enregistrant les ID de lecteur et en essayant de vous connecter à un lecteur connu au démarrage.
- Lorsque vous vous connectez à un lecteur, enregistrez son numéro de série dans un emplacement de stockage persistant, comme Async Storage (React Native).
- Au lancement de votre application, recherchez un numéro de série enregistré dans l’emplacement de stockage persistant des données. Si vous en trouvez un, appelez la méthode
discoverReaders
afin que votre application puisse essayer de retrouver le lecteur. - Si le numéro de série enregistré correspond à l’un des lecteurs détectés, essayez de vous connecter à ce lecteur à l’aide de l’objet Reader correspondant renvoyé par l’appel à
discoverReaders
. Si le lecteur en question est introuvable, mettez fin au processus de recherche.
Affichez une interface utilisateur pendant le processus de détection et de connexion pour indiquer qu’une reconnexion automatique est en cours.
Mettre à jour le logiciel du lecteurCôté client
Votre application doit mettre à jour les lecteurs mobiles pour appliquer les éléments suivants :
- des configurations régionales qui vous permettent de rester en règle avec les exigences des réseaux de cartes et des émetteurs
- des mises à jour de sécurité
L’installation des mises à jour obligatoires se lance lors de la connexion au lecteur. Vous ne pouvez pas utiliser le lecteur tant que la mise à jour n’est pas terminée.
Remarque
Pour installer des mises à jour, le niveau de la batterie du lecteur doit être supérieur à 50 %.
Mises à jour requises
Lorsque les mises à jour immédiatement nécessaires sont disponibles pour le lecteur, l’intégration reçoit onDidStartInstallingUpdate
du hook useStripeTerminal
avec un Reader.
.
Le Reader.
fournit les détails nécessaires de la mise à jour, y compris une estimation de la durée totale de la mise à jour, indiquée par estimatedUpdateTime
.
Pendant le processus d’installation, le connectionStatus
du Terminal passe à "connecting"
pendant que la mise à jour s’installe sur le lecteur.
Votre application doit avertir les utilisateurs qu’une mise à jour est en cours d’installation et afficher sa progression dans votre interface utilisateur. Expliquez clairement pourquoi la connexion peut prendre plus de temps que d’habitude.
Si le processus de mise à jour requis échoue, Stripe communique l’erreur au hook useStripeTerminal
avec onDidFinishInstallingUpdate
. Vous ne pouvez pas vous reconnecter au lecteur après l’échec d’une mise à jour requise, sauf si les conditions suivantes sont remplies :
- Le lecteur exécute la dernière version du logiciel pour l’emplacement au cours des 30 derniers jours.
- La version du SDK React Native est supérieure ou égale à la version
0.
.0. 1-beta. 18
Si les conditions sont remplies, le processus de connexion aboutit, bien que la mise à jour requise soit incomplète. Lors de la prochaine connexion à ce lecteur, Stripe tente à nouveau d’effectuer la mise à jour requise jusqu’à ce qu’elle soit installée avec succès.
const terminal = useStripeTerminal({ onDidReportReaderSoftwareUpdateProgress: (progress) => { setCurrentProgress((Number(progress) * 100).toFixed(0).toString()); }, onDidFinishInstallingUpdate: ({ error }) => { }, onDidStartInstallingUpdate: (update) => { }, });
Vous pouvez annuler des mises à jour requises à l’aide de l’objet Cancelable
. Cependant, cette annulation entraînera l’échec de la connexion au lecteur. Vous ne pouvez pas annuler les mises à jour complémentaires uniquement.
Mises à jour facultatives
Vous pouvez reporter les mises à jour facultatives jusqu’à la date indiquée, après quoi elles deviennent obligatoires. Le SDK vous informe des mises à jour facultatives avec le rappel onDidReportAvailableUpdate
du hook useStripeTerminal
chaque fois que le lecteur est connecté mais n’effectue pas de transaction. Si une mise à jour facultative est disponible, le hook useStripeTerminal
de votre application reçoit le rappel onDidReportAvailableUpdate
avec l’objet SoftwareUpdate
contenant les détails de la mise à jour, notamment les informations suivantes :
- Temps estimé pour l’exécution de la mise à jour (
estimatedUpdateTime
) - Date après laquelle la mise à jour devient obligatoire (
requiredAt
)
Dans votre application, signalez aux utilisateurs qu’une mise à jour est disponible et affichez un message les invitant à l’installer.
Pour procéder à la mise à jour précédemment signalée avec onDidReportAvailableUpdate
, appelez installAvailableUpdate
à partir du hook useStripeTerminal
.
La mise à jour disponible est également stockée dans l’objet Reader sous la forme reader.
.
Pendant la durée de la mise à jour, empêchez l’utilisateur de quitter la page de votre application et invitez-le à garder le lecteur sous la main et sous tension jusqu’au terme de l’installation. Nous vous recommandons également d’afficher un indicateur visuel de la progression de la mise à jour. Le hook useStripeTerminal
rapporte la progression de la mise à jour dans la méthode onDidReportReaderSoftwareUpdateProgress
.
Lorsque la date requiredAt
d’une mise à jour facultative est dépassée, la mise à jour est installée la prochaine fois que le lecteur est connecté.
const terminal = useStripeTerminal({ onDidReportAvailableUpdate: (update) => { // An update is available for the connected reader. Show this update in your application. // Install this update using the `installAvailableUpdate` method from the `useStripeTerminal` hook. }, });
Pour savoir comment vérifier si votre application gère les différents types de mises à jour possibles sur un lecteur, consultez la page Test des mises à jour d’un lecteur.
Prochaines étapes
Vous avez connecté votre application au lecteur. Vous pouvez maintenant encaisser votre premier paiement avec Stripe Terminal.
Les nom et logo BBPOS et Chipper™ sont des marques ou marques déposées de BBPOS Limited aux États-Unis et/ou dans d’autres pays. Les nom et logo Verifone® sont des marques ou marques déposées de Verifone aux États-Unis et/ou dans d’autres pays. L’utilisation de ces marques n’implique aucune approbation de la part de BBPOS ou Verifone.