4. Compatibilidad con el modo manual
Última actualización
¿Te fue útil?
¿Te fue útil?
// 01 - Cambiar temporalmente la tarjeta predeterminada a la tarjeta seleccionada, si es necesario.
DigitalizedCard originalDefault = null;
// Obtener la tarjeta seleccionada por el usuario final.
DigitalizedCard selectedCard = getSelectedCard();
// Si la tarjeta seleccionada no es la tarjeta predeterminada, tome nota de la tarjeta predeterminada original,
// luego establezca la tarjeta seleccionada como predeterminada antes de continuar con el pago.
if (!isDefault(selectedCard)) {
originalDefault = getDefaultCard(); // Guardar la tarjeta predeterminada original.
setDefaultCard(selectedCard); // Establecer la tarjeta seleccionada como la nueva predeterminada.
}
// 02 - Definir el listener para manejar los eventos del flujo de pago sin contacto.
private PaymentServiceListener paymentServiceListener = new ContactlessPaymentServiceListener() {
@Override
public void onAuthenticationRequired(PaymentService paymentService,
CHVerificationMethod cvm, long cvmResetTimer) {
// 04 - Iniciar la autenticación según el método CDCVM.
startInputCvmActivity(cvm);
}
@Override
public void onTransactionCompleted(TransactionContext ctx) {
// 05a - Después de una transacción exitosa, volver a la tarjeta predeterminada original, si es necesario.
setDefaultCard(originalDefault);
}
@Override
public void onError(TransactionContext transactionContext,
PaymentServiceErrorCode errorCode, String msg) {
// 05b - Después de una transacción fallida, volver a la tarjeta predeterminada original, si es necesario.
setDefaultCard(originalDefault);
}
@Override
public void onTransactionStarted() {
}
@Override
public void onReadyToTap(PaymentService service) {
}
};
// 03 - Iniciar la autenticación antes del pago.
final PaymentBusinessService paymentBusinessService = PaymentBusinessManager.getPaymentBusinessService();
paymentBusinessService.startAuthentication(paymentServiceListener, PaymentType.CONTACTLESS);