Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

2. Implementar devoluciones de llamada de pago sin contacto

Resumen

Durante el procesamiento de APDU, NFC Wallet SDK llama a su aplicación con eventos del ciclo de vida de pago.

Implemente ContactlessPaymentServiceListener en su aplicación de billetera digital para:

  • Detectar cuándo comienza y cuándo finaliza una transacción sin contacto.

  • Activar la autenticación adicional cuando se requiera CDCVM.

  • Gestionar errores y recuperarse para la siguiente transacción.

Integración del SDK

Implemente ContactlessPaymentServiceListener

Cree una instancia de listener e implemente las devoluciones de llamada que necesite.

// Instanciar un listener para el servicio HCE.
PaymentServiceListener myPaymentListener = new ContactlessPaymentServiceListener() {

    @Override
    public void onTransactionStarted() {
        /*
         * Se activa cuando se intercambia el primer APDU con el terminal POS.
         */
    }

    @Override
    public void onAuthenticationRequired(
            PaymentService activatedPaymentService,
            CHVerificationMethod chVerificationMethod,
            long cvmResetTimeout) {
        /*
         * Se activa cuando el usuario final debe autenticarse (CDCVM).
         *
         * Use chVerificationMethod para determinar el método requerido.
         * cvmResetTimeout solo se aplica a algunos métodos (por ejemplo, PIN de la billetera).
         * Úselo para indicar al usuario final durante cuánto tiempo sigue siendo válida la verificación.
         */
    }

    @Override
    public void onReadyToTap(PaymentService paymentService) {
        /*
         * Se activa después de una autenticación correcta.
         * Solicite al usuario final que acerque la tarjeta de nuevo antes de que caduque cvmResetTimeout.
         */
    }

    @Override
    public void onTransactionCompleted(TransactionContext transactionContext) {
        /*
         * Se activa cuando la transacción finaliza correctamente.
         * Use TransactionContext para mostrar detalles (importe, fecha y más).
         */
    }

    @Override
    public void onTransactionInterrupted() {
        /*
         * Se activa cuando se interrumpe el enlace NFC con el terminal POS.
         * Solicite al usuario final que acerque la tarjeta de nuevo.
         * Devolución de llamada opcional
         */
    }

    @Override
    public void onError(
            TransactionContext transactionContext,
            PaymentServiceErrorCode paymentServiceErrorCode,
            String message) {
        /*
         * Se activa cuando la transacción no puede completarse correctamente.
         */
    }

    @Override
    public void onFirstTapCompleted() {
        /*
         * Indica que se completó el procesamiento APDU del primer toque.
         * Solo compatible con transacciones basadas en PFP.
         */
    }

    @Override
    public void onNextTransactionReady(
            DeactivationStatus deactivationStatus,
            DigitalizedCardStatus digitalizedCardStatus,
            DigitalizedCard digitalizedCard) {
        /*
         * Se activa después de que finaliza una transacción.
         * Úselo para verificar el estado de la tarjeta y preparar el siguiente pago.
         */
    }
};

Devuelva el listener desde su servicio HCE

En su clase que extiende AsyncHCEService, devuelva el listener desde setupListener().

Flujo de devolución de llamada (típico)

Normalmente, las devoluciones de llamada se activan en este orden.

onTransactionInterrupted() puede ocurrir en cualquier momento después de onTransactionStarted().

  1. onTransactionStarted() después del primer intercambio de APDU con el terminal POS.

  2. onAuthenticationRequired() cuando el usuario final debe completar CDCVM.

  3. onReadyToTap() después de una autenticación correcta, para solicitar un segundo toque.

  4. onTransactionCompleted() cuando la transacción finaliza correctamente.

  5. onTransactionInterrupted() (opcional) cuando se pierde el enlace NFC con el terminal POS. Consulte Gestionar desconexiones del terminal POS.

  6. onNextTransactionReady() cuando el SDK está listo para la siguiente transacción.

Si ocurre un error, el SDK activa onError() en lugar de completar el flujo.

Gestionar desconexiones del terminal POS (opcional)

El SDK puede notificarle cuando se interrumpe el enlace NFC con el terminal POS.

Use onTransactionInterrupted() para solicitar al usuario final que acerque la tarjeta de nuevo.

Configure el comportamiento de reintento antes de iniciar los pagos sin contacto:

  • PaymentSetting.setRetryLimit(int)

    Establece cuántas desconexiones del terminal POS se toleran antes de que falle la transacción.

    El valor predeterminado es 0.

    Con 0, el SDK activa onError() en la primera desconexión.

  • PaymentSetting.setTransactionRetryTimeout(long)

    Establece cuánto tiempo puede reintentar el terminal POS después de una desconexión.

    Si no se recibe ningún APDU durante este intervalo, el SDK activa onError().

    El rango es 500 a 10000 milisegundos.

    El valor predeterminado es 2000 milisegundos.

Última actualización

¿Te fue útil?