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.
Los usuarios de Stripe pueden utilizar la API Payment Intents, una ruta de integración única para crear pagos usando cualquier método admitido, para aceptar pagos de Klarna de clientes de los países compatibles de Klarna.
Klarna es un método de pago de uso único y de notificación inmediata que requiere que el cliente autentique su pago. Se redirige a los clientes a la página de Klarna, donde eligen entre varias opciones de pago (pago completo inmediato, pago en cuotas o pago diferido). Cuando el cliente acepta las condiciones, Klarna se asegura de que los fondos estén disponibles para el cliente y transfiere los fondos a tu cuenta de Stripe. El cliente le paga a Klarna en función de la opción de pago que haya elegido.
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.
Configura StripeLado del servidor
Primero, necesitas una cuenta de Stripe. Regístrate ahora.
Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación:
Crea un PaymentIntentLado del servidor
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. En primer lugar, crea un PaymentIntent
en tu servidor.
Si ya tienes una integración con la API Payment Intents, añade klarna
a la lista de tipos de métodos de pago para tu PaymentIntent
.
Klarna solo requiere la divisa del cliente. Si especificas el parámetro opcional shipping, asegúrate de que estos campos estén definidos y no estén vacíos: name
, address.
, city
, country
y postal_
.
Recupera el secreto del cliente
El PaymentIntent incluye un secreto de cliente que el lado del cliente utiliza para completar el proceso de pago de forma segura. Puedes usar diferentes métodos para pasar el secreto del cliente al lado del cliente.
Envía el pago a StripeLado del cliente
En este paso, efectivizarás los pagos de Klarna en el lado del cliente con Stripe.js.
Configura Stripe.js
Cuando un cliente haga clic para pagar con Klarna, recomendamos utilizar Stripe.js para enviar el pago a Stripe. Stripe.js es nuestra biblioteca JavaScript principal para crear flujos de pago. Automáticamente gestiona las complejidades como los redireccionamientos que se describen a continuación, y te dan la posibilidad de ampliar fácilmente tu integración a otros métodos de pago en el futuro. Incluye la secuencia de comandos de Stripe.js en tu página de proceso de compra añadiéndola al encabezado de tu archivo HTML.
<head> <title>Checkout</title> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
Crea una instancia de Stripe.js con el siguiente JavaScript en tu página de finalización de compra.
// Set your publishable key: remember to change this to your live publishable key in production // See your keys here: https://dashboard.stripe.com/apikeys var stripe = Stripe(
);'pk_test_TYooMQauvdEDq54NiTphI7jx'
En lugar de enviarle al cliente el objeto PaymentIntent completo, utiliza el secreto de cliente del paso 2. Esta clave es diferente de las claves de API que autentican las solicitudes de API de Stripe.
El secreto de cliente debe seguir gestionándose con cuidado porque sirve para completar el cargo. No lo registres, insertes en direcciones URL ni lo expongas a nadie que no sea el cliente.
Usa stripe.confirmKlarnaPayment para gestionar la redirección fuera de tu página y completar el pago. Añade un return_url a esta función para indicar a dónde Stripe redirigir al usuario después de completar el pago en el sitio web o la aplicación móvil de Klarna.
En la página de pagos de Klarna, el cliente selecciona entre las opciones de pago disponibles en el mercado. Consulta la disponibilidad por mercado en la tabla de la página de resumen. No puedes limitar ni preseleccionar opciones de pago en la página de pagos de Klarna; el hecho de dejarle esta opción al cliente maximiza la oportunidad de hacer transacciones contigo.
// Redirects away from the client const {error} = await stripe.confirmKlarnaPayment( '{{PAYMENT_INTENT_CLIENT_SECRET}}',{ return_url: 'https://example.com/checkout/complete', } ); if (error) { // Inform the customer that there was an error. }
Cuando tu cliente envía un pago, Stripe lo redirige a la return_
e incluye los siguientes parámetros de consulta de URL. La página de retorno puede usarlos para obtener el estado del PaymentIntent y mostrarle al cliente el estado del pago.
Cuando especifiques el return_
, también puedes anexar tus propios parámetros de consulta para usarlos en la página de retorno.
Parámetro | Descripción |
---|---|
payment_ | El identificador único del PaymentIntent . |
payment_ | El secreto de cliente del objeto PaymentIntent . Para las integraciones de suscripciones, este client_secret también se expone en el objeto Invoice a través de confirmation_ |
Cuando se redirige al cliente de nuevo a tu sitio web, puedes usar el payment_
para consultar el PaymentIntent y mostrarle al cliente el estado de la transacción.
Puedes obtener información sobre la opción de pago con Klarna que ha seleccionado el cliente en el charge
, en la propiedad payment_method_details. Hay cuatro valores posibles: pay_
, pay_
, pay_
, y pay_
. Consulta nuestra página de resumen de Klarna para obtener más información sobre estas opciones.
También puedes consultar la configuración regional empleada para localizar la página de pagos de Klarna en la propiedad payment_method_details.
{ "charges": { "data": [ { "payment_method_details": { "klarna": { "payment_method_category": "pay_in_installments", "preferred_locale": "en-US" }, "type": "klarna" }, "id": "src_16xhynE8WzK49JbAs9M21jaR", "object": "source", "amount": 1099, "client_secret": "src_client_secret_UfwvW2WHpZ0s3QEn9g5x7waU",
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.
Para las pruebas de producción, puedes utilizar un importe de 3500
en tu divisa local para probar todas las opciones de pago de Klarna además de la financiación. Por ejemplo, si quieres probar el Pago en 3 cuotas en Italia, puedes hacer una transacción de 35,00 EUR.
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 |