Skip to content

Tích hợp Flutter SDK ​

Hướng dẫn tích hợp CICReader Flutter plugin, phiên bản 1.0.8. Entry point là CakeEidPlugin.

Yêu cầu build ​

Thông tinMô tả
iOSXcode 15.2+, target iOS 13+
AndroidKotlin 1.7.10, minimum Android SDK 21

Tích hợp ​

iOS ​

Bật capability Near Field Communication Tag Reading, sau đó cập nhật Info.plist:

xml
<key>NFCReaderUsageDescription</key>
<string>{Enter your NFC usage description here}</string>

<key>com.apple.developer.nfc.readersession.iso7816.select-identifiers</key>
<array>
    <string>A0000002471001</string>
    <string>A0000002472001</string>
    <string>00000000000000</string>
</array>

Android ​

groovy
allprojects {
    repositories {
        maven { url "https://maven.google.com" }
        maven { url "https://jcenter.bintray.com" }  // đảm bảo dòng này có mặt
    }
}

Khởi tạo ​

dart
final eidPlugin = CakeEidPlugin();

final config = CakeNfcConfig(
  baseUrl: "<BASE_URL>",
  enableCheckData: true,
  readTimeoutMs: 60000,
  writeTimeoutMs: 60000,
  cacheScanStrategy: NfcCacheScanStrategy.NO_CACHE,
);

final success = await eidPlugin.initialize(config);

if (success) {
  print('Initialization succeeded');
}

Tham số:

Tham sốKiểuBắt buộcMặc địnhMô tả
baseUrlstringCó—Base URL cho các lệnh gọi API.
enableCheckDataboolKhôngtrueXác minh dữ liệu NFC với Cake RAR.
readTimeoutMsintKhông60000Timeout đọc API tính bằng mili-giây.
writeTimeoutMsintKhông60000Timeout ghi API tính bằng mili-giây.
cacheScanStrategyNfcCacheScanStrategyKhôngNO_CACHEXem Tổng quan Mobile SDK § Cache khi server lỗi.

INFO

Tham số constructor của Flutter là enableCheckData — cùng thiết lập mà Android và iOS SDK gọi là enableCheckNfcData. Hãy liên hệ đội CAKE nếu quá trình khởi tạo từ chối key này.

Đọc chip ​

Dùng MRZ — số CCCD 9 chữ số, ngày sinh, ngày hết hạn ​

dart
try {
  final result = await eidPlugin.readCIC(
    idCard: idCard,      // 9 chữ số cuối của số CCCD
    dob: dob,
    expiryDate: expiryDate,
    accessToken: accessToken,
    refId: refId,
  );
} catch (e) {
  // Xử lý lỗi
}
Tham sốKiểuBắt buộcMặc địnhMô tả
idCardstringCó—9 chữ số cuối của số CCCD.
dobstringCó—Ngày sinh, định dạng yyMMdd.
expiryDatestringCó—Ngày hết hạn của thẻ, định dạng yyMMdd.
accessTokenstringCó—Access token của request.
refIdstringCó—Reference ID của giao dịch cần xác minh.

Dùng CAN — số CCCD 12 chữ số ​

dart
try {
  final result = await eidPlugin.readCard(
    idCard: idCard,      // Số CCCD đầy đủ 12 chữ số
    accessToken: accessToken,
    refId: refId,
  );
} catch (e) {
  // Xử lý lỗi
}
Tham sốKiểuBắt buộcMặc địnhMô tả
idCardstringCó—Số CCCD đầy đủ 12 chữ số.
accessTokenstringCó—Access token của request.
refIdstringCó—Reference ID của giao dịch cần xác minh.

Lưu ý hai phương thức có tên khác nhau — readCIC cho MRZ, readCard cho CAN.

Kết quả ​

CICCardResult mang theo các data group thô, cùng với các trường thông tin công dân đã phân tích khi enableCheckData là true.

Dữ liệu chip ​

TrườngKiểuMô tả
comstringThông tin phiên bản Unicode và danh sách các data group hiện có. Base64.
sodstringDữ liệu SOD từ lần quét NFC. Base64.
dg1stringThông tin cơ bản của cá nhân — thông tin MRZ. Base64.
dg2stringẢnh khuôn mặt công dân đã mã hóa. Base64.
dg13stringThông tin liên quan đến công dân. Base64.
dg14stringDùng cho cơ chế truy cập EAC. Base64.
dg15stringPublic key, dùng cho Passive Authentication. Base64.
cloneStatusNfcCloneStatusClone status của thẻ. Xem Tổng quan Mobile SDK § Clone status.

Trường thông tin công dân — lấy từ API ​

TrườngKiểuMô tả
citizenIdentifystringSố định danh của công dân.
oldCitizenIdentifystringSố định danh cũ.
fullNamestringHọ và tên đầy đủ.
dateOfBirthstringNgày sinh.
dateOfExpirystringNgày hết hạn của thẻ.
genderstringGiới tính.
nationalitystringQuốc tịch.
ethnicitystringDân tộc.
religionstringTôn giáo.
placeOfOriginstringQuê quán.
placeOfResidencestringNơi thường trú.
personalIdentificationstringĐặc điểm nhận dạng cá nhân.
dateProvidestringNgày cấp thẻ.
fatherNamestringHọ tên cha.
motherNamestringHọ tên mẹ.
partnerNamestringHọ tên vợ/chồng.
faceImagestringẢnh khuôn mặt. Base64.
isVerifiedboolThẻ có được RAR xác minh hay không.
verificationKeystringVerification key — truyền giá trị này vào Xác minh NFC.
requestIdstringRequest ID của lần xác thực.

Các tên này khớp với tên trường của API, khác với Android và iOS SDK vốn dùng idCardNo / residenceAddress.

Xử lý lỗi ​

Ba lỗi sau xuất hiện chung trên cả hai nền tảng:

TrườngKiểuMô tả
UserCancelled3Người dùng đã hủy thao tác.
SessionOnGoing4Một phiên đọc khác đang diễn ra.
Unspecified-1Lỗi không mong đợi. Thông báo mang theo chi tiết.

Ngoài các lỗi đó, lỗi xuất hiện với mã của nền tảng gốc — bảng iOS cho bản build iOS, bảng Android cho bản build Android. Cả hai đều có trong Mã lỗi.

Hàm dựng sẵn ​

TrườngKiểuMô tả
isNfcAvailable()Future<bool>Thiết bị có hỗ trợ đọc NFC hay không.
isNfcEnable()Future<bool>NFC có đang được bật hay không. Chỉ áp dụng cho Android — trên iOS luôn là true.
openNfcSetting()Future<void>Mở màn hình cài đặt NFC của thiết bị. Chỉ áp dụng cho Android.

Kiểm tra cấu hình IPA ​

Áp dụng cùng checklist production của iOS — xem Tích hợp iOS SDK § Kiểm tra cấu hình IPA.

Bước tiếp theo ​

Developers