Ir a contenido
Crea una cuenta
o
Inicia sesión
Logotipo de Stripe Docs
/
Pregúntale a la IA
Crear una cuenta
Iniciar sesión
Empieza ahora
Pagos
Ingresos
Plataformas y marketplaces
Gestión del dinero
Herramientas para desarrolladores
Resumen
Acerca de Stripe Payments
Actualiza tu integración
Análisis de pagos
Pagos electrónicos
ResumenEncuentra tu caso de usoPagos administrados
Usa Payment Links
Crea una página del proceso de compra
Desarrolla una integración avanzada
Desarrolla una integración en la aplicación
Métodos de pago
Agrega métodos de pago
Gestiona los métodos de pago
Finalización de compra más rápida con Link
    Resumen
    Pagos bancarios instantáneos
    De un vistazo
    Link con Checkout
    Link con Elements web
    Link con Elements móviles
    Link con Invoicing
    Guías de integración
    Integraciones de pago con Link
    Crea una página del proceso de compra personalizada que incluya Link
    Configura los pagos futuros con Elements y Link
Interfaces de pago
Payment Links
Checkout
Elements para la web
Elements en la aplicación
Escenarios de pago
Flujos de pago personalizados
Capacidad adquirente flexible
Orquestación
Pagos en persona
Terminal
Otros productos de Stripe
Financial Connections
Criptomonedas
Climate
InicioPagosFaster checkout with Link

Crea una página del proceso de compra personalizada que incluya Link

Integra Link utilizando el Payment Element o el Link Authentication Element.

Copiar página

En esta guía se te indica cómo aceptar pagos con Link utilizando la API Payment Intents y Payment Element o Link Authentication Element.

Hay tres maneras de proteger la dirección de correo electrónico de un cliente para la autenticación e inscripción en Link:

  • Especifica una dirección de correo electrónico: puedes especificar una dirección de correo electrónico para el Payment Element usando defaultValues. Si ya recopilas la dirección de correo electrónico o el número de teléfono del cliente en el flujo de compra, te recomendamos este enfoque.
  • Recopilar una dirección de correo electrónico: puedes recopilar una dirección de correo electrónico directamente en el Payment Element. Si no recopilas la dirección de correo electrónico en ninguna parte del flujo de compra, te recomendamos este enfoque.
  • Link Authentication Element: puedes utilizar Link Authentication Element para crear un único campo de entrada de correo electrónico tanto para la recopilación de correos electrónicos como para la autenticación de Link. Te recomendamos que hagas esto si usas el Address Element.
Autenticarse o inscribirse con Link directamente en el Payment Element durante el proceso de finalización de compra

Recopila una dirección de correo electrónico del cliente para la autenticación o la inscripción en Link

Configurar Stripe
Lado del servidor

Primero, crea una cuenta de Stripe o inicia sesión.

Usa nuestras bibliotecas oficiales para acceder a la API de Stripe desde tu aplicación:

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Crear un PaymentIntent
Lado del servidor

Stripe usa un objeto PaymentIntent para representar tu intención de cobrar a un cliente y hace el seguimiento de los intentos de cobro y de los cambios en el estado del pago en todo el proceso.

Un diagrama resumen de todo el flujo de pago

Si recopilas datos de tarjetas para usarlos en el futuro con Setup Intents, enumera los métodos de pago manualmente en lugar de usar métodos de pago dinámicos. Para usar Link sin métodos de pago dinámicos, actualiza la integración para pasar de link a payment_method_types.

Cuando creas un PaymentIntent, ofrece a tus clientes de forma dinámica los métodos de pago más pertinentes, incluido Link, mediante el uso de métodos de pago dinámicos. Para usar métodos de pago dinámicos, no incluyas el parámetro payment_method_types. Si lo deseas, también puedes habilitar automatic_payment_methods.

Nota

Cuando tu integración no establece el parámetro payment_method_types, algunos métodos de pago se activan automáticamente, incluidas las tarjetas y billeteras.

Para agregar Link a tu integración de Elements usando métodos de pago dinámicos, haz lo siguiente:

  1. En la configuración del método de pago de tu Dashboard, activa Link.
  2. Si tienes una integración existente que enumera manualmente los métodos de pago, elimina el parámetro payment_method_types de tu integración.

Recuperar el secreto de cliente

