checkStatus method
Implementation
checkStatus(String cardToken, String appToken) async {
_pollingTimer = Timer.periodic(Duration(seconds: 5), (timer) async {
try {
ThreeDSStatusResponse statusResponse = await _customerRepository
.get3DSStatus(cardToken, appToken);
if (kDebugMode) {
print("3DS STATUS: ${jsonEncode(statusResponse.toJson())}");
}
if (statusResponse.status == 200) {
if (statusResponse.data!.isAuthenticateStart == false) {
if (kDebugMode) {
print("3DS STATUS AUTH START FAILED: ${IPGErrorMessages
.authStartFailed}");
}
timer.cancel();
check3DSStatusSink.add(Response.error(statusResponse.message));
}
if (statusResponse.data!.isLoading == false &&
statusResponse.data!.isAuthenticate == true &&
statusResponse.data!.isPay == true) {
if (kDebugMode) {
print("3DS STATUS COMPLETED MESSAGE: ${statusResponse.message}");
}
timer.cancel();
check3DSStatusSink.add(Response.completed(statusResponse.data!));
} else if (statusResponse.data!.isLoading == false &&
statusResponse.data!.isAuthenticate == true) {
if (kDebugMode) {
print("3DS STATUS AUTH FAILED MESSAGE: ${IPGErrorMessages
.authIncompleteProcess}");
}
timer.cancel();
check3DSStatusSink.add(Response.error(statusResponse.message));
} else if (statusResponse.data!.isLoading == false &&
statusResponse.data!.isAuthenticate == false) {
if (kDebugMode) {
print("3DS STATUS AUTH FAILED MESSAGE: ${IPGErrorMessages
.authFailed}");
}
timer.cancel();
check3DSStatusSink.add(Response.error(statusResponse.message));
}
} else {
if (kDebugMode) {
print("3DS STATUS FAILED MESSAGE: ${statusResponse.message}");
}
check3DSStatusSink.add(
Response.error(statusResponse.message, errorCode: 1),
);
}
} on UnauthorisedException {
timer.cancel();
if (kDebugMode) {
print("3DS STATUS ERROR: ${IPGErrorMessages.invalidAppToken}");
}
check3DSStatusSink.add(
Response.error(IPGErrorMessages.invalidAppToken),
);
} catch (e) {
timer.cancel();
check3DSStatusSink.add(Response.error(e.toString()));
if (kDebugMode) {
print("3DS STATUS ERROR: ${e.toString()}");
}
}
});
}