Crear vinculación del dispositivo
Última actualización
¿Te fue útil?
¿Te fue útil?
public void createBinding(@NonNull MastercardTAFHelper mastercardTAFHelper, @NonNull String tokenID, @NonNull String correlationID) {
mastercardTAFHelper.createBinding(tokenID,
correlationID,
new TokenBindingListener() {
@Override
public void onIssuerAuthenticationReady(@NonNull IDVSession idvSession) {
}
@Override
public void onIssuerAuthenticationRequired(IDVSession idvSession) {
// Obtener la lista de métodos de idv
List<IDVMethod> idvMethods = idvSession.getIdvMethods();
}
@Override
public void onIssuerAuthenticationError(@NonNull IDVSession pendingBindingSession, TMGClientException tmgClientException) {
// Comprobar el error o reintentar
}
@Override
public void onDeviceAuthentication(DeviceAuthentication deviceAuthentication) {
// Realizar autenticación del dispositivo usando biometría
}
@Override
public void onSuccess() {
// Gestionar la interfaz de usuario del éxito de crear vinculación
}
@Override
public void onError(TMGClientException exception) {
// Comprobar si hay algún error
}
});
}// La clase singleton para almacenar las propiedades requeridas para el flujo de Mastercard
class MastercardService {
static var shared = MastercardService()
var idvSession: MastercardTAFHelper.IDVSession? = nil
var completionHandler: ((MastercardTAFHelper.IDVSession?, TMGError?) -> Void)? = nil
}
let tokenID: String = ""
let correlationID: String = ""
// Iniciar crear vinculación
mastercardTAFHelper.createBinding(forTokenID: tokenID, correlationID: correlationID,
idvSessionHandler: { idvSession in
// guardar la sesión idv localmente
MastercardService.shared.idvSession = idvSession
// Lista de métodos de idv
let methods = idvSession.idvMethods
// Mostrar los métodos de idv al usuario
},
deviceAuthenticationHandler: { auth in
// Face ID
let customMessage = "" // Introduzca el mensaje personalizado. p. ej.: "Autentíquese con Face ID"
auth.startAuthentication(withMessage: customMessage)
},
completionHandler: { session, error in
// guardar el controlador de finalización localmente
MastercardService.shared.completionHandler?(session, error)
// vinculación exitosa
if error == nil {
}
// Gestionar el error o reintentar la sesión idv cuando haya un fallo
}
)public void selectIDVMethod(@NonNull MastercardTAFHelper mastercardTAFHelper, @NonNull String tokenID, @NonNull String correlationID, @NonNull FragmentActivity activity) {
mastercardTAFHelper.createBinding(tokenID,
correlationID,
new TokenBindingListener() {
@Override
public void onIssuerAuthenticationReady(@NonNull IDVSession idvSession) {
// validar OTP
}
@Override
public void onIssuerAuthenticationRequired(IDVSession idvSession) {
// Obtener la lista de métodos de idv
List<IDVMethod> idvMethods = idvSession.getIdvMethods();
// Enviar el método de idv seleccionado
IDVMethod selectedIdvMethod = idvMethods.get(0);
idvSession.selectIDVMethod(selectedIdvMethod);
}
@Override
public void onIssuerAuthenticationError(@NonNull IDVSession pendingBindingSession, TMGClientException tmgClientException) {
// Comprobar el error o reintentar
}
@Override
public void onDeviceAuthentication(DeviceAuthentication deviceAuthentication) {
// Realizar autenticación del dispositivo usando biometría
}
@Override
public void onSuccess() {
// Gestionar la interfaz de usuario del éxito de crear vinculación
}
@Override
public void onError(TMGClientException exception) {
// Comprobar si hay algún error
}
});
}guard let idvSession = MastercardService.shared.idvSession else {
// no hay sesión idv
return
}
// 1. Mostrar la lista de métodos de idv
do {
let idvMethods = try idvSession.idvMethods
let selectedIdvMethod = idvMethods[0] // el usuario selecciona 1 de los métodos de idv disponibles
// 2. enviar el método de idv
idvSession.selectIDVMethod(selectedIdvMethod) {
// 3. mostrar la página para introducir el valor del OTP
}
} catch let error {
// gestionar el error
}
// 4. El fallo en el paso 2, selectIDVMethod, se gestionará en completionHandler.
MastercardService.shared.completionHandler = { (session, error) in
// 5. Comprobar si es un error de selectIDVMethod.
if let session = session,
let error = error,
error.description == TMGError.invalidIdvMethod.description {
MastercardService.shared.idvSession = session
// 6. Reintentar el flujo de IDV.
}
}public void validateOTP(@NonNull MastercardTAFHelper mastercardTAFHelper, @NonNull String tokenID, @NonNull String correlationID, @NonNull FragmentActivity activity) {
mastercardTAFHelper.createBinding(tokenID,
correlationID,
new TokenBindingListener() {
@Override
public void onIssuerAuthenticationReady(@NonNull IDVSession idvSession) {
// Activar vinculación
String otp = "12345";
idvSession.validateOTP(otp);
}
@Override
public void onIssuerAuthenticationRequired(IDVSession idvSession) {
// Obtener la lista de métodos de idv
}
@Override
public void onIssuerAuthenticationError(@NonNull IDVSession pendingBindingSession, TMGClientException tmgClientException) {
// Comprobar el error o reintentar
}
@Override
public void onDeviceAuthentication(DeviceAuthentication deviceAuthentication) {
// Realizar autenticación del dispositivo usando biometría
CharSequence title = "title"; // título que se mostrará en la ventana emergente de autenticación biométrica.
CharSequence subTitle = "subTitle"; // subtítulo que se mostrará en la ventana emergente de autenticación biométrica.
CharSequence description = "description"; // descripción que se mostrará en la ventana emergente de autenticación biométrica.
CharSequence negativeButtonText = "negativeButtonText"; // texto del botón negativo que se mostrará en la ventana emergente de autenticación biométrica.
deviceAuthentication.startAuthentication(activity,
title,
subTitle,
description,
negativeButtonText);
}
@Override
public void onSuccess() {
// Gestionar la interfaz de usuario del éxito de crear vinculación
}
@Override
public void onError(TMGClientException exception) {
// Comprobar si hay algún error
}
});
}guard let idvSession = MastercardService.shared.idvSession else {
// no hay sesión idv
return
}
do {
let otp = "123456" // OTP introducido por el usuario
// 1. enviar el valor del otp
idvSession.validateOTP(otp)
} catch let error {
// gestionar el error
}
// 2. El fallo en el paso 1, validateOTP, se gestionará en completionHandler.
MastercardService.shared.completionHandler = { (session, error) in
// 3. Comprobar si es un error de validateOTP.
if let session = session,
let error = error,
error.description == TMGError.invalidOTPMessage.description {
MastercardService.shared.idvSession = session
// 4. Reintentar el flujo de IDV.
}
}