Saltar al contenido principal

Primeros pasos

Acepta pagos NFC desde tu propia app de comercio utilizando los SDK de MONEI Pay.

Cómo funciona

  1. Tu backend genera un token de autenticación POS usando tu clave de API de MONEI
  2. Tu app de comercio recibe el token a través de tu propia API
  3. La app llama a acceptPayment() con el token y el importe
  4. El SDK abre MONEI Pay (o CloudCommerce en Android) para el pago NFC por contacto
  5. El resultado del pago se devuelve a tu app

Descarga MONEI Pay

Descarga MONEI Pay en el App StoreDescarga MONEI Pay en Google Play

Paso 1: Obtén tu clave de API

  1. Regístrate en dashboard.monei.com
  2. Ve a Ajustes → Claves de API
  3. Usa la clave de prueba para desarrollo y la clave de producción para entornos en vivo

Paso 2: Genera un token de autenticación POS

Tu backend llama a la API de MONEI para crear un token por cada sesión de pago. El token es válido durante 24 horas — puedes reutilizarlo para múltiples transacciones dentro de ese período. Nunca expongas tu clave de API en la app de comercio. Consulta la referencia completa de la API Crear token de autenticación POS.

curl -X POST https://api.monei.com/v1/pos/auth-token \
-H "Authorization: YOUR_API_KEY"
# Optional: scope to a specific terminal or store
# -H "Content-Type: application/json" \
# -d '{"pointOfSaleId": "pos_abc123", "storeId": "store_xyz"}'

Parámetros de la solicitud

ParámetroTipoRequeridoDescripción
pointOfSaleIdStringNoIdentificador único del punto de venta. Si se especifica, el pago queda vinculado a ese punto de venta.
storeIdStringNoIdentificador único de la tienda. Si se especifica, el pago queda vinculado a esa tienda.

Respuesta

{
"token": "eyJhbGciOiJSUzI1NiIs..."
}

El token es un JWT (firmado con RS256) que contiene el ID de cuenta y los metadatos del comercio. Expira después de 24 horas. Genera uno por sesión — no necesitas un token nuevo para cada transacción.

Paso 3: Integra tu app

Instala el SDK, configura tu proyecto, llama a acceptPayment() con el token del Paso 2 y gestiona los resultados. Cada guía cubre la instalación, la configuración de la plataforma, la referencia del SDK, la app de ejemplo y la resolución de problemas.

  • iOS — SDK en Swift mediante SPM o CocoaPods
  • Android — SDK en Kotlin mediante GitHub Packages o JitPack, modos Direct y Via MONEI Pay
  • React Native — Módulo Expo, multiplataforma con una sola API
  • Web — POS basado en navegador. Sin SDK; abre el deep link de MONEI Pay desde Safari o Chrome

Verifica los pagos desde el servidor

El SDK devuelve un PaymentResult a tu app, pero siempre debes verificar el pago desde tu backend antes de completar un pedido. Esto evita la manipulación en el lado del cliente.

Usa el endpoint Obtener pago con el transactionId devuelto en el resultado:

curl https://api.monei.com/v1/payments/{transactionId} \
-H "Authorization: YOUR_API_KEY"

También puedes configurar un callbackUrl al crear pagos para recibir notificaciones asíncronas por webhook. Consulta Verificar firma para más detalles sobre la validación de las cargas útiles del webhook.

Entrega de resultados

MONEI Pay devuelve los resultados de los pagos a través de dos canales independientes. Cumplen funciones distintas — úsalos conjuntamente, nunca de forma intercambiable.

CanalTipoConfianzaUsar para
callback_urlWebhook HTTPS firmadoDe confianzaCumplimiento de pedidos, lógica de negocio, conciliación
complete_urlRedirección en clienteNO de confianzaRedirección UX, devolver al usuario a tu flujo

callback_url — webhook de confianza

Un webhook HTTPS firmado entregado de servidor a servidor con un HMAC MONEI-Signature verificable. Este es el único canal en el que debes basar las decisiones de negocio (completar pedidos, conceder acceso, enviar recibos).

  • Debe ser https://http, IPs privadas y localhost son rechazados
  • Máximo 2048 caracteres
  • Anulación opcional por pago; si se omite, MONEI usa el webhook configurado en tu punto de venta
  • Valida la firma en el servidor antes de confiar en la carga útil — consulta Verificar firma

