Ir a contenido
Crea una cuenta
o
inicia sesión
Logotipo de la documentación de Stripe
/
Pregúntale a la IA
Crear cuenta
Iniciar sesión
Empezar
Pagos
Ingresos
Plataformas y marketplaces
Gestión del dinero
Developer resources
Resumen
Acerca de Stripe Payments
Actualiza tu integración
Análisis de pagos
Pagos por Internet
ResumenEncuentra tu caso de usoManaged Payments
Utiliza Payment Links
Crear una página del proceso de compra
Desarrolla una integración avanzada
Desarrolla una integración en la aplicación
Métodos de pago
Añadir métodos de pago
Gestiona los métodos de pago
Proceso de compra más rápido con Link
Interfaces de pago
Payment Links
Checkout
Elements para la web
Elements en la aplicación
Escenarios de pago
Administrar múltiples divisas
Flujos de pagos personalizados
Capacidad adquirente flexible
Orquestación
Pagos en persona
Terminal
    Resumen
    Acepta pagos en persona
    Diseño de la integración
    Selecciona tu lector
    Diseña una integración
    Inicio rápido
    Aplicaciones de ejemplo
    Pruebas
    Configuración de Terminal
    Configura tu integración
    Conectarse a un lector
      Requisitos de red
    Aceptar un pago
    Cobrar pagos con tarjeta
    Otros métodos de pago
    Aceptar pagos sin conexión
    Pagos de pedidos telefónicos o pedidos por correo
    Consideraciones regionales
    Durante el proceso de compra
    Cobrar propinas
    Collect and save payment details for future use
    Autorizaciones flexibles
    Después del proceso de compra
    Reembolsar transacciones
    Solicitar recibos
    Personalizar Checkout
    Mostrar carrito
    Recopilar entradas en pantalla
    Recopilar datos deslizados
    Recopilar datos pulsados para los instrumentos de NFC
    Aplicaciones en dispositivos
    Gestionar lectores
    Pedir, devolver o sustituir lectores
    Registrar lectores
    Gestionar ubicaciones y zonas
    Configurar los lectores
    Seguimiento de los lectores
    Cifrado
    Referencias
    Referencias de la API
    Lectores móviles
    Lectores inteligentes
    Guía de migración de SDK
    Lista de verificación de la implementación
    Fichas de producto del lector de Stripe Terminal
Beyond payments
Incorporate your company
Criptomonedas
Financial Connections
Climate
InicioPagosTerminal

Conectarse a un lector

Conecta tu aplicación a un lector de Stripe Terminal.

Nota

Si aún no has elegido ningún lector, compara los lectores de Terminal disponibles y elige el que mejor se adapte a tus necesidades.

Tap to Pay en Android (TTPA) permite a los usuarios aceptar pagos sin contacto en persona con dispositivos Android compatibles con NFC. TTPA requiere la última versión del SDK de Terminal Android. TTPA es compatible con las tarjetas sin contacto de Visa, Mastercard y American Express y los monederos móviles basados en NFC (Apple Pay, Google Pay y Samsung Pay). TTPA es una extensión del SDK de Terminal Android y permite realizar pagos directamente en tu aplicación de Android.

Para conectar la aplicación al lector Tap to Pay en un dispositivo Android compatible, sigue estos pasos:

  1. Inicializar el SDK para TTPA.
  2. Detecta lectores usando el SDK para confirmar la compatibilidad del dispositivo.
  3. Conéctate a un lector usando el SDK para aceptar pagos.
  4. Gestiona desconexiones inesperadas para asegurarse de que el usuario pueda seguir aceptando pagos si el lector se desconecta inesperadamente.

Si la aplicación se ejecuta en un dispositivo que no cumple con los criterios de compatibilidad de dispositivos, el SDK devuelve una TerminalException que proporciona un contexto adicional en una devolución de llamada onFailure.

Inicializar el SDK

Referencia del SDK

  • TapToPay (Android)

TTPA opera en un proceso dedicado para hacer que las transacciones sean más seguras. En este proceso, se crea una segunda instancia de tu Application. Para evitar errores inesperados causados por la ejecución de tu código en este proceso, puedes omitir la inicialización en tu Application en este proceso marcando TapToPay.isInTapToPayProcess().

StripeTerminalApplication.kt
Kotlin
// Substitute with your application name, and remember to keep it the same as your AndroidManifest.xml class StripeTerminalApplication : Application() { override fun onCreate() { super.onCreate() // Skip initialization if running in the TTPA process. if (TapToPay.isInTapToPayProcess()) return // For example, this will be skipped. TerminalApplicationDelegate.onCreate(this) } }

