Bazik ID Documentation Demander un accès Console partenaire

Guide d'intégration : SDK Android

@bazik/kyc-sdk affiche tout le parcours dans votre application React Native : consentement, photo de la CIN ou du passeport, selfie avec des défis guidés en créole, résultat. Les écrans sont en français. Le serveur Bazik lit la pièce, consulte le registre et décide.

Prérequis

Installer

npm install @bazik/kyc-sdk \
  react-native-safe-area-context react-native-svg \
  react-native-vision-camera@^5.2.4 react-native-vision-camera-face-detector@^2.1.0 \
  react-native-nitro-modules react-native-nitro-image
# Facultatif, pour les consignes vocales en créole :
npm install react-native-sound@^0.13.0 @mhpdev/react-native-speech@^1.4.4
ModuleRôleObligatoire
react-native-safe-area-context, react-native-svgmise en page, icônesoui
react-native-vision-camera, react-native-vision-camera-face-detector, react-native-nitro-modules, react-native-nitro-imagecaméra et détection du visage (ML Kit)oui, pour @bazik/kyc-sdk/vision
react-native-sound, @mhpdev/react-native-speechconsignes vocalesnon, seulement pour @bazik/kyc-sdk/voice

Permission de la caméra

Dans AndroidManifest.xml :

<uses-permission android:name="android.permission.CAMERA" />

Le SDK demande lui-même la permission avant la première photo.

Police

Les écrans utilisent Plus Jakarta Sans, livrée avec le paquet. Déclarez-la dans react-native.config.js, puis lancez npx react-native-asset :

module.exports = {
  assets: ['./node_modules/@bazik/kyc-sdk/assets/fonts'],
};

Le parcours en trois temps

1. Votre backend ouvre le dossier

La clé API ne va jamais dans l'application. Votre backend ouvre le dossier (voir le guide de l'API) et renvoie access_token à l'application. Le jeton vaut pour ce seul dossier, pendant 30 minutes.

2. L'application lance le parcours

import { SafeAreaProvider } from 'react-native-safe-area-context';
import { BazikKyc, createHttpApi, type DeviceIntegrity } from '@bazik/kyc-sdk';
import { visionCamera } from '@bazik/kyc-sdk/vision';
import { kreyolVoice } from '@bazik/kyc-sdk/voice'; // facultatif

// Pas encore d'implémentation en 0.1 : voir « Attestation ».
const integrity: DeviceIntegrity = { attest: async () => '', sign: async () => '' };

const api = createHttpApi({
  baseUrl: 'https://bazik.id',
  getAccessToken: async () => jetonDuDossier, // reçu de votre backend
  integrity,
});

export function EcranKyc() {
  return (
    <SafeAreaProvider>
      <BazikKyc
        api={api}
        camera={visionCamera}
        voice={kreyolVoice}
        onComplete={(outcome) => {
          // 'verified' | 'manual_review' : pour l'affichage seulement.
        }}
        onExit={() => {
          // La personne a fermé le parcours avant la fin.
        }}
      />
    </SafeAreaProvider>
  );
}

Créez api une fois par dossier, pas à chaque rendu.

3. Votre backend lit la décision

Le résultat que reçoit l'application ne fait pas foi. Votre backend lit la décision avec GET /v1/cases/{case_id} (voir le guide de l'API).

Référence

<BazikKyc>

PropriétéTypeRôle
apiKycApile serveur : createHttpApi(…)
cameraCameraKitvisionCamera sur un téléphone
voiceVoiceGuidefacultatif : kreyolVoice dit les consignes du selfie ; sans lui, le parcours est silencieux
onComplete(outcome) => voidla personne quitte l'écran de résultat
onExit() => voidla personne ferme le parcours avant la fin
onPrivacyPolicy() => voidfacultatif : affiche « Lire la politique de confidentialité » au consentement
onContactSupport() => voidfacultatif : affiche « Contacter l'assistance » sur l'écran de revue
debugbooleanmontre les mesures du détecteur pendant le selfie : jamais en production

Sur Android, le parcours prend le bouton retour : il revient d'une étape, appelle onExit depuis l'accueil et onComplete depuis le résultat.

createHttpApi(options)

OptionRôle
baseUrladresse du serveur Bazik ID, sans / final
getAccessToken()rend le jeton du dossier ; appelé avant chaque requête
integrityattestation de l'appareil, voir plus bas
timeoutMsdurée maximale d'une requête : 45 s par défaut (une face de la pièce se lit en une dizaine de secondes)

Points d'entrée

ImportContenu
@bazik/kyc-sdkBazikKyc, createHttpApi et les types ; aucun module natif de caméra ni de voix
@bazik/kyc-sdk/visionvisionCamera (VisionCamera + ML Kit)
@bazik/kyc-sdk/voicekreyolVoice : enregistrements en créole, et la voix du téléphone pour les consignes pas encore enregistrées

createMockApi et simulatedCamera servent aux démonstrations et aux simulateurs : ils ne vérifient rien, jamais en production.

Attestation

integrity doit prouver que l'application tourne sur un vrai appareil (Play Integrity) et signer la capture. La version 0.1 n'en livre pas d'implémentation : un serveur de production refuse alors les sessions sans attestation vérifiée, et chaque dossier part en revue manuelle. La personne voit l'écran de revue, jamais un refus.

Limites de la version 0.1