Saltar al contenido principal

Prueba y pasa a producción

Prueba tu integración en modo de prueba en un iPhone real. Después, usa la lista de comprobación para pasar a producción.

Modo de prueba​

  • Una clave API del modo de prueba da un token de prueba. Los pagos con un token de prueba son pagos de prueba. Solo aparecen en modo de prueba en el MONEI Dashboard.
  • En modo de prueba, acercas una tarjeta real al iPhone. MONEI la sustituye por una tarjeta de prueba de Mastercard antes del cobro. Nunca se hace un cargo en tu tarjeta. Consulta Probar Tap to Pay.
  • Una clave API de producción da un token de producción.
  • No uses tokens de prueba y de producción en el mismo dispositivo.

Tap to Pay en el iPhone no funciona en el simulador de iOS. Prueba en un iPhone compatible: un iPhone XS o posterior con iOS 18.5 o posterior. Para las claves API de prueba y de producción, consulta Pruebas.

Prueba estos casos antes de pasar a producción:

  • Un pago aprobado y un pago rechazado, cada uno con su webhook firmado. En modo de prueba, un importe que acaba en 65 céntimos (por ejemplo 10,65) se rechaza.
  • Un pago que el usuario cancela en la pantalla de Apple.
  • Un token caducado: renuévalo y llama otra vez a prepare.
  • El acceso a la ubicación denegado, y el acceso a la ubicación permitido otra vez en Ajustes.
  • Tu estado pendiente para outcomeUnknown, y cómo tu equipo encuentra el pago por orderId.

App de ejemplo​

El repositorio del paquete tiene una app de ejemplo: Example/TapToPayExample.xcodeproj. Es una app de SwiftUI con un campo para el token, un importe, un ID de pedido, un botón de pago, las pantallas educativas y una vista del resultado.

  1. Abre Example/TapToPayExample.xcodeproj en Xcode.
  2. Define tu equipo y tu bundle ID. Tu equipo debe tener el permiso de Tap to Pay en el iPhone.
  3. Ejecuta la app en un iPhone compatible.
  4. Pega un token de tu servidor, o de una llamada curl con tu clave API del modo de prueba. Consulta Solicita un token.

Versiones y compatibilidad​

El SDK usa versionado semántico (MAJOR.MINOR.PATCH):

  • Patch: corrección de errores. Sin cambios en la API pública ni en el significado de los errores.
  • Minor: una actualización dentro del SDK, o una API nueva que no rompe tu código.
  • Major: un cambio en el significado de los errores, o un cambio que rompe tu código.
  • Versiones 0.x: hasta 1.0.0, una versión menor (por ejemplo 0.2.0) puede cambiar la API pública. Lee las notas de la versión antes de actualizar.
  • Las versiones preliminares (-beta.N) son solo para pruebas. No las publiques en producción.
Versión del SDKiOS mínimoCompilada conNotas
0.7.018.5Xcode 26.6 (Swift 6.3.3)Nuevo TapToPayError.passcodeRequired: las llamadas públicas comprueban que el iPhone tiene código de acceso y lanzan este error antes de iniciar el lector. Un switch sobre TapToPayError sin @unknown default no compila.
0.6.018.5Xcode 26.6 (Swift 6.3.3)Nueva versión del motor de pagos. Sin cambios en la API pública.
0.5.018.5Xcode 26.6 (Swift 6.3.3)Nuevo TapToPayError.setupIncomplete(fix:): las llamadas públicas comprueban la configuración de la app (texto de uso de la ubicación, entitlement de Tap to Pay, PRODUCT_TEAM_IDENTIFIER presente e igual al equipo que firma) y dan la corrección exacta. El SDK vuelve a preparar el lector por sí mismo cuando la app vuelve del segundo plano. Un switch sobre TapToPayError sin @unknown default no compila.
0.4.018.5Xcode 26.6 (Swift 6.3.3)Nueva API para los requisitos de revisión de Apple: isAccountLinked() y linkAccount() (aceptar los términos de Apple antes del cobro), readerState y readerStates() (progreso de la configuración y vista de inicialización), y TapToPayError.osUpdateRequired. Un switch sobre TapToPayError sin @unknown default no compila.
0.3.018.5Xcode 26.6 (Swift 6.3.3)Nuevo TapToPayErrorCode.readerSetupFailed(reason:): un fallo al configurar el lector da el paso y un código de error, no unknown. El código que compara con .paymentFailed(code: .unknown) no lo captura. Un switch sin @unknown default no compila.
0.2.018.5Xcode 26.6 (Swift 6.3.3)PaymentResult tiene campos nuevos: amount, currency, statusCode, statusMessage, authorizationCode, cardType y cardCountry. Un resultado rechazado muestra el motivo sin una llamada a MONEI. Sin cambios en los campos existentes.
0.1.118.5Xcode 26.6 (Swift 6.3.3)Se instala sin un token de GitHub: URL de descarga públicas. Mismo código del SDK que 0.1.0.
0.1.018.5Xcode 26.6 (Swift 6.3.3)Primera versión. Binario firmado. Mismo código que 0.1.0-beta.5.
0.1.0-beta.518.5Xcode 26.6 (Swift 6.3.3)Preliminar. Binario firmado.
0.1.0-beta.418.5Xcode 26.6 (Swift 6.3.3)Preliminar. Binario firmado.
0.1.0-beta.318.5Xcode 27.0 (Swift 6.4)Preliminar. Sin firmar.

