Ir a contenido
Crea una cuenta
o
inicia sesión
Logotipo de la documentación de Stripe
/
Pregúntale a la IA
Crear cuenta
Iniciar sesión
Empezar
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 por Internet
ResumenEncuentra tu caso de usoManaged Payments
Utiliza Payment Links
Crear una página del proceso de compra
Desarrolla una integración avanzada
Desarrolla una integración en la aplicación
Métodos de pago
Añadir métodos de pago
Gestiona los métodos de pago
Proceso de compra más rápido con Link
Interfaces de pago
Payment Links
Checkout
Elements para la web
Elements en la aplicación
Escenarios de pago
Flujos de pagos personalizados
    Resumen
    Pagos para clientes existentes
    Autoriza y captura un pago por separado
    Diseña una experiencia de confirmación en dos pasos
    Reúne datos de pago antes de crear una Intent
    Finalizar pagos en el servidor
    Recibir pedidos por correo y por teléfono (MOTO)
    Tarjetas estadounidenses y canadienses
      Guardar tarjetas sin autenticación
      Actualizar para gestionar autenticación
    Reenvía los datos de la tarjeta a los puntos de conexión de la API de terceros
    Partidas individuales de pagos
Capacidad adquirente flexible
Orquestación
Pagos en persona
Terminal
Otros productos de Stripe
Financial Connections
Criptomonedas
Climate
InicioPagosCustom payment flows

Pagos con tarjeta sin autenticación bancaria

Crea una integración más simple con limitaciones regionales.

Copia la página

Esta integración es compatible con empresas que solo aceptan tarjetas de EE. UU. y Canadá. Es más sencilla a priori, pero no permite expandirse para aceptar una base de clientes internacional.

¿Cómo funciona esta integración?

¿En qué se diferencia de la integración global?

Las empresas internacionales o en crecimiento deben usar la integración global de Stripe para poder aceptar solicitudes bancarias de autenticación en dos pasos y permitir que los clientes paguen con otros métodos de pago.

Crea un formulario de compra
Lado del cliente

Elements, que forma parte de Stripe.js, proporciona componentes de interfaz de usuario insertables para recopilar los datos de las tarjetas de los clientes. Stripe los aloja y los coloca en tu formulario de pago como un iframe para que los datos de tarjeta del cliente no entren en contacto con tu código.

Primero, incluye el script Stripe.js en el encabezado de cada página de tu sitio web.

<script src="https://js.stripe.com/v3/"></script>

Incluir el script en cada página de tu sitio web te permite aprovechar la funcionalidad avanzada contra el fraude de Stripe y la capacidad de detectar comportamientos de navegación anómalos.

Requisitos de seguridad

Este script siempre debe cargarse directamente desde js.stripe.com para seguir siendo compatible con PCI. No puedes incluir el script en un paquete ni alojar una copia por ti mismo.

Cuando usas Elements, toda la información de pago se envía a una conexión HTTPS segura.

La dirección de la página que contiene Elements también debe comenzar por https:// en lugar por http://. Para obtener más información sobre cómo obtener certificados SSL e integrarlos con tu servidor con el fin de habilitar una conexión HTTPS segura, consulta la documentación de seguridad.

Añadir Elements a tu página

A continuación, necesitas una cuenta de Stripe. Inscríbete ahora.

Crea elementos DOM (contenedores) vacíos con ID únicos en tu formulario de pago.

payment.html
<form id="payment-form"> <div id="card-element"><!-- placeholder for Elements --></div> <button id="card-button">Submit Payment</button> <p id="payment-result"><!-- we'll pass the response from the server here --></p> </form>

Crea una instancia del objeto Stripe, proporcionando tu clave API publicable como primer parámetro. Después, crea una instancia del objeto Elements y úsalo para montar un elemento de tarjeta en el contenedor de elementos DOM vacío de la página.

client.js
const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); const elements = stripe.elements(); const cardElement = elements.create('card'); cardElement.mount('#card-element');

Usa stripe.createPaymentMethod en tu cliente para recopilar los datos de la tarjeta y crear un PaymentMethod cuando el cliente envíe el formulario de pago. Envía el ID del PaymentMethod a tu servidor.

client.js
const form = document.getElementById("payment-form"); var resultContainer = document.getElementById('payment-result'); // cardElement is defined in the previous step cardElement.on('change', function(event) { if (event.error) { resultContainer.textContent = event.error.message; } else { resultContainer.textContent = ''; } }); form.addEventListener('submit', async event => { event.preventDefault(); resultContainer.textContent = ''; const result = await stripe.createPaymentMethod({ type: 'card', card: cardElement, }); handlePaymentMethodResult(result); }); const handlePaymentMethodResult = async ({ paymentMethod, error }) => { if (error) { // An error happened when collecting card details, show error in payment form resultContainer.textContent = result.error.message; } else { // Send paymentMethod.id to your server (see Step 3) const response = await fetch("/pay", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ payment_method_id: paymentMethod.id }) }); const responseJson = await response.json(); handleServerResponse(responseJson); } }; const handleServerResponse = async responseJson => { if (responseJson.error) { // An error happened when charging the card, show it in the payment form resultContainer.textContent = responseJson.error; } else { // Show a success message resultContainer.textContent = 'Success!'; } };