El PaymentIntent incluye un secreto de cliente que el lado del cliente usa 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 de tu servidor con la funcionalidad fetch del navegador. Este método es más conveniente si tu lado del cliente es una aplicación de una sola página, especialmente, si fue diseñada con un marco de front-end moderno como React. Crea el punto de conexión del servidor que se usa para el secreto de cliente:

main.rb
Ruby
get '/secret' do intent = # ... Create or retrieve the PaymentIntent {client_secret: intent.client_secret}.to_json end

Luego recupera el secreto de 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 })();

Recopila el correo electrónico de los clientes

Link autentica a un cliente utilizando su dirección de correo electrónico. Según tu flujo de compra, tienes las siguientes opciones: enviar un correo electrónico al Payment Element, recopilarlo directamente en el Payment Element o usar el Link Authentication Element. De estas opciones, Stripe recomienda pasar una dirección de correo electrónico del cliente al Payment Element si está disponible.

Si alguno de los siguientes puntos se aplica a tu caso:

  • Quieres un componente único y optimizado para la recopilación de correos electrónicos y la autenticación de Link.
  • Debes recopilar una dirección de envío de tu cliente.

A continuación, utiliza el flujo de integración que implementa estos elementos: el Link Authentication Element, el Payment Element y el Address Element opcional.

Una página de pago habilitada por Link tiene el Link Authentication Element al principio, seguido del Address Element y el Payment Element al final. También puedes mostrar el Link Authentication Element en páginas separadas, en este mismo orden, para flujos de pago de varias páginas.

Crea un formulario de pago usando varios Elements

Crea un formulario de pago usando varios Elements

La integración funciona de la siguiente manera:

Configura tu formulario de pago
Lado del cliente

Ahora puedes configurar tu formulario de pago personalizado con los componentes de interfaz de usuario prediseñados de Elements. Para que la integración funcione, tu página de pago debe empezar con https:// en lugar de http://. Puedes probar tu integración sin usar HTTPS. Habilita HTTPS cuando estés listo para aceptar pagos reales.

El Link Authentication Element renderiza una entrada de dirección de correo electrónico. Cuando Link encuentra una coincidencia entre el correo electrónico de un cliente y una cuenta de Link existente, envía al cliente un código seguro único a su teléfono para autenticar. Si el cliente lo autentica correctamente, Stripe muestra automáticamente las direcciones y los métodos de pago guardados en Link para que puedan usarlos.

Esta integración también crea el Payment Element, que renderiza un formulario dinámico que le permite a tu cliente elegir un tipo de método de pago. El formulario recopila automáticamente todos los datos de pago necesarios para el método de pago seleccionado por el cliente. El Payment Element también gestiona la pantalla de métodos de pago guardados en Link para los clientes autenticados.

Configurar Stripe Elements

Instala React Stripe.js y el cargador Stripe.js desde el registro público npm.

Command Line
npm install --save @stripe/react-stripe-js @stripe/stripe-js

En tu página de pago, integra tu formulario de pago con el componente Elements, y transfiere el secreto de cliente del paso anterior. Si ya recopilas el correo electrónico del cliente en otra parte del formulario, reemplaza la entrada existente con el linkAuthenticationElement​.

Si no recopilas el correo electrónico, agrega el linkAuthenticationElement​ a tu flujo de compra. Debes colocar el linkAuthenticationElement antes del ShippingAddressElement (opcional si recopilas direcciones de envío) y el PaymentElement para que Link complete automáticamente los datos guardados de Link para tu cliente en ShippingAddressElement y PaymentElement. También puedes especificar la opción appearance y personalizar los Elements para que coincidan con el diseño de tu sitio.

Si tienes el correo electrónico del cliente, pásalo a la opción defaultValues del linkAuthenticationElement. Esto completa automáticamente su dirección de correo electrónico e inicia el proceso de autenticación de Link.

Si tienes otra información del cliente, pásala al objeto defaultValues.billingDetails para el PaymentElement. Completar automáticamente la mayor cantidad de información posible simplifica la creación y reutilización de cuentas Link para tus clientes.

Luego, renderiza los componentes linkAuthenticationElement y PaymentElement en tu formulario de pago:

Checkout.jsx
import {loadStripe} from "@stripe/stripe-js"; import { Elements, LinkAuthenticationElement, PaymentElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); // Customize the appearance of Elements using the Appearance API. const appearance = {/* ... */}; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto';

