El emisor seleccionó CUSTOMER_SERVICE como el método de ID&V.
Tu aplicación del comerciante puede dirigir al usuario final al servicio de atención al cliente.
Flujo
Flujo de enlace de dispositivo por servicio de atención al cliente.
Paso
Descripción
1
El usuario final selecciona la opción de servicio de atención al cliente en la aplicación del comerciante.
2
La aplicación del comerciante reenvía la selección al backend de Thales.
3
El usuario final contacta con el emisor para autenticarse y confirmar la solicitud de enlace de dispositivo.
4
El emisor acepta la solicitud de enlace de dispositivo e informa a VTS.
5–6
VTS notifica al backend de Thales, que notifica al backend del comerciante/PSP.
7
El backend del comerciante/PSP comunica el resultado a la aplicación del comerciante.
8
La aplicación del comerciante activa el enlace localmente en el SDK de Thales.
En el flujo de servicio de atención al cliente, la aplicación del comerciante inicia el enlace de dispositivo. La aprobación final proviene del lado del servidor.
Gestiona la posible desincronización dispositivo/servidor. Solo activa el enlace localmente después de recibir un estado exitoso.
Integración del SDK
1. Selecciona el método de ID&V de servicio de atención al cliente
Durante createBinding o resumeBinding, envía Servicio de atención al cliente como el método de ID&V.
Si el envío tiene éxito, el SDK llama a onIssuerAuthenticationReady. Si falla, el SDK llama a onError.
2. Obtener datos del servicio de atención al cliente
Usa el IDVMethod.value para mostrar la información del servicio de atención al cliente devuelta por el emisor.
Los datos necesarios para la activación del token se pueden recuperar desde el IDVMethod objeto.
3. Activar el enlace
Después de recibir una confirmación exitosa, activa el enlace llamando a activateBinding en el IDVSession.
Pasa null (Android) o nil (iOS) para confirmar que la verificación por servicio de atención al cliente está completa.
El resultado se devuelve mediante onSuccess o onError.
El resultado se devuelve en completionHandler.
Si la activación falla, completionHandler devuelve un IDVSession y un error para reintentar.
@Override
public void onIssuerAuthenticationRequired(IDVSession idvSession) {
// Enviar método ID&V CUSTOMER_SERVICE
for (IDVMethod idvMethod : idvSession.getIdvMethods()) {
if (idvMethod.getType().equals(IDVType.CUSTOMER_SERVICE)) {
idvSession.selectIdvMethod(idvMethod);
}
}
}
@Override
public void onIssuerAuthenticationReady(IDVSession idvSession,
@Nullable OtpActivationStatus status) {
}
@Override
public void onError(TMGClientException exception) {
// Comprueba si hay algún error
int errorCode = exception.getErrorCode();
int errorMessage = exception.getMessage();
}
guard let idvSession = VisaService.shared.idvSession else {
// no hay sesión idv
return
}
// 1. Muestra la lista de métodos de IDV
do {
let idvMethods = try idvSession.idvMethods
let selectedIdvMethod = idvMethods[0] // el usuario selecciona un método idv CUSTOMER_SERVICE
// 2. Enviar el método IDV.
idvSession.selectIDVMethod(selectedIdvMethod) { (result) in
if let otpActivationStatus = result {
} else {
if selectedIdvMethod.type == .customerService {
let value = selectedIdvMethod.value
// 3. Verificar a través del servicio de atención al cliente.
}
}
}
} catch let error {
// Maneja el error.
}
// 4. El fallo en el paso 2, selectIDVMethod, se manejará en completionHandler.
VisaService.shared.completionHandler = { (session, error) in
// 5. Comprueba si es un error de selectIDVMethod.
if let session = session,
let error = error,
error.description == TMGError.invalidIdvMethod.description {
VisaService.shared.idvSession = session
// 6. Reinicia el flujo de IDV.
}
}
// Obtener los datos del servicio de atención al cliente
String value = idvMethod.getValue();
let value = selectedIdvMethod.value
@Override
public void onIssuerAuthenticationReady(IDVSession idvSession,
@Nullable OtpActivationStatus status) {
// Activar el enlace localmente
idvSession.activateBinding(null);
}
@Override
public void onError(TMGClientException exception) {
// Comprueba si hay algún error
int errorCode = exception.getErrorCode();
int errorMessage = exception.getMessage();
}
guard let idvSession = VisaService.shared.idvSession else {
// no hay sesión idv
return
}
// 1. Llama a activate
idvSession.activateBinding(withValue: nil)
VisaService.shared.completionHandler = { (session, error) in
// 2. Enlace exitoso
if error == nil {
}
}