Detectar lectores

Referencia del SDK

  • discoverReaders (Android)
  • TapToPayDiscoveryConfiguration (Android)

Utiliza el método discoverReaders para determinar el soporte de hardware para Tap to Pay en el dispositivo Android. discoverReaders verifica los siguientes requisitos:

  • El dispositivo contiene una antena y un conjunto de chips NFC en funcionamiento.
  • El dispositivo tiene un almacén de claves respaldado por hardware.
  • El dispositivo ejecuta una versión actual de Android (Android 11 o superior).
  • Para la versión no simulada del lector Tap to Pay, la aplicación no se puede depurar.

Tu aplicación debe estar en primer plano para que el servicio del lector Tap to Pay se inicie correctamente.

Si la aplicación se ejecuta en un dispositivo que no cumple con los requisitos anteriores, la devolución de llamada onFailure regresa con una TerminalException que contiene un TerminalErrorCode y contexto adicional. Los fallos en esta etapa no puede procesarlos el usuario final.

El uso de la versión de producción no simulada del lector Tap to Pay con aplicaciones procesables no es compatible por razones de seguridad y cumplimiento de la normativa. Para probar tu integración con el lector Tap to Pay en Android, establece TapToPayDiscoveryConfiguration.isSimulated en true durante el descubrimiento del lector. Debes establecer este valor en false en la versión de liberación de tu aplicación.