complete_url — redirección UX

Una URL que se abre en el dispositivo del usuario cuando el pago finaliza (con éxito o con error). Es una redirección única con el resultado codificado en parámetros de consulta. No está firmada, puede suplantarse y nunca debe usarse para lógica de negocio.

  • Acepta https://, esquemas de URL personalizados (mymerchant://...), Universal Links (iOS) y App Links (Android)
  • Esquemas rechazados: http, tel, sms, mailto, javascript, file, data, blob, intent, además de esquemas internos de la plataforma
  • Máximo 2048 caracteres
  • Úsalo para devolver al usuario a tu app o página — luego confirma el resultado real mediante Obtener pago o el webhook callback_url

Parámetros de consulta del resultado al abrir complete_url

Cuando MONEI Pay abre complete_url, añade los siguientes parámetros de consulta:

Éxito:

ParámetroDescripción
success"true"
transaction_idID de transacción de MONEI
amountImporte del pago en céntimos
card_brandMarca de la tarjeta (p. ej. visa, mastercard)
masked_card_numberNúmero de tarjeta enmascarado (p. ej. ****1234)

Error / cancelación:

ParámetroDescripción
success"false"
errorCódigo de error (ver más abajo)

Códigos de error que pueden aparecer en error:

CódigoSignificado
CANCELLEDEl usuario canceló, o tu app abandonó el flujo a mitad
TOKEN_EXPIREDEl token de autenticación POS ha expirado (>24h)
INVALID_TOKENEl token de autenticación POS está mal formado o firmado con la clave incorrecta
INVALID_AMOUNTEl importe falta, no es numérico o no es positivo
INVALID_CALLBACK_URLcallback_url no es https estricto o supera los 2048 caracteres
INVALID_COMPLETE_URLcomplete_url usa un esquema bloqueado o supera los 2048 caracteres
NOT_AUTHENTICATEDNo hay token POS y el usuario no ha iniciado sesión en MONEI Pay
ACCOUNT_NOT_CONFIGUREDLa cuenta de MONEI Pay existe pero le falta la configuración POS requerida
PAYMENT_FAILEDTarjeta rechazada, error de red u otro fallo posterior

Patrón recomendado

Combina ambos canales. El webhook se dispara de forma fiable desde los servidores de MONEI incluso si el dispositivo se queda sin conexión; la redirección le proporciona al usuario una ruta de regreso limpia.

monei-pay://accept-payment
?amount=1500
&auth_token=eyJ...
&order_id=order_42
&callback_url=https://merchant.com/webhook/monei
&complete_url=https://merchant.com/checkout/done

Cuando se abra complete_url, trata los parámetros de consulta solo como una pista — confirma mediante el webhook o Obtener pago antes de completar el pedido.

Conciliación con order_id

Opcional. Pasa tu propio order_id para que aparezca como orderId del pago en el webhook firmado callback_url. Es útil cuando tu POS ya tiene una referencia de pedido (número de mesa, número de factura, ID de carrito interno) y quieres correlacionar el pago de MONEI sin una consulta adicional a la base de datos. Si se omite, MONEI genera uno.

Problemas frecuentes

ProblemaCausaSolución
El SDK devuelve "app not found"MONEI Pay (o CloudCommerce en modo Direct de Android) no está instaladoInstala la app requerida en el dispositivo
Token rechazado / 401Token expirado (>24h) o clave de API del entorno incorrectoGenera un token nuevo; asegúrate de usar la clave de prueba para el modo de prueba y la de producción para producción
NFC no funcionaNFC desactivado o dispositivo no compatibleComprueba los ajustes del dispositivo; consulta la descripción general de MONEI Pay para los requisitos del dispositivo
El pago se completa en el dispositivo pero el backend no tiene registroFalta la verificación en el servidorVerifica siempre mediante la API o los webhooks (ver más arriba)

Próximos pasos