Skip to content

Tích hợp Android SDK ​

Hướng dẫn tích hợp CICReader Android SDK, phiên bản 1.0.6. Viết bằng Kotlin; entry point là CICReadSDK.

Yêu cầu build ​

Thông tinMô tả
Kotlin1.7.10
minSdkVersion21

Tích hợp ​

Giải nén cic-reader-*.zip vào một vị trí bạn có thể tham chiếu — root project, một Maven repo cục bộ, hoặc tương tự.

groovy
allprojects {
    repositories {
        maven { url "https://maven.google.com" }
        maven { url "https://jcenter.bintray.com" }
        maven { url "path/to/cic_reader" }  // Ví dụ: maven { url "${project.rootDir}/repo" }
    }
}
groovy
dependencies {
    implementation("vn.cake.ekyc.sdk:eid:1.x.x")
}

Khởi tạo ​

kotlin
val config = CICConfig(
    "<BASE_URL>",
    true,
    60000,
    60000,
)

CICReadSDK.initialize(
    this,
    config,
    CICHeaderProvider {
        mapOf(
            "custom_header1" to "value1"
        )
    }
)

Tham số:

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

Đọc chip ​

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

Ném lỗi IllegalMRZException khi bất kỳ đầu vào nào sai.

kotlin
class MainActivity : AppCompatActivity(), CICReadCallback {
    fun readCICData() {
        cicReader.readCICData(this,
            "xxxxxxxxx",  // 9 chữ số cuối của số CCCD
            "901212",     // ngày sinh, định dạng yyMMdd
            "301212",     // ngày hết hạn, định dạng yyMMdd
            "<ACCESS_TOKEN>",
            "ref_00000001",
            this)
    }

    override fun onResult(result: CICReadResult) {
        // Gửi kết quả về backend của bạn; không ghi log — nó chứa dữ liệu chip và verification key.
    }

    override fun onError(exception: CICException?) {
        Log.d("CICReader", exception)
    }

    override fun onCancel() {
        Log.d("CICReader", "on user cancel")
    }
}
Tham sốKiểuBắt buộcMặc địnhMô tả
activityActivityCó—Activity hiện tại.
idCardstringCó—9 chữ số cuối của số CCCD.
dayOfBirthstringCó—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ố ​

kotlin
cicReader.readCICData(this,
    "001xxxxxxxxx",  // số CCCD đầy đủ 12 chữ số
    "<ACCESS_TOKEN>",
    "ref_00000001",
    this)
Tham sốKiểuBắt buộcMặc địnhMô tả
activityActivityCó—Activity hiện tại.
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.

Kết quả ​

CICReadResult 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 enableCheckNfcData 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.
cloneStatusVerificationStatusClone 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ả
idCardNostringSố định danh của công dân.
oldIdCardNumberstringSố đị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.
ethnicstringDân tộc.
religionstringTôn giáo.
placeOfOriginstringQuê quán.
residenceAddressstringNơi thường trú.
personalSpecificIdentificationstringĐặc điểm nhận dạng cá nhân.
dateOfIssuancestringNgày cấp thẻ.
fatherNamestringHọ tên cha.
motherNamestringHọ tên mẹ.
spouseNamestringHọ 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.

Xử lý lỗi ​

kotlin
override fun onError(exception: CICException?) {
    Log.w("CICReader", exception)

    when (exception) {
        is CICException.ServerError -> { }
        is CICException.NetworkError -> { }
        // ....
    }
}
TrườngKiểuMô tả
IllegalMRZException600316Phát hiện thông tin MRZ không hợp lệ.
IllegalCanException600317Phát hiện thông tin CAN không hợp lệ.
EstablishMessageChannelFailedException600333Thiết lập kênh message PACE thất bại.
NfcNotAvailableException600032NFC không khả dụng.
UnexpectedException600503Xảy ra lỗi không mong đợi.
ReadingDataFailedException600666Đọc dữ liệu từ CCCD thất bại.
NetworkError601400Xảy ra lỗi mạng.
ServerError601503Xảy ra lỗi server.
UnauthorizedError601404Người dùng không được phép truy cập tài nguyên.
NotFoundError601408Không tìm thấy tài nguyên được yêu cầu.
ApiError601401API trả về lỗi.
InvalidCardType600396Thẻ được quét không phải CCCD.

Hàm dựng sẵn ​

TrườngKiểuMô tả
isNFCAvailable(context)boolThiết bị có hỗ trợ đọc NFC hay không.
isNfcEnable(context)boolNFC có đang được bật hay không.
openNfcSetting(activity)voidMở màn hình cài đặt NFC của thiết bị.

Bước tiếp theo ​

Developers