Ir a contenido
Crea una cuenta o inicia sesión
Logotipo de la documentación de Stripe
/
Pregúntale a la IA
Crear cuentaIniciar sesión
Empezar
Pagos
Ingresos
Plataformas y marketplaces
Gestión del dinero
Recursos para desarrolladores
API y SDKAyuda
Resumen
Acerca de Stripe Payments
Actualiza tu integración
Análisis de pagos
Pagos por Internet
ResumenEncuentra tu caso de usoUsa Managed Payments
Utiliza Payment Links
Usa una página de proceso de compra prediseñada
Crea una integración personalizada con Elements
Desarrolla una integración en la aplicación
Pagos en persona
Terminal
Métodos de pago
Añadir métodos de pago
    Resumen
    Opciones de integración de los métodos de pago
    Gestiona los métodos de pago predeterminados en el Dashboard
    Tipos de método de pago
    Tarjetas
    Pagar con el saldo de Stripe
    Pagos con criptomonedas estables
    Adeudos bancarios
    Redireccionamientos bancarios
    Transferencias bancarias
    Transferencias de crédito (Sources)
    Compra ahora y paga después
      Affirm
      Afterpay / Clearpay
      Alma
      Billie
      Capchase Pay
      Klarna
        Aceptar un pago
        Configurar pagos futuros
        Optimiza la conversión
        Cumple con las reglas Klarna
        Responder a las disputas
      Kriya
      Mondu
      Pago en factura
      Scalapay
      SeQura
      Sunbit
      Zip
    Pagos en tiempo real
    Vales
    Monederos
    Habilitar métodos de pago locales por país
    Métodos de pago personalizados
Gestiona los métodos de pago
Proceso de compra más rápido con Link
Escenarios de pago
Administrar múltiples divisas
Flujos de pagos personalizados
Capacidad adquirente flexible
Orquestación
Más allá de los pagos
Constituye tu empresa
Criptomonedas
Comercio agéntico
Financial Connections
Climate
Comprender el fraude
Protección antifraude de Radar
Gestiona disputas
Verificar identidades
Estados Unidos
Español (España)
InicioPagosAdd payment methodsBuy now, pay laterKlarna

Aceptar un pago con Klarna

Descubre cómo aceptar Klarna, un método de pago internacional de «Compra ahora, paga después»

Para crear una integración avanzada que administre pagos complejos y acepte pagos con Klarna, puedes usar Stripe Elements, como Payment Element y el Express Checkout Element. El Payment Element acepta más de 40 métodos de pago, valida los datos introducidos y gestiona los errores. El Express Checkout Element proporciona métodos de pago en un clic para Klarna y otros métodos de pago.

Descubre cómo integrar un formulario de pago personalizado de Stripe en tu sitio web rápidamente.

En esta guía se explican los pasos recomendados para gestionar pagos con Klarna en una integración que utiliza Elements y la API Payment Intents.

Nota

Antes de iniciar la integración, asegúrate de que tu cuenta cumple los requisitos para Klarna revisando la Configuración de métodos de pago.

Enumeración de métodos de pago manualmente

Recomendamos usar métodos de pago dinámicos, en los que Stripe maneje la lógica para mostrar dinámicamente los métodos de pago elegibles más relevantes a cada cliente y maximizar la conversión. Si eliges enumerar manualmente métodos de pago, especifica Klarna en la lista payment_method_types cuando crees un PaymentIntent.

Crea un PaymentIntent

Para maximizar las tasas de aceptación y reducir las disputas, especifica los siguientes parámetros al crear un PaymentIntent para pagos con Klarna:

  • envío: asegúrate de que estos campos estén definidos y no vacíos: nombre, address.line1, ciudad, país y postal_code.
  • amount_details.line_items
  • payment_method_data.billing_details: asegúrate de que estos campos estén definidos y no vacíos: nombre, address.line1, ciudad, país y postal_code.
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "payment_method_types[0]"=klarna \ -d amount=1099 \ -d currency=eur \ -d "amount_details[line_items][0][product_name]"="Your product name" \ -d "amount_details[line_items][0][unit_cost]"=1099 \ -d "amount_details[line_items][0][quantity]"=1 \ -d "shipping[address][city]"=Brothers \ -d "shipping[address][country]"=US \ -d "shipping[address][line1]"="27 Fredrick Ave" \ -d "shipping[address][postal_code]"=97712 \ -d "shipping[address][state]"=OR \ -d "payment_method_data[billing_details][address][city]"=Brothers \ -d "payment_method_data[billing_details][address][country]"=US \ -d "payment_method_data[billing_details][address][line1]"="27 Fredrick Ave" \ -d "payment_method_data[billing_details][address][postal_code]"=97712 \ -d "payment_method_data[billing_details][address][state]"=OR \ --data-urlencode "payment_method_data[billing_details][email]"="jenny.rosen@example.com" \ -d "payment_method_data[billing_details][name]"="Jenny Rosen"

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.

