@finos_sdk/sdk-ekyc 1.4.4 → 1.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +1 -1
- package/android/src/main/java/finos/sdk/ekyc/EKYCModule.kt +36 -0
- package/dist/EKYCModule.d.ts +2 -0
- package/dist/EKYCModule.js +32 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -3
- package/dist/package.json +1 -1
- package/dist/src/modules/FinosEKYCModule.d.ts +8 -0
- package/dist/src/modules/FinosEKYCModule.js +12 -0
- package/dist/src/types/EKYCEvent.d.ts +60 -0
- package/dist/src/types/EKYCEvent.js +65 -0
- package/dist/src/types/ekycESignType.d.ts +2 -0
- package/package.json +1 -1
- package/src/modules/FinosEKYCModule.ts +14 -0
- package/src/types/EKYCEvent.ts +76 -0
- package/src/types/ekycESignType.ts +2 -0
package/android/build.gradle
CHANGED
|
@@ -65,7 +65,7 @@ dependencies {
|
|
|
65
65
|
implementation 'com.facebook.react:react-android'
|
|
66
66
|
|
|
67
67
|
// Finos eKYC SDK dependencies from GitHub Packages Maven repository
|
|
68
|
-
def sdkVersion = "1.4.
|
|
68
|
+
def sdkVersion = "1.4.5.2"
|
|
69
69
|
implementation("finos.sdk.ekyc:ekyc:$sdkVersion")
|
|
70
70
|
implementation("finos.sdk.ekyc:ekycui:$sdkVersion")
|
|
71
71
|
implementation("finos.sdk.ekyc:nfc:$sdkVersion")
|
|
@@ -2,6 +2,7 @@ package finos.sdk.ekyc
|
|
|
2
2
|
|
|
3
3
|
import android.R
|
|
4
4
|
import android.net.Uri
|
|
5
|
+
import com.google.gson.Gson
|
|
5
6
|
import android.os.Handler
|
|
6
7
|
import android.os.Looper
|
|
7
8
|
import android.util.Base64
|
|
@@ -108,6 +109,7 @@ class EKYCModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
|
108
109
|
Arguments.createMap().apply {
|
|
109
110
|
putInt("status", result.status)
|
|
110
111
|
putString("msg", result.msg)
|
|
112
|
+
result.errorCode?.let { putString("errorCode", it) }
|
|
111
113
|
result.data?.let { d ->
|
|
112
114
|
putMap("data", Arguments.createMap().apply {
|
|
113
115
|
d.sessionId?.let { putString("sessionId", it) }
|
|
@@ -130,6 +132,7 @@ class EKYCModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
|
130
132
|
Arguments.createMap().apply {
|
|
131
133
|
putInt("status", result.status)
|
|
132
134
|
putString("msg", result.msg)
|
|
135
|
+
result.errorCode?.let { putString("errorCode", it) }
|
|
133
136
|
result.data?.let { d ->
|
|
134
137
|
putMap("data", Arguments.createMap().apply {
|
|
135
138
|
putString("transactionId", d.transactionId)
|
|
@@ -483,6 +486,17 @@ class EKYCModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
|
483
486
|
eKYCFinOSLiveness.startEkyc(
|
|
484
487
|
ekycConfigSDK = ekycConfig,
|
|
485
488
|
callbackSuccess = { event, data ->
|
|
489
|
+
// LOG_SUCCESS = internal submit result event (v1.4.5), don't resolve promise
|
|
490
|
+
if (event == EKYCEvent.LOG_SUCCESS) {
|
|
491
|
+
val logDataStr = data?.customData?.let { Gson().toJson(it) } ?: data?.toString() ?: "null"
|
|
492
|
+
Log.d(TAG, "LOG_SUCCESS [Liveness]: $logDataStr")
|
|
493
|
+
val logMap = Arguments.createMap().apply {
|
|
494
|
+
putString("event", event.name.toString())
|
|
495
|
+
putString("data", logDataStr)
|
|
496
|
+
}
|
|
497
|
+
sendEvent("onLivenessSuccess", logMap)
|
|
498
|
+
return@startEkyc
|
|
499
|
+
}
|
|
486
500
|
Log.d(TAG, "✅ startLiveness() success")
|
|
487
501
|
val (eventMap, promiseMap) = createSeparateMaps { map ->
|
|
488
502
|
map.putString("event", event.name.toString())
|
|
@@ -556,6 +570,17 @@ class EKYCModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
|
556
570
|
eKYCFinOSFaceService.startEkyc(
|
|
557
571
|
ekycConfigSDK = ekycConfig,
|
|
558
572
|
callbackSuccess = { event, data ->
|
|
573
|
+
// LOG_SUCCESS = internal submit result event (v1.4.5), don't resolve promise
|
|
574
|
+
if (event == EKYCEvent.LOG_SUCCESS) {
|
|
575
|
+
val logDataStr = data?.customData?.let { Gson().toJson(it) } ?: data?.toString() ?: "null"
|
|
576
|
+
Log.d(TAG, "LOG_SUCCESS [FaceCompare]: $logDataStr")
|
|
577
|
+
val logMap = Arguments.createMap().apply {
|
|
578
|
+
putString("event", event.name.toString())
|
|
579
|
+
putString("data", logDataStr)
|
|
580
|
+
}
|
|
581
|
+
sendEvent("onFaceCompareSuccess", logMap)
|
|
582
|
+
return@startEkyc
|
|
583
|
+
}
|
|
559
584
|
Log.d(TAG, "✅ startFaceCompare() success")
|
|
560
585
|
val (eventMap, promiseMap) = createSeparateMaps { map ->
|
|
561
586
|
map.putString("event", event.name.toString())
|
|
@@ -782,6 +807,17 @@ class EKYCModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMo
|
|
|
782
807
|
activity = currentActivity,
|
|
783
808
|
ekycConfigSDK = ekycConfigSDK,
|
|
784
809
|
callbackSuccess = { event, data ->
|
|
810
|
+
// LOG_SUCCESS = internal submit result event (v1.4.5), emit event only, don't resolve promise
|
|
811
|
+
if (event == EKYCEvent.LOG_SUCCESS) {
|
|
812
|
+
val logDataStr = data?.customData?.let { Gson().toJson(it) } ?: data?.toString() ?: "null"
|
|
813
|
+
Log.d(TAG, "LOG_SUCCESS [EkycUI]: $logDataStr")
|
|
814
|
+
sendEvent("onEkycUISuccess", Arguments.createMap().apply {
|
|
815
|
+
putString("status", "log")
|
|
816
|
+
putString("event", event.name.toString())
|
|
817
|
+
putString("data", logDataStr)
|
|
818
|
+
})
|
|
819
|
+
return@startEkyc
|
|
820
|
+
}
|
|
785
821
|
Log.d(TAG, "✅ startEkycUI() callback - event=${event.name}")
|
|
786
822
|
val result = data as? SDKEkycResult
|
|
787
823
|
val hasRealData = result?.ekycStateModel != null
|
package/dist/EKYCModule.d.ts
CHANGED
|
@@ -44,6 +44,8 @@ declare class SDKeKYC {
|
|
|
44
44
|
onLivenessError(callback: (error: any) => void): EmitterSubscription | null;
|
|
45
45
|
onFaceCompareSuccess(callback: (data: SDKEkycResultWithEvent) => void): EmitterSubscription | null;
|
|
46
46
|
onFaceCompareError(callback: (error: any) => void): EmitterSubscription | null;
|
|
47
|
+
onEkycUISuccess(callback: (data: any) => void): EmitterSubscription | null;
|
|
48
|
+
onEkycUIError(callback: (error: any) => void): EmitterSubscription | null;
|
|
47
49
|
removeAllListeners(): void;
|
|
48
50
|
sendOtp(config: SmsOtpConfig): Promise<SmsOtpResult>;
|
|
49
51
|
verifyOtp(config: SmsOtpConfig, otpCode: string): Promise<SmsOtpResult>;
|
package/dist/EKYCModule.js
CHANGED
|
@@ -420,6 +420,38 @@ class SDKeKYC {
|
|
|
420
420
|
return null;
|
|
421
421
|
}
|
|
422
422
|
}
|
|
423
|
+
onEkycUISuccess(callback) {
|
|
424
|
+
try {
|
|
425
|
+
const emitter = this.ensureEventEmitter();
|
|
426
|
+
if (!emitter) {
|
|
427
|
+
console.error('❌ Event emitter not available for onEkycUISuccess');
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
const listener = emitter.addListener('onEkycUISuccess', callback);
|
|
431
|
+
this.listeners.push(listener);
|
|
432
|
+
return listener;
|
|
433
|
+
}
|
|
434
|
+
catch (error) {
|
|
435
|
+
console.error('Failed to add onEkycUISuccess listener:', error);
|
|
436
|
+
return null;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
onEkycUIError(callback) {
|
|
440
|
+
try {
|
|
441
|
+
const emitter = this.ensureEventEmitter();
|
|
442
|
+
if (!emitter) {
|
|
443
|
+
console.error('❌ Event emitter not available for onEkycUIError');
|
|
444
|
+
return null;
|
|
445
|
+
}
|
|
446
|
+
const listener = emitter.addListener('onEkycUIError', callback);
|
|
447
|
+
this.listeners.push(listener);
|
|
448
|
+
return listener;
|
|
449
|
+
}
|
|
450
|
+
catch (error) {
|
|
451
|
+
console.error('Failed to add onEkycUIError listener:', error);
|
|
452
|
+
return null;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
423
455
|
removeAllListeners() {
|
|
424
456
|
this.listeners.forEach(listener => listener.remove());
|
|
425
457
|
this.listeners = [];
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type { OcrConfig } from './src/types/ekycOCRType';
|
|
|
12
12
|
export type { LivenessConfig } from './src/types/ekycLivenessType';
|
|
13
13
|
export { SDKFaceDetectStatus, SDK_LIVENESS_ACTIONS, customActionsToStrings } from './src/types/ekycLivenessType';
|
|
14
14
|
export type { FaceServiceConfig } from './src/types/ekycFaceType';
|
|
15
|
+
export { EKYCEvent, EKYCErrorEvent } from './src/types/EKYCEvent';
|
|
15
16
|
export type { SDKEkycResultWithEvent, SDKEkycResultStringWithEvent, StartEkycUIResult, EKYCError } from './src/types/ekycType';
|
|
16
17
|
export { getEkycError, AppIDType } from './src/types/ekycType';
|
|
17
18
|
export type { NfcError } from './src/types/ekycNFCType';
|
package/dist/index.js
CHANGED
|
@@ -33,9 +33,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.
|
|
38
|
-
exports.SDK_NAME = exports.SDK_VERSION = exports.USER_CANCEL = exports.ESIGN_INVALID_PIN_CODE = exports.ESIGN_INVALID_RECOVERY_CODE = exports.ESIGN_INVALID_LICENSE_CODE = exports.ESIGN_INVALID_CONTEXT = exports.ESIGN_MISSING_REQUEST_ID = exports.ESIGN_MISSING_SERIAL = exports.ESIGN_MISSING_IDENTITY = exports.ESIGN_MISSING_ACCESS_TOKEN = exports.ESIGN_NO_SESSION_ID = exports.ESIGN_MISSING_CONFIRMATION_DOC = exports.ESIGN_MISSING_REQUEST_JSON = exports.ESIGN_MISSING_CCCD = exports.ESIGN_MISSING_TOKEN = exports.ESIGN_ERROR_UNKNOWN = exports.ESIGN_AUTH_REQUEST_EXISTS = exports.ESIGN_INVALID_CERT_FOR_AUTH = exports.ESIGN_INVALID_SIGN_COUNT_OR_TIME = exports.ESIGN_AUTH_EXISTS = exports.ESIGN_SESSION_INVALID_LIST_CERT = void 0;
|
|
36
|
+
exports.OCR_USE_NEW_ID_DOCUMENT_2 = exports.OCR_USE_NEW_ID_DOCUMENT_1 = exports.OCR_FAKE_MRZ = exports.OCR_INVALID_GENDER_CODE = exports.OCR_INVALID_ID_CARD = exports.OCR_GLARE_ID_CARD = exports.OCR_BLURRY_ID_CARD = exports.OCR_CUT_CORNER_ID_CARD = exports.OCR_CANNOT_RECOGNIZE_PORTRAIT = exports.OCR_ID_CARD_FROM_OTHER_DEVICE = exports.OCR_NOT_ORIGINAL_ID_CARD = exports.OCR_MISSING_ID_CARD_PART = exports.OCR_CANNOT_GET_ISSUE_PLACE = exports.OCR_CANNOT_GET_GENDER = exports.OCR_CANNOT_GET_HOMETOWN = exports.OCR_CANNOT_GET_RESIDENCE = exports.OCR_CANNOT_GET_ISSUE_DATE = exports.OCR_CANNOT_GET_EXPIRY_DATE = exports.OCR_CANNOT_GET_BIRTH_YEAR = exports.OCR_CANNOT_GET_NAME = exports.OCR_CANNOT_GET_ID_NUMBER = exports.OCR_WRONG_ID_CARD_SIDE = exports.OCR_UNRECOGNIZED_ID_CARD = exports.SDK_MISS_KEY = exports.ERROR_UNKNOWN = exports.SDK_START_ERROR = exports.SDK_START_FLOW_ERROR = exports.getMessage = exports.getErrorResultFromDetails = exports.createCustom = exports.fromCode = exports.getLocalizedMessage = exports.parseNfcResponse = exports.AuthorizationStatus = exports.AppIDType = exports.getEkycError = exports.EKYCErrorEvent = exports.EKYCEvent = exports.customActionsToStrings = exports.SDK_LIVENESS_ACTIONS = exports.SDKFaceDetectStatus = exports.flowToStrings = exports.SDK_FLOW_OPTIONS = exports.SDKFlowType = exports.FinosESignModule = exports.FinosESign = exports.FinosEKYCModule = exports.FinosEKYC = exports.SDKeKYC = exports.sdkEKYC = void 0;
|
|
37
|
+
exports.ESIGN_INVALID_USER_ACCOUNT = exports.ESIGN_APP_LIMITED = exports.ESIGN_DEVICE_NOT_INIT = exports.ESIGN_INVALID_LICENSE_CONTENT = exports.ESIGN_INVALID_LICENSE = exports.ESIGN_DEVICE_ALREADY_INIT = exports.ESIGN_SESSION_INVALID = exports.FETCH_HISTORY_ERROR = exports.QRCODE_ERROR = exports.SMS_OTP_RATE_LIMIT = exports.SMS_OTP_NOT_FOUND = exports.SMS_OTP_MAX_ATTEMPTS = exports.SMS_OTP_INVALID_PHONE = exports.SMS_OTP_ERROR = exports.NFC_CHIP_AUTH_FAILED = exports.NFC_USER_CANCEL = exports.NFC_UNKNOWN_ERROR = exports.NFC_IO_ERROR = exports.NFC_INVALID_MRZ_KEY = exports.NFC_CONNECTION_LOST = exports.NFC_MUTUAL_AUTH_FAILED = exports.C06_ERROR = exports.SCAN_NFC_ENABLE = exports.SCAN_NFC_CHECK = exports.SCAN_NFC_ERROR = exports.HEAD_IS_TURNED_IN_SELFIE = exports.NUDITY_DETECTED_IN_SELFIE = exports.READING_GLASSES_DETECTED_IN_SELFIE = exports.EYEWEAR_DETECTED_IN_SELFIE = exports.FACE_OCCLUDED_IN_SELFIE = exports.FACE_IS_BLURRED = exports.MASK_PRESENT_IN_SELFIE = exports.EYES_CLOSED_IN_SELFIE = exports.MULTIPLE_FACES_IN_SELFIE = exports.LIVENESS_FAIL = exports.LIVENESS_ERROR = exports.FACE_ERROR = exports.FACE_HAT_ERROR = exports.OCR_ERROR = exports.OCR_FONT_BACK_NOT_MATCH = exports.OCR_PHOTOCOPY_ID_CARD = exports.OCR_FAKE_PORTRAIT_DETECTED = exports.OCR_FAKE_CHARACTERS_DETECTED_2 = exports.OCR_FAKE_CHARACTERS_DETECTED_1 = exports.OCR_UNKNOWN_ID_NUMBER_LENGTH = exports.OCR_MODIFIED_BIRTH_DATE_DETECTED_CMND = exports.OCR_MODIFIED_SYMBOL_DETECTED_CMND = exports.OCR_FAKE_BIRTH_DATE_DETECTED_CMND = exports.OCR_FAKE_PORTRAIT_DETECTED_CMND = exports.OCR_FAKE_CHARACTERS_DETECTED_CMND = void 0;
|
|
38
|
+
exports.SDK_NAME = exports.SDK_VERSION = exports.USER_CANCEL = exports.ESIGN_INVALID_PIN_CODE = exports.ESIGN_INVALID_RECOVERY_CODE = exports.ESIGN_INVALID_LICENSE_CODE = exports.ESIGN_INVALID_CONTEXT = exports.ESIGN_MISSING_REQUEST_ID = exports.ESIGN_MISSING_SERIAL = exports.ESIGN_MISSING_IDENTITY = exports.ESIGN_MISSING_ACCESS_TOKEN = exports.ESIGN_NO_SESSION_ID = exports.ESIGN_MISSING_CONFIRMATION_DOC = exports.ESIGN_MISSING_REQUEST_JSON = exports.ESIGN_MISSING_CCCD = exports.ESIGN_MISSING_TOKEN = exports.ESIGN_ERROR_UNKNOWN = exports.ESIGN_AUTH_REQUEST_EXISTS = exports.ESIGN_INVALID_CERT_FOR_AUTH = exports.ESIGN_INVALID_SIGN_COUNT_OR_TIME = exports.ESIGN_AUTH_EXISTS = exports.ESIGN_SESSION_INVALID_LIST_CERT = exports.ESIGN_INVALID_RECOVERY_OR_PIN = exports.ESIGN_SESSION_INVALID_REGISTER = void 0;
|
|
39
39
|
const EKYCModule_1 = __importStar(require("./EKYCModule"));
|
|
40
40
|
exports.sdkEKYC = EKYCModule_1.default;
|
|
41
41
|
Object.defineProperty(exports, "SDKeKYC", { enumerable: true, get: function () { return EKYCModule_1.SDKeKYC; } });
|
|
@@ -59,6 +59,10 @@ var ekycLivenessType_1 = require("./src/types/ekycLivenessType");
|
|
|
59
59
|
Object.defineProperty(exports, "SDKFaceDetectStatus", { enumerable: true, get: function () { return ekycLivenessType_1.SDKFaceDetectStatus; } });
|
|
60
60
|
Object.defineProperty(exports, "SDK_LIVENESS_ACTIONS", { enumerable: true, get: function () { return ekycLivenessType_1.SDK_LIVENESS_ACTIONS; } });
|
|
61
61
|
Object.defineProperty(exports, "customActionsToStrings", { enumerable: true, get: function () { return ekycLivenessType_1.customActionsToStrings; } });
|
|
62
|
+
// Export event enums (port of Android EKYCEvent.kt & EKYCErrorEvent.kt)
|
|
63
|
+
var EKYCEvent_1 = require("./src/types/EKYCEvent");
|
|
64
|
+
Object.defineProperty(exports, "EKYCEvent", { enumerable: true, get: function () { return EKYCEvent_1.EKYCEvent; } });
|
|
65
|
+
Object.defineProperty(exports, "EKYCErrorEvent", { enumerable: true, get: function () { return EKYCEvent_1.EKYCErrorEvent; } });
|
|
62
66
|
var ekycType_1 = require("./src/types/ekycType");
|
|
63
67
|
Object.defineProperty(exports, "getEkycError", { enumerable: true, get: function () { return ekycType_1.getEkycError; } });
|
|
64
68
|
Object.defineProperty(exports, "AppIDType", { enumerable: true, get: function () { return ekycType_1.AppIDType; } });
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos_sdk/sdk-ekyc",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "React Native SDK for eKYC - Vietnamese CCCD NFC reading, OCR, Liveness detection, Face matching, and C06, eSign, SmsOTP residence verification",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -146,6 +146,14 @@ export declare class FinosEKYCModule {
|
|
|
146
146
|
onFaceCompareSuccess(callback: (data: SDKEkycResultWithEvent) => void): import("react-native").EmitterSubscription | null;
|
|
147
147
|
/** Payload là EKYCError: { event, code, message }. */
|
|
148
148
|
onFaceCompareError(callback: (error: EKYCError) => void): import("react-native").EmitterSubscription | null;
|
|
149
|
+
/**
|
|
150
|
+
* Listen for eKYC UI success events (including LOG_SUCCESS from Liveness/FaceService submit)
|
|
151
|
+
*/
|
|
152
|
+
onEkycUISuccess(callback: (data: any) => void): import("react-native").EmitterSubscription | null;
|
|
153
|
+
/**
|
|
154
|
+
* Listen for eKYC UI error events
|
|
155
|
+
*/
|
|
156
|
+
onEkycUIError(callback: (error: any) => void): import("react-native").EmitterSubscription | null;
|
|
149
157
|
/**
|
|
150
158
|
* Remove all event listeners
|
|
151
159
|
*/
|
|
@@ -345,6 +345,18 @@ class FinosEKYCModule {
|
|
|
345
345
|
onFaceCompareError(callback) {
|
|
346
346
|
return this.sdk.onFaceCompareError(callback);
|
|
347
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* Listen for eKYC UI success events (including LOG_SUCCESS from Liveness/FaceService submit)
|
|
350
|
+
*/
|
|
351
|
+
onEkycUISuccess(callback) {
|
|
352
|
+
return this.sdk.onEkycUISuccess(callback);
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Listen for eKYC UI error events
|
|
356
|
+
*/
|
|
357
|
+
onEkycUIError(callback) {
|
|
358
|
+
return this.sdk.onEkycUIError(callback);
|
|
359
|
+
}
|
|
348
360
|
/**
|
|
349
361
|
* Remove all event listeners
|
|
350
362
|
*/
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native port of EkycNativeAndroid EKYCEvent.kt
|
|
3
|
+
* Enum các sự kiện SDK trả về qua callback, đồng bộ 1:1 với Android enum.
|
|
4
|
+
*
|
|
5
|
+
* @see EkycNativeAndroid/Module/SDKCore/src/main/java/finos/sdk/core/define/EKYCEvent.kt
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* EKYCEvent – tên event trả về từ native callback success.
|
|
9
|
+
* Giá trị string map chính xác với Android enum name.
|
|
10
|
+
*/
|
|
11
|
+
export declare enum EKYCEvent {
|
|
12
|
+
/** SDK khởi tạo thành công, activity/flow vừa mở. */
|
|
13
|
+
SDK_START_SUCCESS = "SDK_START_SUCCESS",
|
|
14
|
+
/** SDK flow hoàn thành, có data kết quả. */
|
|
15
|
+
SDK_END_SUCCESS = "SDK_END_SUCCESS",
|
|
16
|
+
/** Bắt đầu quét NFC (đang chờ thẻ). */
|
|
17
|
+
SCAN_NFC_START = "SCAN_NFC_START",
|
|
18
|
+
/** Quét NFC thành công, có dữ liệu thẻ. */
|
|
19
|
+
SCAN_NFC_SUCCESS = "SCAN_NFC_SUCCESS",
|
|
20
|
+
/** Xác minh C06 thành công. */
|
|
21
|
+
C06_SUCCESS = "C06_SUCCESS",
|
|
22
|
+
/** Liveness detection thành công. */
|
|
23
|
+
LIVENESS_SUCCESS = "LIVENESS_SUCCESS",
|
|
24
|
+
/** Face detection đang xử lý (progress). */
|
|
25
|
+
FACE_PROGRESS = "FACE_PROGRESS",
|
|
26
|
+
/** Face compare thành công. */
|
|
27
|
+
FACE_SUCCESS = "FACE_SUCCESS",
|
|
28
|
+
/** OCR xử lý thành công. */
|
|
29
|
+
OCR_SUCCESS = "OCR_SUCCESS",
|
|
30
|
+
/** QR Code quét thành công. */
|
|
31
|
+
QRCODE_SUCCESS = "QRCODE_SUCCESS",
|
|
32
|
+
/** Lấy lịch sử giao dịch thành công. */
|
|
33
|
+
FETCH_LATEST_TRANSACTION_SUCCESS = "FETCH_LATEST_TRANSACTION_SUCCESS",
|
|
34
|
+
/** Gửi SMS OTP thành công. */
|
|
35
|
+
SMS_OTP_SEND_SUCCESS = "SMS_OTP_SEND_SUCCESS",
|
|
36
|
+
/** Xác minh SMS OTP thành công. */
|
|
37
|
+
SMS_OTP_VERIFY_SUCCESS = "SMS_OTP_VERIFY_SUCCESS",
|
|
38
|
+
/** Gửi lại SMS OTP thành công. */
|
|
39
|
+
SMS_OTP_RESEND_SUCCESS = "SMS_OTP_RESEND_SUCCESS",
|
|
40
|
+
/** Kết quả NFC/Liveness/FaceService đã submit lên server thành công (v1.4.5). */
|
|
41
|
+
LOG_SUCCESS = "LOG_SUCCESS"
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* EKYCErrorEvent – tên event trả về từ native callback error.
|
|
45
|
+
* Đồng bộ với Android enum EKYCErrorEvent.
|
|
46
|
+
*
|
|
47
|
+
* @see EkycNativeAndroid/Module/SDKCore/src/main/java/finos/sdk/core/define/EKYCErrorEvent.kt
|
|
48
|
+
*/
|
|
49
|
+
export declare enum EKYCErrorEvent {
|
|
50
|
+
SDK_START_ERROR = "SDK_START_ERROR",
|
|
51
|
+
OCR_ERROR = "OCR_ERROR",
|
|
52
|
+
LIVENESS_ERROR = "LIVENESS_ERROR",
|
|
53
|
+
FACE_ERROR = "FACE_ERROR",
|
|
54
|
+
NFC_ERROR = "NFC_ERROR",
|
|
55
|
+
C06_ERROR = "C06_ERROR",
|
|
56
|
+
SDK_DETAIL = "SDK_DETAIL",
|
|
57
|
+
SMS_OTP_ERROR = "SMS_OTP_ERROR",
|
|
58
|
+
ESIGN_ERROR = "ESIGN_ERROR",
|
|
59
|
+
USER_CANCEL = "USER_CANCEL"
|
|
60
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* React Native port of EkycNativeAndroid EKYCEvent.kt
|
|
4
|
+
* Enum các sự kiện SDK trả về qua callback, đồng bộ 1:1 với Android enum.
|
|
5
|
+
*
|
|
6
|
+
* @see EkycNativeAndroid/Module/SDKCore/src/main/java/finos/sdk/core/define/EKYCEvent.kt
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.EKYCErrorEvent = exports.EKYCEvent = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* EKYCEvent – tên event trả về từ native callback success.
|
|
12
|
+
* Giá trị string map chính xác với Android enum name.
|
|
13
|
+
*/
|
|
14
|
+
var EKYCEvent;
|
|
15
|
+
(function (EKYCEvent) {
|
|
16
|
+
/** SDK khởi tạo thành công, activity/flow vừa mở. */
|
|
17
|
+
EKYCEvent["SDK_START_SUCCESS"] = "SDK_START_SUCCESS";
|
|
18
|
+
/** SDK flow hoàn thành, có data kết quả. */
|
|
19
|
+
EKYCEvent["SDK_END_SUCCESS"] = "SDK_END_SUCCESS";
|
|
20
|
+
/** Bắt đầu quét NFC (đang chờ thẻ). */
|
|
21
|
+
EKYCEvent["SCAN_NFC_START"] = "SCAN_NFC_START";
|
|
22
|
+
/** Quét NFC thành công, có dữ liệu thẻ. */
|
|
23
|
+
EKYCEvent["SCAN_NFC_SUCCESS"] = "SCAN_NFC_SUCCESS";
|
|
24
|
+
/** Xác minh C06 thành công. */
|
|
25
|
+
EKYCEvent["C06_SUCCESS"] = "C06_SUCCESS";
|
|
26
|
+
/** Liveness detection thành công. */
|
|
27
|
+
EKYCEvent["LIVENESS_SUCCESS"] = "LIVENESS_SUCCESS";
|
|
28
|
+
/** Face detection đang xử lý (progress). */
|
|
29
|
+
EKYCEvent["FACE_PROGRESS"] = "FACE_PROGRESS";
|
|
30
|
+
/** Face compare thành công. */
|
|
31
|
+
EKYCEvent["FACE_SUCCESS"] = "FACE_SUCCESS";
|
|
32
|
+
/** OCR xử lý thành công. */
|
|
33
|
+
EKYCEvent["OCR_SUCCESS"] = "OCR_SUCCESS";
|
|
34
|
+
/** QR Code quét thành công. */
|
|
35
|
+
EKYCEvent["QRCODE_SUCCESS"] = "QRCODE_SUCCESS";
|
|
36
|
+
/** Lấy lịch sử giao dịch thành công. */
|
|
37
|
+
EKYCEvent["FETCH_LATEST_TRANSACTION_SUCCESS"] = "FETCH_LATEST_TRANSACTION_SUCCESS";
|
|
38
|
+
/** Gửi SMS OTP thành công. */
|
|
39
|
+
EKYCEvent["SMS_OTP_SEND_SUCCESS"] = "SMS_OTP_SEND_SUCCESS";
|
|
40
|
+
/** Xác minh SMS OTP thành công. */
|
|
41
|
+
EKYCEvent["SMS_OTP_VERIFY_SUCCESS"] = "SMS_OTP_VERIFY_SUCCESS";
|
|
42
|
+
/** Gửi lại SMS OTP thành công. */
|
|
43
|
+
EKYCEvent["SMS_OTP_RESEND_SUCCESS"] = "SMS_OTP_RESEND_SUCCESS";
|
|
44
|
+
/** Kết quả NFC/Liveness/FaceService đã submit lên server thành công (v1.4.5). */
|
|
45
|
+
EKYCEvent["LOG_SUCCESS"] = "LOG_SUCCESS";
|
|
46
|
+
})(EKYCEvent || (exports.EKYCEvent = EKYCEvent = {}));
|
|
47
|
+
/**
|
|
48
|
+
* EKYCErrorEvent – tên event trả về từ native callback error.
|
|
49
|
+
* Đồng bộ với Android enum EKYCErrorEvent.
|
|
50
|
+
*
|
|
51
|
+
* @see EkycNativeAndroid/Module/SDKCore/src/main/java/finos/sdk/core/define/EKYCErrorEvent.kt
|
|
52
|
+
*/
|
|
53
|
+
var EKYCErrorEvent;
|
|
54
|
+
(function (EKYCErrorEvent) {
|
|
55
|
+
EKYCErrorEvent["SDK_START_ERROR"] = "SDK_START_ERROR";
|
|
56
|
+
EKYCErrorEvent["OCR_ERROR"] = "OCR_ERROR";
|
|
57
|
+
EKYCErrorEvent["LIVENESS_ERROR"] = "LIVENESS_ERROR";
|
|
58
|
+
EKYCErrorEvent["FACE_ERROR"] = "FACE_ERROR";
|
|
59
|
+
EKYCErrorEvent["NFC_ERROR"] = "NFC_ERROR";
|
|
60
|
+
EKYCErrorEvent["C06_ERROR"] = "C06_ERROR";
|
|
61
|
+
EKYCErrorEvent["SDK_DETAIL"] = "SDK_DETAIL";
|
|
62
|
+
EKYCErrorEvent["SMS_OTP_ERROR"] = "SMS_OTP_ERROR";
|
|
63
|
+
EKYCErrorEvent["ESIGN_ERROR"] = "ESIGN_ERROR";
|
|
64
|
+
EKYCErrorEvent["USER_CANCEL"] = "USER_CANCEL";
|
|
65
|
+
})(EKYCErrorEvent || (exports.EKYCErrorEvent = EKYCErrorEvent = {}));
|
|
@@ -56,6 +56,7 @@ export interface ESignSignRequestConfirm {
|
|
|
56
56
|
export interface ESignApiResponse {
|
|
57
57
|
status: number;
|
|
58
58
|
msg: string;
|
|
59
|
+
errorCode?: string;
|
|
59
60
|
data?: {
|
|
60
61
|
sessionId?: string;
|
|
61
62
|
[key: string]: any;
|
|
@@ -69,6 +70,7 @@ export interface ESignApiResponse {
|
|
|
69
70
|
export interface ESignPdfResult {
|
|
70
71
|
status: number;
|
|
71
72
|
msg: string;
|
|
73
|
+
errorCode?: string;
|
|
72
74
|
data?: {
|
|
73
75
|
transactionId: string;
|
|
74
76
|
[key: string]: any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finos_sdk/sdk-ekyc",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "React Native SDK for eKYC - Vietnamese CCCD NFC reading, OCR, Liveness detection, Face matching, and C06, eSign, SmsOTP residence verification",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -361,6 +361,20 @@ export class FinosEKYCModule {
|
|
|
361
361
|
return this.sdk.onFaceCompareError(callback);
|
|
362
362
|
}
|
|
363
363
|
|
|
364
|
+
/**
|
|
365
|
+
* Listen for eKYC UI success events (including LOG_SUCCESS from Liveness/FaceService submit)
|
|
366
|
+
*/
|
|
367
|
+
public onEkycUISuccess(callback: (data: any) => void) {
|
|
368
|
+
return this.sdk.onEkycUISuccess(callback);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Listen for eKYC UI error events
|
|
373
|
+
*/
|
|
374
|
+
public onEkycUIError(callback: (error: any) => void) {
|
|
375
|
+
return this.sdk.onEkycUIError(callback);
|
|
376
|
+
}
|
|
377
|
+
|
|
364
378
|
/**
|
|
365
379
|
* Remove all event listeners
|
|
366
380
|
*/
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native port of EkycNativeAndroid EKYCEvent.kt
|
|
3
|
+
* Enum các sự kiện SDK trả về qua callback, đồng bộ 1:1 với Android enum.
|
|
4
|
+
*
|
|
5
|
+
* @see EkycNativeAndroid/Module/SDKCore/src/main/java/finos/sdk/core/define/EKYCEvent.kt
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* EKYCEvent – tên event trả về từ native callback success.
|
|
10
|
+
* Giá trị string map chính xác với Android enum name.
|
|
11
|
+
*/
|
|
12
|
+
export enum EKYCEvent {
|
|
13
|
+
/** SDK khởi tạo thành công, activity/flow vừa mở. */
|
|
14
|
+
SDK_START_SUCCESS = 'SDK_START_SUCCESS',
|
|
15
|
+
|
|
16
|
+
/** SDK flow hoàn thành, có data kết quả. */
|
|
17
|
+
SDK_END_SUCCESS = 'SDK_END_SUCCESS',
|
|
18
|
+
|
|
19
|
+
/** Bắt đầu quét NFC (đang chờ thẻ). */
|
|
20
|
+
SCAN_NFC_START = 'SCAN_NFC_START',
|
|
21
|
+
|
|
22
|
+
/** Quét NFC thành công, có dữ liệu thẻ. */
|
|
23
|
+
SCAN_NFC_SUCCESS = 'SCAN_NFC_SUCCESS',
|
|
24
|
+
|
|
25
|
+
/** Xác minh C06 thành công. */
|
|
26
|
+
C06_SUCCESS = 'C06_SUCCESS',
|
|
27
|
+
|
|
28
|
+
/** Liveness detection thành công. */
|
|
29
|
+
LIVENESS_SUCCESS = 'LIVENESS_SUCCESS',
|
|
30
|
+
|
|
31
|
+
/** Face detection đang xử lý (progress). */
|
|
32
|
+
FACE_PROGRESS = 'FACE_PROGRESS',
|
|
33
|
+
|
|
34
|
+
/** Face compare thành công. */
|
|
35
|
+
FACE_SUCCESS = 'FACE_SUCCESS',
|
|
36
|
+
|
|
37
|
+
/** OCR xử lý thành công. */
|
|
38
|
+
OCR_SUCCESS = 'OCR_SUCCESS',
|
|
39
|
+
|
|
40
|
+
/** QR Code quét thành công. */
|
|
41
|
+
QRCODE_SUCCESS = 'QRCODE_SUCCESS',
|
|
42
|
+
|
|
43
|
+
/** Lấy lịch sử giao dịch thành công. */
|
|
44
|
+
FETCH_LATEST_TRANSACTION_SUCCESS = 'FETCH_LATEST_TRANSACTION_SUCCESS',
|
|
45
|
+
|
|
46
|
+
/** Gửi SMS OTP thành công. */
|
|
47
|
+
SMS_OTP_SEND_SUCCESS = 'SMS_OTP_SEND_SUCCESS',
|
|
48
|
+
|
|
49
|
+
/** Xác minh SMS OTP thành công. */
|
|
50
|
+
SMS_OTP_VERIFY_SUCCESS = 'SMS_OTP_VERIFY_SUCCESS',
|
|
51
|
+
|
|
52
|
+
/** Gửi lại SMS OTP thành công. */
|
|
53
|
+
SMS_OTP_RESEND_SUCCESS = 'SMS_OTP_RESEND_SUCCESS',
|
|
54
|
+
|
|
55
|
+
/** Kết quả NFC/Liveness/FaceService đã submit lên server thành công (v1.4.5). */
|
|
56
|
+
LOG_SUCCESS = 'LOG_SUCCESS',
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* EKYCErrorEvent – tên event trả về từ native callback error.
|
|
61
|
+
* Đồng bộ với Android enum EKYCErrorEvent.
|
|
62
|
+
*
|
|
63
|
+
* @see EkycNativeAndroid/Module/SDKCore/src/main/java/finos/sdk/core/define/EKYCErrorEvent.kt
|
|
64
|
+
*/
|
|
65
|
+
export enum EKYCErrorEvent {
|
|
66
|
+
SDK_START_ERROR = 'SDK_START_ERROR',
|
|
67
|
+
OCR_ERROR = 'OCR_ERROR',
|
|
68
|
+
LIVENESS_ERROR = 'LIVENESS_ERROR',
|
|
69
|
+
FACE_ERROR = 'FACE_ERROR',
|
|
70
|
+
NFC_ERROR = 'NFC_ERROR',
|
|
71
|
+
C06_ERROR = 'C06_ERROR',
|
|
72
|
+
SDK_DETAIL = 'SDK_DETAIL',
|
|
73
|
+
SMS_OTP_ERROR = 'SMS_OTP_ERROR',
|
|
74
|
+
ESIGN_ERROR = 'ESIGN_ERROR',
|
|
75
|
+
USER_CANCEL = 'USER_CANCEL',
|
|
76
|
+
}
|
|
@@ -64,6 +64,7 @@ export interface ESignSignRequestConfirm {
|
|
|
64
64
|
export interface ESignApiResponse {
|
|
65
65
|
status: number;
|
|
66
66
|
msg: string;
|
|
67
|
+
errorCode?: string;
|
|
67
68
|
data?: {
|
|
68
69
|
sessionId?: string;
|
|
69
70
|
[key: string]: any;
|
|
@@ -78,6 +79,7 @@ export interface ESignApiResponse {
|
|
|
78
79
|
export interface ESignPdfResult {
|
|
79
80
|
status: number;
|
|
80
81
|
msg: string;
|
|
82
|
+
errorCode?: string;
|
|
81
83
|
data?: {
|
|
82
84
|
transactionId: string;
|
|
83
85
|
[key: string]: any; // Cho phép các field động khác
|