startKYC method
Implementation
Future<Result<String>> startKYC({
required String customerId,
required String identifier,
required String accessToken,
}) async {
// Skip KYC start for web platform
if (kIsWeb) {
print('🌐 Web platform detected - skipping Digio KYC start');
return const Success('Web platform - KYC skipped');
}
if (_isProcessing) {
return const Failure('KYC process already in progress');
}
if (_userCancelled) {
print('⚠️ User cancelled previous session, ignoring auto-trigger');
return const Failure('User cancelled previous session');
}
try {
if (_kycWorkflowPlugin == null) {
return const Failure('KYC SDK not initialized');
}
_isProcessing = true;
_userCancelled = false;
HashMap<String, String> additionalData = HashMap<String, String>();
print('🚀 Calling Digio SDK start...');
print('📋 Customer ID: $customerId');
print('📋 Identifier: $identifier');
final result = await _kycWorkflowPlugin!.start(
customerId,
identifier,
accessToken,
additionalData,
);
print('✅ Digio SDK completed with result: $result');
// Check if result indicates user cancellation
final resultStr = result.toString();
if (resultStr.contains('cancelled') ||
resultStr.contains('back') ||
resultStr.contains('closed')) {
_userCancelled = true;
print('🚫 User cancelled Digio SDK');
}
return Success(resultStr);
} catch (e) {
print('❌ Digio SDK error: $e');
_userCancelled = true;
return Failure('Failed to start KYC: $e');
} finally {
_isProcessing = false;
print('🏁 SDK processing flag cleared');
}
}