Recupera el secreto de cliente de un punto de conexión en tu servidor, utilizando la función fetch del navegador. Este enfoque es mejor si tu lado del cliente es una aplicación de una sola página, en particular una construida con un marco de front-end moderno como React. Crea el punto de conexión del servidor que se utiliza para el secreto de cliente:

main.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Y luego busca el secreto del cliente con JavaScript del lado del cliente:

(async () => { const response = await fetch('/secret'); const {client_secret: clientSecret} = await response.json(); // Render the form using the clientSecret })();

Envía el pago a Stripe

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.

checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/clover/stripe.js"></script> </head>

Crea una instancia de Stripe.js con el siguiente JavaScript en tu página de finalización de compra.

script.js
// 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. (Esta clave es diferente de tus claves de API que autentican las solicitudes de la API de Stripe.)

Asegúrate de administrar el secreto de cliente con cuidado porque sirve para completar el cargo. No lo registres, no lo insertes en URL ni lo expongas a nadie excepto al cliente.

Utiliza stripe.confirmKlarnaPayment para gestionar el redireccionamiento fuera de tu página y completar el pago. Añade una return_url a esta función para indicar a dónde debe redirigir Stripe al usuario después de que complete el pago en el sitio web o 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 página 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 aumenta las posibilidades de que haga transacciones contigo.

client.js
// 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_url 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_url, también puedes anexar tus propios parámetros de consulta para usarlos en la página de retorno.

ParámetroDescripción
payment_intentEl identificador único del PaymentIntent.
payment_intent_client_secretEl 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_secret

Cuando se redirige al cliente de nuevo a tu sitio web, puedes usar el payment_intent_client_secret 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 cargo, en la propiedad payment_method_details. Hay cuatro valores posibles: pay_later, pay_with_financing, pay_now y pay_in_installments. Consulta nuestra página resumen de Klarna para obtener más información sobre estas opciones.

También puedes encontrar la configuración regional utilizada para localizar la página de pagos de Klarna en 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 tu integración

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.

AprobadoDenegado
Fecha de nacimiento10-07-197003/05/1994
NombreModo de pruebaJohn
ApellidosPerson-ausnow
CalleWharf StSilverwater Rd.
Número de casa41-5
Código postal48772128
CiudadPort DouglasSilverwater
RegiónQLDNSW
Teléfono+61473752244+61473763254
Correo electrónicocustomer@email.aucustomer+denied@email.au

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:

TipoValor
Adeudo directoDE11520513735120710131
Transferencia bancariaBanco de demostración
Tarjeta de crédito
  • Número: 4111 1111 1111 1111
  • CVV: 123
  • Vencimiento: cualquier fecha válida en el futuro
Tarjeta de débito
  • Número: 4012 8888 8888 1881
  • CVV: 123
  • Vencimiento: cualquier fecha válida en el futuro

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_payment_method.

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_action a requires_payment_method.

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 solicitudes de API a Klarna están sujetas a límites de velocidad adicionales 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 solicitudes de API que realices. En general, si realizas más de 50 solicitudes por minuto, es posible que veas alguna limitación de frecuencia en forma de respuestas con el código de estatus HTTP 400`` o 402`. [Contacta con nosotros si te preocupa que tu consumo pueda alcanzar estos niveles, ya que Klarna puede aumentar estos límites según el 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 falloExplicación
payment_method_customer_declineEl cliente ha cancelado el proceso de compra en la página de Klarna
payment_method_provider_declineKlarna ha rechazado el pago del cliente
payment_intent_payment_attempt_expiredEl cliente nunca completó el proceso de compra en la página de Klarna y la sesión de pago ha caducado
payment_method_not_availableSe ha producido un error inesperado al intentar utilizar Klarna

Personalizaciones opcionales

Opcionalmente, puedes implementar varias personalizaciones diferentes para los flujos de pago con Klarna (como separar la autorización y captura de fondos) e interacciones con clientes (como gestionar redireccionamientos).

Separa la autorización y la captura

Klarna acepta la autorización y la captura por separado. Si hay un retraso en el pago y la entrega de productos a tu cliente, autoriza el pago primero y captúralo después. En el momento de la captura, Klarna envía un extracto al cliente e inicia las fechas de vencimiento de los pagos correspondientes que deban hacer. Debe capturarse el pago autorizado de Klarna en el transcurso de 28 días a partir de la autorización. De lo contrario, se cancelará automáticamente la autorización y ya no será posible capturar el pago.

  1. Indicarle a Stripe que autorice solamente

    Para indicar que quieres separar la autorización y la captura, establece capture_method en manual al crear el PaymentIntent. Este parámetro le indica a Stripe que solo debe autorizar el importe en la cuenta de Klarna del cliente.

    Command Line
    cURL
    Stripe CLI
    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    curl https://api.stripe.com/v1/payment_intents \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -d "payment_method_types[]"=klarna \ -d amount=1099 \ -d currency=eur \ -d capture_method=manual
  2. Capturar los fondos

    Una vez que se efectúa la autorización, el estado de PaymentIntent pasa a requires_capture. Para capturar los fondos autorizados, solicita la capture del PaymentIntent. De forma predeterminada, se captura el importe total autorizado; no puedes capturar más de ese importe, pero sí menos.

    Command Line
    cURL
    Stripe CLI
    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    curl https://api.stripe.com/v1/payment_intents/
    {{PAYMENT_INTENT_ID}}
    /capture
    \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -d amount_to_capture=750
  3. Opcional Cancela la autorización

    Klarna contabiliza cualquier pago autorizado a partir del poder adquisitivo total del cliente dentro de Klarna. Asegúrate de cancelar activamente cualquier pago autorizado que no puedas completar (por ejemplo, si no se pueden enviar los bienes) en cuanto lo sepas.

    Command Line
    cURL
    Stripe CLI
    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    curl https://api.stripe.com/v1/payment_intents/
    {{PAYMENT_INTENT_ID}}
    /cancel
    \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -d cancellation_reason=abandoned

Administra el redireccionamiento de Klarna de forma manual

Te recomendamos que uses Stripe.js para gestionar las redirecciones y los pagos de Klarna del lado del cliente con confirmKlarnaPayment. El uso de Stripe.js te ayuda a ampliar tu integración a otros métodos de pago. No obstante, también puedes redirigir manualmente a tus clientes en tu servidor siguiendo estos pasos:

  1. Crea y confirma un PaymentIntent del tipo klarna. Debes proporcionarle a tu cliente la URL del redireccionamiento posterior al pago en el campo return_url. Puedes proporcionar tus propios parámetros de consulta en esta URL, y la URL final del flujo de redireccionamiento los incluirá.

    Command Line
    cURL
    Stripe CLI
    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    curl https://api.stripe.com/v1/payment_intents \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -d "payment_method_types[]"=klarna \ -d amount=1099 \ -d currency=eur \ -d confirm=true \ --data-urlencode return_url="https://example.com/checkout/complete" \ -d "payment_method_data[type]"=klarna
  2. El PaymentIntent que se ha creado tiene el estado requires_action y el tipo para next_action es redirect_to_url.

    { "status": "requires_action", "next_action": { "type": "redirect_to_url", "redirect_to_url": { "url": "https://hooks.stripe.com/...", "return_url": "https://example.com/checkout/complete" } }, "id": "pi_1G1sgdKi6xqXeNtkldRRE6HT", "object": "payment_intent", "amount": 1099,
  3. Redirige al cliente a la URL proporcionada en la propiedad next_action.redirect_to_url.url. El código de ejemplo aquí es aproximado; el método de redireccionamiento puede ser diferente en tu entorno web.

    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    if payment_intent.status == 'requires_action' && payment_intent.next_action.type == 'redirect_to_url' url = payment_intent.next_action.redirect_to_url.url redirect(url) end

Cuando el cliente finaliza el proceso de pago, se le envía al return_url configurado en el paso 1. Se incluyen los parámetros de consulta de URL payment_intent y payment_intent_client_secret. Si return_url ya incluye parámetros de consulta, estos también se conservan.

Te recomendamos recurrir a los webhooks para confirmar el estado del pago.

Gestiona eventos posteriores al pago

Stripe envía un evento payment_intent.succeeded cuando se completa el pago. Utiliza el Dashboard, un webhook personalizado o una solución de socio para recibir estos eventos y ejecutar acciones como, por ejemplo, enviar un correo electrónico para confirmar el pedido al cliente, registrar la venta en una base de datos o iniciar el flujo de tareas de envío.

Escucha estos eventos en lugar de esperar una devolución de llamada del cliente. Por su parte, el cliente puede cerrar la ventana del navegador o salir de la aplicación antes de que se ejecute la devolución de llamada y los clientes malintencionados podrían manipular la respuesta. Configurar tu integración para escuchar eventos asincrónicos también te ayudará a aceptar más métodos de pago en el futuro. Obtén más información sobre las diferencias entre todos los métodos de pago aceptados.

  • Gestiona eventos manualmente en el Dashboard

    Utiliza el Dashboard para ver tus pagos de prueba en el Dashboard, enviar recibos por correo electrónico, gestionar pagos o reintentar pagos fallidos.

  • Crea un webhook personalizado

    Crea un webhook personalizado para escuchar eventos y crear flujos de pago asíncronos personalizados. Prueba y depura tu integración de webhooks de forma local con la CLI de Stripe.

  • Integra una aplicación prediseñada

    Gestiona eventos empresariales comunes, como la automatización o la comercialización y ventas, integrando una aplicación asociada.

Personaliza la página de pagos con Klarna

  • Rellenar automáticamente el formulario de Klarna

    Cuando el cliente decide pagarle a Klarna con una opción de pago diferido (es decir, pagar más tarde, en cuotas o con financiación), Klarna recopila la información necesaria para la evaluación de riesgos y la aprobación. El tipo de información depende del país del cliente. Para la mayoría de los países de Europa, son necesarios los datos completos de facturación y la fecha de nacimiento. Puedes transmitir esta información a través de la API, y el formulario se completará automáticamente cuando el cliente llegue a la página.

    Command Line
    cURL
    Stripe CLI
    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    curl https://api.stripe.com/v1/payment_intents \ -u "
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :"
    \ -d "payment_method_types[]"=klarna \ -d amount=1099 \ -d currency=eur \ -d confirm=true \ --data-urlencode return_url="https://example.com/checkout/complete" \ -d "payment_method_data[type]"=klarna \ --data-urlencode "payment_method_data[billing_details][email]"="customer@example.com" \ -d "payment_method_data[billing_details][name]"="Jenny Rosen" \ --data-urlencode "payment_method_data[billing_details][phone]"="+4915142321555" \ -d "payment_method_data[billing_details][address][line1]"="Alexanderplatz 1" \ -d "payment_method_data[billing_details][address][city]"=Berlin \ -d "payment_method_data[billing_details][address][postal_code]"=10551 \ -d "payment_method_data[billing_details][address][country]"=DE \ -d "payment_method_data[klarna][dob][day]"=10 \ -d "payment_method_data[klarna][dob][month]"=10 \ -d "payment_method_data[klarna][dob][year]"=1990
    Captura de pantalla de una página de pago de Klarna rellenada automáticamente con los datos de facturación de la API y personalizada para presentarse en inglés

    Una página de pago de Klarna rellenada automáticamente con los datos de facturación de la API y personalizada para presentarse en inglés para un cliente de Alemania

Añade partidas individuales al PaymentIntent

Partidas individuales unificadas con Klarna

Para optimizar las tasas de aprobación cuando te integres con Klarna, incluye datos de line_items para representar lo que hay en el carrito de un comprador. Para obtener acceso anticipado, consulta Partidas individuales de pago.

Muestra los mensajes del método de pago en tu sitio web

El Payment Method Messaging Element es un componente integrable de interfaz de usuario que ayuda a tus clientes a saber qué opciones de pago de «compra ahora, paga después» tienen en el proceso de compra directamente desde tus páginas de producto, carrito o pago.

Para añadir el Payment Method Messaging Element a tu sitio web, consulta Mostrar mensajes de métodos de pago.

Prince of Persia book
The Making of Prince of Persia: Journals 1985-1993
Jordan Mechner
99,00 US$
¿Te ha sido útil la página?
SíNo
  • ¿Necesitas ayuda? Ponte en contacto con el equipo de soporte.
  • 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