naya_id

SDK Flutter officiel de Naya ID — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest.

Un appel, une UI complète : capture du document (recto + verso), selfie avec liveness on-device (ML Kit), décision — puis retour à votre application avec un résultat typé. L'envoi du document et l'OCR serveur s'exécutent en arrière-plan pendant le selfie ; les données extraites (ocrData) sont retournées dans le résultat, à faire confirmer par votre propre UI si votre parcours l'exige.

Pays couverts : Bénin, Côte d'Ivoire, Sénégal, Mali, Burkina Faso, Togo. Documents : CNI (CEDEAO), passeport, permis de conduire.

Installation

dependencies:
  naya_id: ^0.1.0

Android

  • minSdkVersion ≥ 21 (défaut Flutter — rien à faire dans la plupart des projets).
  • La permission caméra est déclarée par le SDK ; elle est demandée à l'utilisateur au premier écran de capture.

iOS

Ajoutez la description d'usage caméra dans ios/Runner/Info.plist :

<key>NSCameraUsageDescription</key>
<string>Nécessaire pour capturer votre document d'identité et votre selfie de vérification.</string>

Plateforme minimale : iOS 15.5 (exigence ML Kit) — dans ios/Podfile :

platform :ios, '15.5'

Utilisation

import 'package:naya_id/naya_id.dart';

final result = await NayaId.startVerification(
  context,
  apiKey: 'naya_live_xxx', // clé d'application, dashboard Naya
  config: const NayaConfig(
    country: NayaCountry.bj,              // optionnel — sinon l'utilisateur choisit
    documentTypes: [NayaDocument.cni],    // optionnel — filtre les documents proposés
    locale: NayaLocale.fr,                // fr (défaut) ou en
    callbackUrl: 'https://api.monclient.com/kyc/callback', // optionnel, voir ci-dessous
  ),
);

switch (result.status) {
  case NayaStatus.approved:
    // result.riskScore, result.matchScore, result.ocrData…
  case NayaStatus.review:
    // décision finale ultérieure — notifiée sur callbackUrl
  case NayaStatus.rejected:
  case NayaStatus.cancelled:
  case NayaStatus.error:
}

NayaConfig

Champ Défaut Description
country null Pré-sélectionne le pays (saute l'étape de choix si documentTypes n'a qu'une entrée)
documentTypes tous Types de documents proposés
countries tous Pays proposés quand country est nul
locale fr Langue de l'interface (fr/en)
callbackUrl null URL HTTPS notifiée par le serveur Naya à chaque décision sur la session
maxAttempts 2 Parcours autorisés après un rejet (« Réessayer »)
primaryColor / accentColor charte Naya Personnalisation légère des couleurs
clientLogo null Logo affiché sur l'écran de bienvenue
baseUrl prod À ne changer que pour un environnement de test

NayaResult

status (approved/review/rejected/cancelled/error), verificationId (à rapprocher du dashboard et des callbacks), scores (riskScore, matchScore, authenticityScore, livenessScore, ocrConfidence), ocrData (identité extraite — la confirmation/correction éventuelle est à la charge de votre application) et note.

Callback serveur (par session)

Si callbackUrl est fourni, le serveur Naya notifie votre backend à chaque décision — y compris quand un dossier parti « en revue » est tranché par un analyste des heures plus tard :

  • verification.completed — décision automatique au moment du parcours ;
  • verification.reviewed — décision d'un analyste après revue manuelle.

Les requêtes sont signées (X-Naya-Signature, HMAC-SHA256) et rejouées 3 fois en cas d'échec.

Liveness on-device

Pendant le selfie, ML Kit vérifie la présence d'un visage puis impose un défi actif (clignement des yeux, rotation de la tête). L'analyse s'exécute sur l'appareil : la photo n'est transmise qu'une fois le défi validé.

Exemple

Une application de démonstration complète se trouve dans example/ :

cd example && flutter run

Licence

© 41devs — tous droits réservés.

Libraries

naya_id
SDK Flutter officiel de Naya ID — vérification d'identité (eKYC) clé en main pour l'Afrique de l'Ouest.