Kyc Flutter Guide
Kyc Plugin - Flutter wrapper for PVComBank KYC SDK
📢 Phiên bản má»›i v2.0.0: Library đã được cáºp nháºt để há»— trợ đầy đủ các tham số cá»§a Native SDK vá»›i cấu trúc object rõ rà ng hÆ¡n. Xem Migration Guide để biết chi tiết.
📚 Documentation
- Quick Start Guide - Bắt đầu nhanh trong 5 phút
- API Documentation - Tà i liệu API đầy đủ
- Migration Guide - Hướng dẫn nâng cấp từ v1.x
- Update Summary - Tổng hợp các thay đổi
- Changelog - Lịch sỠphiên bản
âš¡ Quick Example
import 'package:hungtm5_kyc/hungtm5_kyc.dart';
final kyc = Kyc();
// Listen to events
kyc.eventStream.listen((event) {
if (event['type'] == 'success') {
print('✅ KYC Success');
}
});
// Start eKYC
final config = KycConfig(
env: Environment.UAT,
debug: true,
partnerId: "USER123",
agentCode: "AGENT001",
appCode: "APP001",
informationUser: InformationUserModel(
email: "[email protected]",
phone: "0123456789",
editable: true,
),
);
await kyc.eKyc(config);
Requirements
Flutter Environment
- Dart SDK:
>=2.18.0 <4.0.0 - Flutter:
>=3.3.0
Android Requirements
- Minimum SDK Version:
26(Android 7.0+) - Target SDK Version: Recommended
34+ - Gradle:
8.7+ - Android Gradle Plugin:
>=6.5.2 - Kotlin:
1.9.0+ - Java: JDK 17+
iOS Requirements
- iOS Deployment Target:
12.0+ - Xcode:
14.0+ - Swift:
5.0+ - CocoaPods: Latest stable version
Install
IOS
infor.plist
<key>NSCameraUsageDescription</key>
<string>Camera permission</string>
<key>NFCReaderUsageDescription</key>
<string>NFC permission</string>
<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
<string>00000000000000</string>
<string>A0000002471001</string>
<string>A0000002472001</string>
</array>
podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
if ["Alamofire", "CryptoSwift", "SnapKit", "lottie-ios", "KeychainSwift", "ObjectMapper"].include? "#{target}"
target.build_configurations.each do |config|
config.build_settings["BUILD_LIBRARY_FOR_DISTRIBUTION"] = "YES"
end
end
if ["Alamofire", "KeychainSwift", "ObjectMapper"].include? "#{target}"
target.build_configurations.each do |config|
deployment_target = config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"]
if !deployment_target.nil? || !deployment_target.empty? || deployment_target.to_f < 12.0
config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "12.0"
end
end
end
end
end
ANDROID
add permission in AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.NFC" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature
android:name="android.hardware.nfc"
android:required="false" />
Trong build.gradle (project) thêm các cấu hình như sau
allprojects {
repositories {
google()
mavenCentral()
maven { url "https://maven.google.com" }
maven { url "https://jitpack.io" }
maven {
url = uri("https://maven.pkg.github.com/case7532/HugUtils")
credentials {
username = ""
password = "<Access Key>"
}
}
}
}
Init
final kyc = Kyc();
void _setupEventListener() {
kyc.eventStream.listen(
(event) {
},
onError: (error) {
},
);
}
Open a bank account
Open an account instantly with just your phone number and email
Future<void> _startEKyc(email, phone, editable, requireEmail) async {
setState(
() {
kycStatus = "Starting KYC...";
},
);
try {
KycConfig config = KycConfig(
env: Environment.PROD,
debug: true,
appCode: "ONBOARD",
appId: "ONBOARD",
partnerUserId: "partner.user.id",
email: email,
phone: phone,
requireEmail: requireEmail);
await pvcomBankKyc.eKyc(config);
} catch (e) {
setState(() {
kycStatus = "Error starting KYC: $e";
});
}
}
trustData
Share data into create all services
Future<void> _trustData() async {
setState(() {
kycStatus = "Starting KYC Liveness...";
});
try {
KycConfig config = KycConfig(
env: Environment.UAT,
debug: true,
appCode: "ONBOARD",
appId: "ONBOARD",
partnerUserId: "partner.user.id",
email: email,
phone: phone,
trustDataConfirm: urlConfirm);
await pvcomBankKyc.eKycTrustData(config);
} catch (e) {
setState(() {
kycStatus = "Error starting KYC Liveness: $e";
});
}
}
trustDataV2
Share data but do not create pvconnect
Future<void> _trustDataV2() async {
setState(() {
kycStatus = "Starting KYC by Data...";
});
try {
KycConfig config = KycConfig(
env: Environment.PROD,
debug: true,
appCode: "ONBOARD",
appId: "ONBOARD",
partnerUserId: "partner.user.id",
email: email,
phone: phone,
);
await pvcomBankKyc.eKycTrustDataV2(config);
} catch (e) {
setState(() {
kycStatus = "Error starting KYC by Data: $e";
});
}
}
Callback
void _setupEventListener() {
pvcomBankKyc.eventStream.listen(
(event) {
print('Kyc received event: $event');
if (event is Map<String, dynamic>) {
//TODO: Your code here
}
},
onError: (error) {
print('Kyc error: $error');
setState(() {
kycStatus = "Error: $error";
});
},
);
}