Usa la misma versión de Xcode que "Compilada con", o una más reciente. A partir de 0.1.0-beta.4, MONEI firma el binario MoneiTapToPay (equipo 72J3PXJJ4K).

Para las versiones 0.x, usa una versión exacta en Swift Package Manager. A partir de 1.0.0, usa from:. Consulta Añade el paquete.

Requisitos de Apple​

Antes de dar el permiso de publicación, Apple revisa tu app según sus requisitos de Tap to Pay en el iPhone. Apple envía la lista de requisitos durante el proceso del permiso. La tabla da nuestro resumen de cada punto y cómo lo cumples con el SDK. La lista de Apple es la referencia. Lee también las Human Interface Guidelines de Tap to Pay en el iPhone y las directrices de marketing de Apple.

PuntoResumenCómo lo cumples
1.1Admite Tap to Pay en el iPhone en todos los modelos de iPhone compatibles.TapToPay.isSupported. Oculta Tap to Pay en el iPhone cuando es false.
1.2, 1.3Si Tap to Pay en el iPhone es tu método de pago principal: un destino de despliegue y unas capacidades del dispositivo que lo admitan.El SDK necesita iOS 18.5. Define tu destino de despliegue en iOS 18.5 o posterior. Define las capacidades del dispositivo en tu app.
1.4Pide al usuario que actualice iOS cuando su versión de iOS no admite Tap to Pay en el iPhone.El SDK necesita iOS 18.5, así que tu app no se ejecuta en las versiones antiguas de iOS que cita Apple. Si Apple indica que la versión de iOS no es compatible, las llamadas lanzan osUpdateRequired (desde 0.4.0). Pide al usuario que actualice iOS.
1.5Prepara Tap to Pay en el iPhone al iniciar la app y cuando vuelve al primer plano.Llama a prepare una vez al iniciar la app. El SDK prepara otra vez el lector cada vez que la app vuelve del segundo plano.
1.6Obtén de Apple el estado de los términos. No lo guardes en tu app.isAccountLinked() (desde 0.4.0).
1.7 a 1.9Inicio de sesión con Face ID o Touch ID, las Human Interface Guidelines y las directrices de marketing de Apple.Tu app.
2.1 a 2.3Un alta digital en la app que un comercio nuevo completa rápido en el iPhone.Tu app y el alta de la cuenta de MONEI.
3.1 a 3.4Comunicación sobre Tap to Pay en el iPhone: visible, para todos los usuarios que pueden usarlo y al final del alta.Tu app, con los recursos de marketing de Apple.
3.5 a 3.7Una acción clara para aceptar los términos, también fuera del cobro (por ejemplo en los ajustes), y en el cobro o antes.linkAccount() desde el alta y los ajustes (desde 0.4.0). En el cobro, acceptPayment muestra los términos si no se aceptaron.
3.8, 3.8.1Solo un administrador acepta los términos. Los demás usuarios ven un mensaje para que contacten con un administrador.Tu app decide quién puede llamar a linkAccount(). Para los demás usuarios, usa isAccountLinked() y tu mensaje. Consulta Acepta los términos de Apple antes del cobro.
3.8.2Apps empresariales: acepta los términos fuera de la app.Contacta con MONEI.
3.9Una pantalla que invita al comercio a probar Tap to Pay en el iPhone después de los términos y la formación.Tu app.
3.9.1Un indicador del progreso de la configuración.readerStates(), preparing(progress:) (desde 0.4.0).
4.1 a 4.3Formación del comercio con el contenido de Apple después de aceptar los términos, y desde los ajustes o la ayuda.presentEducation(from:) después de linkAccount(), y desde tus ajustes o tu ayuda. Muestra el contenido actual y traducido de Apple.
4.4 a 4.8Contenido de la formación: tarjetas, carteras digitales, introducción del PIN y método alternativo donde la región los pide; el kit de Apple fuera de la app.El contenido de Apple de presentEducation cubre la parte de la app.
5.1 a 5.5Un botón de Tap to Pay en el iPhone visible en el cobro, arriba, nunca desactivado, con el texto y el símbolo de Apple.Tu app.
5.6La pantalla de Apple se abre en menos de un segundo.Llama a prepare al iniciar la app. El SDK mantiene el lector listo en el primer plano.
5.7Una vista de inicialización cuando el lector todavía no está listo.Muéstrala mientras readerState no sea ready (desde 0.4.0). Consulta Muestra el estado del lector.
5.8Una vista de procesamiento después de la lectura de la tarjeta.Muestra tu vista de procesamiento mientras se ejecuta acceptPayment. La pantalla de Apple la cubre durante la lectura de la tarjeta.
5.9Un resultado claro: aprobado, rechazado o tiempo agotado.PaymentResult.status y TapToPayError. Para outcomeUnknown, muestra un estado pendiente.
5.10Un recibo digital para el cliente.Envíalo con la API de MONEI (enviar el recibo del pago) y el paymentId, o con tu propio recibo.
5.11Requisitos regionales.Contacta con MONEI.