Configura Stripe
Lado del servidor

Usa una biblioteca oficial para hacer solicitudes 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'

Efectúa un pago
Lado del servidor

Configura un punto de conexión en tu servidor para recibir la solicitud del cliente.

Stripe utiliza un objeto PaymentIntent para representar tu intención de cobrarle un pago a un cliente y hace un seguimiento de los intentos de cobro y de los cambios en el estado del pago a lo largo del proceso.

Decide siempre cuánto cobrar del lado del servidor, un entorno de confianza, y no del lado del cliente. Esto impide que clientes malintencionados puedan elegir sus propios precios.

Crea un punto de conexión HTTP para responder a la solicitud AJAX del paso 1. En ese punto de conexión, debes decidir cuánto le cobrarás al cliente. Para crear un pago, crea un PaymentIntent usando el ID del PaymentMethod del paso 1 con el siguiente código:

Command Line
curl
# Check the status of the PaymentIntent to make sure it succeeded curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
: \ -d amount=1099 \ -d currency=usd \ # A PaymentIntent can be confirmed some time after creation, # but here we want to confirm (collect payment) immediately. -d confirm=true \ -d payment_method="{{PAYMENT_METHOD_ID}}" \ # If the payment requires any follow-up actions from the # customer, like two-factor authentication, Stripe will error # and you will need to prompt them for a new payment method. -d error_on_requires_action=true

Advertencia

Si estableces error_on_requires_action en true al confirmar el pago, Stripe produce automáticamente un error en el pago si se exige al usuario la autenticación de dos factores.

Respuesta de la API Payment Intents

Cuando efectúas un pago con la API, la respuesta incluye el estado del PaymentIntent. Si el pago se ha realizado correctamente, el estado será succeeded.

{ "id": "pi_0FdpcX589O8KAxCGR6tGNyWj", "object": "payment_intent", "amount": 1099, "charges": { "object": "list", "data": [ { "id": "ch_GA9w4aF29fYajT", "object": "charge", "amount": 1099, "refunded": false, "status": "succeeded", } ] }, "client_secret": "pi_0FdpcX589O8KAxCGR6tGNyWj_secret_e00tjcVrSv2tjjufYqPNZBKZc", "currency": "usd", "last_payment_error": null, "status": "succeeded", }

Si el pago se ha rechazado, la respuesta incluye el código de error y el mensaje de error. A continuación, encontrás un ejemplo de un pago fallido porque para la tarjeta se exigía la autenticación de dos factores.

{ "error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "payment_intent": { "id": "pi_1G8JtxDpqHItWkFAnB32FhtI", "object": "payment_intent", "amount": 1099, "status": "requires_payment_method", "last_payment_error": { "code": "authentication_required", "decline_code": "authentication_not_handled", "doc_url": "https://docs.stripe.com/error-codes#authentication-required", "message": "This payment required an authentication action to complete, but `error_on_requires_action` was set. When you're ready, you can upgrade your integration to handle actions at https://stripe.com/docs/payments/payment-intents/upgrade-to-handle-actions.", "type": "card_error" }, }, "type": "card_error" } }

Prueba la integración

Stripe proporciona varias tarjetas de prueba que puedes usar en un entorno de prueba para asegurarte de que la integración está lista. Úsalos con cualquier CVC, código postal y fecha de vencimiento futura.

NúmeroDescripción
La transacción se realiza correctamente y el pago se procesa de inmediato.
Siempre da error con un código de rechazo insufficient_funds.
Requiere autenticación, que en esta integración fallará con el código de rechazo authentication_not_handled.

Ver la lista completa de tarjetas de prueba.

Actualiza tu integración para gestionar la autenticación de tarjetas

¡Enhorabuena! Has completado una integración para pagos básicos con tarjeta. Ten en cuenta que esta integración rechaza las tarjetas que exigen autenticación durante el pago.

Si empiezas a ver los pagos en el Dashboard como Failed, entonces es el momento de actualizar tu integración. La integración global de Stripe gestiona estos pagos en lugar de rechazarlos automáticamente.

¿Te ha sido útil la página?
SíNo
¿Necesitas ayuda? Ponte en contacto con el equipo de soporte.
Únete a nuestro programa de acceso anticipado.
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