linkAuthenticationElement, PaymentElement y ShippingAddressElementno necesitan estar en la misma página. Si tienes un proceso en el que la información de contacto del cliente, los datos de envío y los datos de pago se muestran al cliente en pasos separados, puedes mostrar cada Element en el paso o página correspondiente. Incluye el linkAuthenticationElement como formulario de entrada de correo electrónico en el paso de recopilación de información de contacto para garantizar que el cliente pueda aprovechar al máximo la función de autocompletar los datos de envío y pago proporcionada por Link.

Si recopilas el correo electrónico de tu cliente con el Link Authentication Element al principio del flujo de compra, no es necesario que lo vuelvas a mostrar en las páginas de envío o pago.

Recuperar una dirección de correo electrónico

Puedes recuperar los datos de la dirección de correo electrónico utilizando el accesorio onChange en el componente linkAuthenticationElement. El controlador onChange se activa cuando el usuario actualiza el campo de correo electrónico o cuando un correo electrónico de cliente guardado se completa previamente.

<linkAuthenticationElement onChange={(event) => { setEmail(event.value.email); }} />

Autocompletar una dirección de correo electrónico de un cliente

El Link Authentication Element acepta una dirección de correo electrónico. Proporcionar la dirección de correo electrónico de un cliente activa el flujo de autenticación de Link cuando el cliente llega a la página de pago utilizando la opción defaultValues.

<linkAuthenticationElement options={{defaultValues: {email: 'foo@bar.com'}}}/>

OpcionalCompletar automáticamente datos adicionales del cliente
Lado del cliente

OpcionalRecopilar direcciones de envío
Lado del cliente

OpcionalPersonalizar el aspecto
Lado del cliente

Enviar el pago a Stripe
Lado del cliente

Usa stripe.confirmPayment para completar el pago con los datos recopilados de tu cliente en los diferentes formularios de Elements. Proporciona un return_url a esta función para indicar a dónde Stripe redirige al usuario después de completar el pago.

Es posible que tu usuario sea redirigido primero a un sitio intermedio, como una página de autorización bancaria, antes de que Stripe lo redirija a la return_url.

De forma predeterminada, los pagos con tarjeta y bancarios redirigen inmediatamente a la return_url cuando un pago se realiza correctamente. Si no quieres redirigir a la return_url, puedes usar if_required para cambiar el comportamiento.