Vídeos para la revisión​

Apple pide tres grabaciones de pantalla con la solicitud del permiso:

  1. Alta. Un usuario nuevo se registra (con las comprobaciones de identidad, si las tienes). Después, muestra cómo tu app presenta Tap to Pay en el iPhone cuando se aprueba la cuenta del comercio.
  2. Activación y formación. Un usuario existente descubre que Tap to Pay en el iPhone está disponible y acepta los términos. Muestra cada camino hacia los términos, por ejemplo desde los ajustes y desde el cobro. Muestra la formación después de los términos, dónde la encuentra el usuario más tarde y el indicador de progreso si la configuración no terminó.
  3. Cobro. Introduce un importe, muestra las opciones de pago y el botón de Tap to Pay en el iPhone, la vista de inicialización si la pantalla de Apple tarda en abrirse, y un pago correcto. Muestra la introducción del PIN y el método de pago alternativo donde tu región los pide. Graba este vídeo con un segundo dispositivo: una grabación de pantalla no muestra las pantallas de Tap to Pay en el iPhone de Apple.

Lista de comprobación para pasar a producción​

  • Apple dio a tu equipo el permiso de publicación de Tap to Pay en el iPhone.
  • Tu app usa una versión definitiva del SDK, por ejemplo 0.7.0, y no una versión preliminar (-beta.N).
  • Tu servidor usa tu clave API de producción, y la app solo recibe tokens de producción.
  • Tu servidor renueva cada token antes de que caduque, y la app llama a prepare con el token nuevo.
  • Cada pago tiene un orderId nuevo y una callbackUrl.
  • Tu servidor verifica la firma de cada webhook, y completa los pedidos solo a partir del webhook.
  • Tu app muestra un estado pendiente para outcomeUnknown y nunca vuelve a intentar el pago.
  • Tu interfaz usa el nombre "Tap to Pay en el iPhone", y lo oculta cuando TapToPay.isSupported es false.
  • Tu app cumple los requisitos de Apple, y grabaste los vídeos para la revisión.
  • Declaraste los detalles de privacidad de la App Store.

Preguntas frecuentes​

¿Puedo probar en el simulador de iOS?​

No. Tap to Pay en el iPhone no funciona en el simulador de iOS. Prueba en un iPhone compatible.

¿Puedo probar con una tarjeta real?​

Sí. En modo de prueba, acerca cualquier tarjeta real. MONEI la sustituye por una tarjeta de prueba, y nunca se hace un cargo en ella. Una tarjeta que pide el PIN se aprueba. El modo de prueba no usa el PIN.

¿Puedo publicar una versión preliminar en la App Store?​

No. Las versiones preliminares (-beta.N) son solo para pruebas. Publica una versión definitiva, por ejemplo 0.7.0.

¿Qué versión de Xcode necesito?​

La versión de Xcode de la columna "Compilada con" para tu versión del SDK, o una más reciente. Para 0.7.0, usa Xcode 26.6 o posterior.