Secure EMI SDK
A Flutter plugin that provides bindings to the SecureEMI Android SDK, enabling EMI mandates, KYC verification, and installment management in Flutter applications.
Status
Proprietary SDK — not open source. All rights reserved.
Features
- User Registration - Register users with the SecureEMI platform
- KYC Verification - Complete Know Your Customer verification flow
- KYC Status Tracking - Check and monitor KYC verification status
- Theme Customization - Customize the UI appearance with your brand colors
Requirements
| Platform | Minimum Version |
|---|---|
| Flutter | 3.3.0+ |
| Dart | 3.9.2+ |
| Android | SDK 24+ (Android 7.0) |
| iOS | Not yet supported |
Installation
1. Add Dependency
Add the plugin to your pubspec.yaml:
dependencies:
secure_emi_sdk: ^0.0.7
2. Configure AWS CodeArtifact Authentication
The SecureEMI Android SDK is hosted on AWS CodeArtifact. You need to set up authentication:
export CODEARTIFACT_AUTH_TOKEN=$(aws codeartifact get-authorization-token \
--domain secureemi \
--profile SecureEMIClient \
--query authorizationToken \
--output text)
For CI/CD pipelines, store this token securely in your secret manager.
3. Run Flutter Pub Get
flutter pub get
Usage
Initialize the SDK
Initialize the SDK before using any other methods. This should be done once, typically in your app's initialization:
import 'package:secure_emi_sdk/secure_emi_sdk.dart';
final secureEmi = SecureEmi();
await secureEmi.init(
SdkConfig(
clientId: 'your-client-id',
debug: true, // Set to false in production
),
null, // Optional theme
);
Register User
Register a user with the SecureEMI platform:
final success = await secureEmi.registerUser(
RegisterUser(
firstName: 'John',
lastName: 'Doe',
mobile: '9999999999',
email: 'john@example.com',
),
);
if (success == true) {
print('User registered successfully');
}
Start KYC Verification
Initiate the KYC verification flow:
await secureEmi.startKyc(
KycInput(requestId: 'unique-request-id'),
);
Check KYC Status
Retrieve the current KYC verification status:
final result = await secureEmi.getKycStatus();
if (result is KycSuccess) {
switch (result.status) {
case UserKycStatus.pending:
print('KYC is pending');
break;
case UserKycStatus.submitted:
print('KYC submitted, under review');
break;
case UserKycStatus.success:
print('KYC completed successfully');
break;
case UserKycStatus.failed:
print('KYC verification failed');
break;
case UserKycStatus.additionalDocRequired:
print('Additional documents required');
break;
}
} else if (result is KycFailure) {
if (result.error is NetworkError) {
print('Network error occurred');
} else if (result.error is ApiError) {
print('API error: ${(result.error as ApiError).message}');
} else if (result.error is InvalidResponse) {
print('Invalid response from server');
}
}
Custom Theme
Customize the KYC UI appearance:
final theme = KycTheme(
primaryColor: '#007AFF',
onPrimaryColor: '#FFFFFF',
backgroundColor: '#F5F5F5',
onBackgroundColor: '#000000',
textColor: '#333333',
secondaryTextColor: '#666666',
buttonColor: '#007AFF',
buttonTextColor: '#FFFFFF',
);
await secureEmi.init(
SdkConfig(clientId: 'your-client-id'),
theme,
);
API Reference
SecureEmi
| Method | Description |
|---|---|
init(SdkConfig config, KycTheme? theme) |
Initialize the SDK with configuration and optional theme |
registerUser(RegisterUser userInput) |
Register a user with the platform |
startKyc(KycInput kycInput) |
Start the KYC verification flow |
getKycStatus() |
Get the current KYC status |
getPlatformVersion() |
Get the platform version string |
Models
SdkConfig
| Property | Type | Required | Description |
|---|---|---|---|
clientId |
String | Yes | Your client ID for authentication |
debug |
bool | No | Enable debug mode (default: false) |
RegisterUser
| Property | Type | Required | Description |
|---|---|---|---|
firstName |
String | Yes | User's first name |
lastName |
String | Yes | User's last name |
mobile |
String | Yes | User's mobile number |
email |
String | Yes | User's email address |
KycInput
| Property | Type | Required | Description |
|---|---|---|---|
requestId |
String | Yes | Unique request identifier |
KycTheme
| Property | Type | Description |
|---|---|---|
primaryColor |
String | Primary theme color (hex format) |
onPrimaryColor |
String | Text color on primary |
backgroundColor |
String | Background color |
onBackgroundColor |
String | Text color on background |
textColor |
String | Main text color |
secondaryTextColor |
String | Secondary text color |
buttonColor |
String | Button background color |
buttonTextColor |
String | Button text color |
UserKycStatus
| Value | Description |
|---|---|
pending |
KYC not yet submitted |
submitted |
KYC submitted and under review |
success |
KYC completed successfully |
failed |
KYC verification failed |
additionalDocRequired |
Additional documents needed |
Error Types
| Type | Description |
|---|---|
NetworkError |
Network connectivity issue |
ApiError |
API returned an error (includes message) |
InvalidResponse |
Invalid response from server |
Example
See the example directory for a complete sample application.
Platform Support
| Platform | Status |
|---|---|
| Android | Supported |
| iOS | Stub implementation only |
License
Proprietary. All rights reserved. See LICENSE for details.
Support
For support, contact SecureEMI.