Aceptar un pago con Klarna
Descubre cómo aceptar Klarna, un método de pago internacional de «Compra ahora, paga después»
Partidas individuales unificadas con Klarna
Para optimizar las tasas de aprobación cuando te integres con Klarna, incluye datos de line_
para representar lo que hay en el carrito de un comprador. Para obtener acceso anticipado, consulta Partidas individuales de pago.
Aceptar Klarna en tu aplicación consiste en mostrar una vista web para que el cliente autentique su pago. A continuación, el cliente vuelve a tu aplicación y puedes confirmar automáticamente si el pago se ha efectuado correctamente o ha dado error.
Nota
Antes de iniciar la integración, asegúrate de que tu cuenta sea compatible con Klarna. Para ello, accede a la configuración de los métodos de pago.
Configurar StripeLado del servidorLado del cliente
Primero, necesitas una cuenta de Stripe. Inscríbete ahora.
Lado del servidor
Esta integración necesita puntos de conexión en tu servidor que se comuniquen con la API de Stripe. Usa las bibliotecas oficiales para acceder a la API de Stripe desde tu servidor:
Lado del cliente
El SDK para Android de Stripe es de código abierto y está completamente documentado.
Para instalar el SDK, añade stripe-android
al bloque dependencies
de tu archivo app/build.gradle:
Nota
Para conocer detalles de la última versión y de versiones anteriores del SDK, consulta la página Versiones de GitHub. Para recibir una notificación cuando se publique una nueva versión, mira las versiones del repositorio.
Configura el SDK con tu clave publicable de Stripe para que pueda hacer solicitudes a la API de Stripe, así como en tu subclase Application
:
Nota
Usa las claves de prueba durante las pruebas y las tareas de desarrollo, y las claves del modo activo cuando publiques tu aplicación.
Los ejemplos de Stripe también utilizan OkHttp y GSON para hacer solicitudes HTTP a un servidor.
Crea un PaymentIntentLado del servidorLado del cliente
Un PaymentIntent es un objeto que representa tu intención de cobrarle a un cliente y hace el seguimiento del ciclo de vida del proceso de pago en cada etapa.
Lado del cliente
El PaymentIntent devuelto incluye un client secret que puede utilizar el lado del cliente para completar el proceso de pago de forma segura en lugar de especificar el objeto PaymentIntent completo. En el lado del cliente, solicita un PaymentIntent desde tu servidor y guarda el secreto de cliente.
Envía el pago a StripeLado del cliente
Recupera el secreto de cliente del PaymentIntent que creaste en el paso 2 y llama al método de confirmación del PaymentLauncher. Esto presenta una vista web donde el cliente puede completar el pago. Después, se llama a onActivityResult con el resultado del pago.
Prueba la integración de Klarna
A continuación, tenemos datos de prueba especialmente elegidos para los países de los clientes actualmente aceptados. En un entorno de prueba, Klarna aprueba o rechaza una transacción en función de la dirección de correo electrónico proporcionada.
Autenticación en dos pasos
Cualquier número de seis dígitos es un código válido de autenticación en dos pasos. Utiliza 999999
para que la autenticación no se complete.
Método de reembolso
En el flujo de Klarna, puedes usar los siguientes valores de prueba para probar varios tipos de reembolso:
Tipo | Valor |
---|---|
Adeudo directo | DE11520513735120710131 |
Transferencia bancaria | Banco de demostración |
Tarjeta de crédito |
|
Tarjeta de débito |
|
Pagos fallidos
Klarna tiene en cuenta varios factores a la hora de decidir si acepta o rechaza una transacción (por ejemplo, el tiempo que el comprador lleva utilizando Klarna, el importe pendiente de pago del cliente, el valor del pedido actual).
Cuando el cliente elige un método de pago diferido, Klarna lleva a cabo una evaluación del riesgo antes de aceptar la transacción. Klarna podría rechazar la transacción debido a un resultado insatisfactorio de la evaluación de riesgos, al importe de la transacción o a que el cliente tenga una gran deuda pendiente. Por ello, te recomendamos que presentes otras opciones de pago como card
en tu flujo del proceso de compra. En estos casos, el PaymentMethod se separa y el estado del objeto PaymentIntent pasa automáticamente a requires_
.
Los clientes deben efectivizar el pago en el transcurso de 48 horas desde que se les redirige al sitio de Klarna. Si no se realiza ninguna acción después de 48 horas, el PaymentMethod se separa y el estado del objeto PaymentIntent pasa automáticamente de requires_
a requires_
.
En estos casos, informa a tus clientes que deben intentarlo de nuevo con una opción de pago diferente de tu flujo de proceso de compra.
Límites de velocidad de Klarna
Las peticiones de la API a Klarna están sujetas a otros límites de velocidad más allá de los límites de velocidad de toda la API de Stripe. Estos límites pueden variar en función de la forma de las peticiones de la API que realices. En general, si realizas más de 360 peticiones por minuto, es posible que veas alguna limitación de frecuencia en forma de respuestas con el código de estado HTTP 400
o 402
. Contáctanos para obtener más detalles si te preocupa que tu consumo pueda alcanzar estos niveles, ya que Klarna puede aumentar estos límites caso por caso.
Mensajes de error
Los errores en los pagos de Klarna normalmente devuelven uno de los siguientes códigos de fallo. Estos códigos se muestran en el objeto de la API last_payment_error.
Precaución
Antes de la versión de la API 2023-08-16
, cada error de Klarna se informaba como payment_intent_authentication_failure. Asegúrate de que la versión de la API esté actualizada para ver los errores detallados que se indican a continuación.
Código de fallo | Explicación |
---|---|
payment_method_customer_decline | El cliente ha cancelado el proceso de compra en la página de Klarna |
payment_method_provider_decline | Klarna ha rechazado el pago del cliente |
payment_intent_payment_attempt_expired | El cliente nunca completó el proceso de compra en la página de Klarna y la sesión de pago ha caducado |
payment_method_not_available | Se ha producido un error inesperado al intentar utilizar Klarna |