Checkout.jsx
import {loadStripe} from "@stripe/stripe-js"; import { useStripe, useElements, Elements, LinkAuthenticationElement, PaymentElement, // If collecting shipping AddressElement, } from "@stripe/react-stripe-js"; const stripe = loadStripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const appearance = {/* ... */}; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto'; const CheckoutPage =({clientSecret}) => ( <Elements stripe={stripe} options={{clientSecret, appearance, loader}}> <CheckoutForm /> </Elements> ); export default function CheckoutForm() { const stripe = useStripe(); const elements = useElements(); const handleSubmit = async (event) => { event.preventDefault(); const {error} = await stripe.confirmPayment({ elements, confirmParams: { return_url: "https://example.com/order/123/complete", }, }); if (error) { // handle error } }; return ( <form onSubmit={handleSubmit}> <h3>Contact info</h3> <LinkAuthenticationElement /> {/* If collecting shipping */} <h3>Shipping</h3> <AddressElement options={{mode: 'shipping', allowedCountries: ['US']}} /> <h3>Payment</h3> <PaymentElement /> <button type="submit">Submit</button> </form> ); }

La return_url corresponde a una página en tu sitio web que proporciona el estado del pago del PaymentIntent cuando procesas la página de devolución. Cuando Stripe redirige al cliente a la return_url, puedes usar los siguientes parámetros de consulta de URL para verificar el estado del pago. También puedes adjuntar tus propios parámetros de consulta cuando proporciones la return_url. Estos parámetros de consulta se conservan durante el proceso de redireccionamiento.

ParámetroDescripción
payment_intentEl identificador único del PaymentIntent
payment_intent_client_secretEl secreto de cliente del objeto PaymentIntent.

OpcionalSeparar la autorización de la captura
Lado del servidor

Administrar eventos posteriores al pago
Lado del servidor

Stripe envía un evento payment_intent.succeeded cuando se completa el pago. Usa un webhook para recibir estos eventos y ejecutar acciones, como enviar un correo electrónico de confirmación del pedido a tu cliente, registrar la venta en una base de datos o iniciar el flujo de envío.

Configura tu integración para escuchar estos eventos en lugar de esperar una devolución de llamada del cliente. Cuando esperas una devolución de llamada del cliente, el cliente puede cerrar la ventana del navegador o salir de la aplicación antes de que se ejecute la devolución de llamada. Si configuras tu integración para escuchar eventos asincrónicos, podrás aceptar diferentes tipos de métodos de pago con una sola integración.

Además de administrar el evento payment_intent.succeeded, también puedes administrar otros dos eventos importantes cuando cobras pagos con el Payment Element:

EventoDescripciónAction
payment_intent.succeededSe envía desde Stripe cuando un cliente ha completado correctamente un pago.Envía al cliente una confirmación del pedido y completa el pedido.
payment_intent.payment_failedSe envía desde Stripe cuando el cliente intentó hacer un pago, pero no se efectuó correctamente.Si un pago pasó de processing a payment_failed, ofrécele al cliente otro intento de pago.

Probar la integración

Precaución

No almacenes datos de usuarios reales en el entorno de prueba de cuentas de Link. Úsalas como si estuvieran disponibles para el público, porque estas cuentas de prueba están asociadas a tu clave publicable.

En este momento, Link solo funciona con tarjetas de crédito, tarjetas de débito y compras que califican de cuentas bancarias de EE. UU. Link exige el registro del dominio.

Puedes crear cuentas en entornos de prueba para Link usando cualquier dirección de correo electrónico válida. En la siguiente tabla se muestran los valores fijos de código de acceso de único que Stripe acepta para autenticar las cuentas de entornos de prueba:

ValorResultado
Otros seis dígitos diferentes de los mencionados a continuaciónOperación correcta
000001Error: código inválido
000002Error: código vencido
000003Error: cantidad máxima de intentos superada

Para probar métodos de pago específicos, consulta los ejemplos de prueba del Payment Element.

Múltiples fuentes de financiación

Como Stripe agrega soporte adicional para fuentes de financiamiento, no tienes que actualizar tu integración. Stripe las admite automáticamente con el mismo tiempo de liquidación de transacciones y garantías que los pagos con tarjeta y cuentas bancarias.

Autenticación de tarjetas y 3D Secure

Link admite la autenticación con 3D Secure 2 (3DS2) para pagos con tarjeta. 3DS2 requiere que los clientes completen otro paso más de verificación ante el emisor de la tarjeta al pagar. Los pagos que pasan la autenticación con 3D Secure están cubiertos por una transferencia de responsabilidad.

Para activar flujos de comprobación de autenticación con interacción del cliente 3DS2 con Link en un entorno de prueba, utiliza la siguiente tarjeta de prueba con cualquier CVC, código postal y fecha de vencimiento futura: .

En el entorno de prueba, el proceso de autenticación muestra una página de autenticación de prueba. En esa página, puedes autorizar o cancelar el pago. Si autorizas el pago, se simula una autenticación correcta y se te redirige a la URL de retorno especificada. Cuando haces clic en el botón Error, se simula un intento de autenticación fallido.

Para obtener más detalles, consulta la página de autenticación con 3D Secure.

Nota

Al probar los flujos de 3DS, solo las tarjetas de prueba para 3DS2 activarán la autenticación en Link.

OpcionalMostrar los datos guardados en el cliente
Lado del servidor
Lado del cliente

OpcionalGuardar métodos de pago de Link
Lado del servidor
Lado del cliente

Cuéntales a tus clientes qué es Stripe

Stripe recopila información sobre las interacciones de los clientes con Elements para proporcionarte servicios, mejorarlos y prevenir el fraude. Esto incluye el uso de cookies y direcciones IP para identificar qué Elements vio un cliente durante una sola sesión de finalización de compra. Tienes la responsabilidad de divulgar y obtener todos los derechos y consentimientos necesarios para que Stripe use los datos para dichos fines. Si deseas obtener más información, visita nuestro centro de privacidad.

Consulta también

  • Qué es Link
  • Link con Elements
  • Link en Payment Element
  • Explora el Link Authentication Element
  • Link en diferentes integraciones de pago
¿Te fue útil esta página?
SíNo
¿Necesitas ayuda? Ponte en contacto con soporte.
Únete a nuestro programa de acceso anticipado.
Echa un vistazo a nuestro registro de cambios.
¿Tienes alguna pregunta? Contacto.
¿LLM? Lee llms.txt.
Con tecnología de Markdoc