DiscoverReadersActivity.kt
Kotlin
var discoverCancelable: Cancelable? = null fun onDiscoverReaders() { val isApplicationDebuggable = 0 != applicationInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE val config = TapToPayDiscoveryConfiguration(isSimulated = isApplicationDebuggable) // Save this cancelable to an instance variable discoverCancelable = Terminal.getInstance().discoverReaders( config, object : DiscoveryListener { override fun onUpdateDiscoveredReaders(readers: List<Reader>) { // Automatically connect to supported mobile readers } }, object : Callback { override fun onSuccess() { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) } override fun onStop() { super.onStop() // If you're leaving the activity or fragment without selecting a reader, // make sure you cancel the discovery process or the SDK will be stuck in // a discover readers phase discoverCancelable?.cancel( object : Callback { override fun onSuccess() { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) }

Para comprobar si un dispositivo cumple con los requisitos de hardware y sistema operativo de Tap to Pay en tiempo de ejecución, utiliza la función Terminal.supportsReadersOfType. Como parte de la inicialización del SDK de Terminal, esta función requiere que tu usuario final acepte solicitudes de permiso para acceder a la ubicación y al Bluetooth. Esta función tarda aproximadamente 10 milisegundos en ejecutarse en la mayoría de los dispositivos.

Conectarse a un lector

Referencia del SDK

  • connectReader (Android)
  • TapToPayConnectionConfiguration (Android)

Para aceptar pagos de Tap to Pay, proporciona el lector detectado del paso anterior al método connectReader.

connectReader verifica los siguientes requisitos:

  • El dispositivo tiene una conexión estable a Internet.
  • El dispositivo no está rooteado y el gestor de arranque del dispositivo está bloqueado y sin cambios.
  • El dispositivo utiliza los servicios de Google Móvil.
  • El dispositivo ejecuta una versión actual de Android (Android 11 o superior).
  • La aplicación utiliza una versión compatible del SDK de Tap to Pay (actualmente 2.20.0 o superior).

Si tu aplicación se ejecuta en un dispositivo que no cumple con los requisitos anteriores, la devolución de llamada onFailure’ regresa con una TerminalException que contiene un TerminalErrorCode y contexto adicional. El usuario final puede tomar medidas en algunos de los motivos de error. Por ejemplo:

  • STRIPE_API_CONNECTION_ERROR: el usuario puede conectarse a una fuente de Internet estable.
  • TAP_TO_PAY_UNSUPPORTED_ANDROID_VERSION: el usuario puede actualizar su sistema operativo si hay una actualización disponible del fabricante del dispositivo.

Debes registrar tu lector en una ubicación tras la conexión. Para hacerlo, crea y usa un TapToPayConnectionConfiguration con el locationId establecido en el ID de ubicación relevante al conectar.

ConnectReaderActivity.kt
Kotlin
val tapToPayReaderListener = yourTapToPayReaderListener val autoReconnectOnUnexpectedDisconnect = true val config = TapToPayConnectionConfiguration(
"{{LOCATION_ID}}"
, autoReconnectOnUnexpectedDisconnect, tapToPayReaderListener ), Terminal.getInstance().connectReader( firstReader, config, object : ReaderCallback { override fun onSuccess(reader: Reader) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } )

Gestionar las desconexiones inesperadas

Referencia del SDK

  • TapToPayReaderListener (Android)

Pueden producirse desconexiones inesperadas entre tu aplicación y el lector. Por ejemplo, el lector Tap to Pay podría desconectarse inesperadamente porque:

  • Android OS finaliza el servicio del lector Tap to Pay debido a limitaciones de memoria.
  • El dispositivo pierde la conexión a Internet.

Hay dos maneras de gestionarlo:

Intenta la reconexión de forma automática

Stripe intenta automáticamente reconectarse de forma predeterminada cuando se produce una desconexión inesperada. Configura TapToPayReaderListener para las devoluciones de llamada de reconexión automática en tu aplicación.

ConnectReaderActivity.kt
Kotlin
val tapToPayReaderListener = yourTapToPayReaderListener val autoReconnectOnUnexpectedDisconnect = true Terminal.getInstance().connectReader( reader, TapToPayConnectionConfiguration(
"{{LOCATION_ID}}"
, autoReconnectOnUnexpectedDisconnect, tapToPayReaderListener ), readerCallback, )

Cuando el SDK intenta la reconexión de forma automática, ocurre lo siguiente:

  1. Cuando se produce una desconexión, el SDK intenta reconectarse automáticamente y te notifica a través de onReaderReconnectStarted. Asegúrate de que la app indique que se ha perdido la conexión y que se está realizando una reconexión.
    • Puedes usar el objeto Cancelable para detener el intento de reconexión en cualquier momento.
  2. Si el SDK se reconecta correctamente al lector, Stripe te notifica a través de onReaderReconnectSucceeded. Asegúrate de que la aplicación indique que se ha restablecido la conexión y de que se reanudan las operaciones normales.
  3. Si el SDK no puede reconectarse al lector, Stripe te notifica a través de onReaderReconnectFailed y TapToPayReaderListener.onDisconnect. Asegúrate de que la aplicación indique que se ha producido una desconexión inesperada.
CustomTapToPayReaderListener.kt
Kotlin
class CustomTapToPayReaderListener : TapToPayReaderListener { override fun onReaderReconnectStarted(reader: Reader, cancelReconnect: Cancelable, reason: DisconnectReason) { // 1. Notified at the start of a reconnection attempt // Use cancelable to stop reconnection at any time } override fun onReaderReconnectSucceeded(reader: Reader) { // 2. Notified when reader reconnection succeeds // App is now connected } override fun onReaderReconnectFailed(reader: Reader) { // 3. Notified when reader reconnection fails // App is now disconnected } }

Gestiona la desconexión de forma manual

Para gestionar las desconexiones del lector, puedes establecer autoReconnectOnUnexpectedDisconnect como false e implementar la devolución de llamada TapToPayReaderListener.onDisconnect. Esto permite que tu aplicación se vuelva a conectar al lector Tap to Pay y, cuando corresponda, notifique al usuario qué ha salido mal y cómo puede habilitar el acceso a Tap to Pay. Los usuarios finales pueden resolver algunos errores, como problemas de conectividad a Internet.

ReaderActivity.kt
Kotlin
class ReaderActivity : AppCompatActivity(), TapToPayReaderListener { // ... override fun onDisconnect(reason: DisconnectReason) { // Consider displaying a UI to notify the user and start rediscovering readers } // ... }

Próximos pasos

Has conectado tu aplicación al lector. A continuación, recoge tu primer pago de Stripe Terminal.

El nombre y el logotipo de BBPOS y Chipper™ son marcas comerciales o marcas registradas de BBPOS Limited en los Estados Unidos y/u otros países. El nombre y el logotipo de Verifone® son marcas comerciales o marcas registradas de Verifone en los Estados Unidos y/u otros países. El uso de las marcas comerciales no implica la aprobación por parte de BBPOS o Verifone.

¿Te ha sido útil la página?
SíNo
¿Necesitas ayuda? Ponte en contacto con el equipo de soporte.
Únete a nuestro programa de acceso anticipado.
Echa un vistazo a nuestro registro de cambios.
¿Tienes alguna pregunta? Ponte en contacto con el equipo de ventas.
¿LLM? Lee llms.txt.
Con tecnología de Markdoc