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
        Aceptar un pago
        Mensajes del sitio
      Alma
      Billie
      Capchase Pay
      Klarna
      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 laterAfterpay / Clearpay

Acepta un pago de Afterpay o Clearpay

Descubre cómo aceptar Afterpay (también conocido como Clearpay en Reino Unido), un método de pago en EE. UU., CA, Reino Unido, AU y NZ.

Precaución

El contenido de esta sección se refiere a un producto heredado. En su lugar, debes usar la guía Aceptar un pago para el proceso de integración más reciente. Aunque Stripe sigue aceptando este producto, podría dejar de aceptarlo si el producto queda obsoleto.

Los usuarios de Stripe pueden utilizar la API Payment Intents, una ruta de integración única para crear pagos usando cualquier método aceptado, para aceptar pagos con Afterpay de clientes de los siguientes países:

  • Australia
  • Canadá
  • Nueva Zelanda
  • Reino Unido
  • Estados Unidos

Afterpay 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 al sitio web de Afterpay, donde aceptan las condiciones del plan de pago en cuotas. Cuando el cliente acepta las condiciones, se garantizan los fondos y se transfieren a tu cuenta de Stripe. El cliente paga a Afterpay directamente a lo largo del tiempo.

Nota

Antes de iniciar la integración, asegúrate de que tu cuenta sea apta para Afterpay. Para ello, accede a la configuración de los métodos de pago.

Configurar Stripe
Lado del servidor
Lado del cliente

Lado del servidor

Esta integración necesita puntos de conexión en tu servidor que se comuniquen con la API de Stripe. Usa nuestras librerías oficiales para acceder a la API de Stripe desde tu servidor:

Command Line
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Available as a gem sudo gem install stripe
Gemfile
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Lado del cliente

El SDK para React Native es de código abierto y está plenamente documentado. Internamente, utiliza el SDK de iOS nativo y Android. Para instalar el SDK para React Native de Stripe, ejecuta uno de los siguientes comandos en el directorio del proyecto (en función del administrador de paquetes que utilices):

Command Line
yarn add @stripe/stripe-react-native

A continuación, instala otras dependencias necesarias:

  • Para iOS, navega hasta el directorio de ios y ejecuta pod install para asegurarte de instalar también las dependencias nativas necesarias.
  • Para Android, no hay más dependencias para instalar.

Nota

Recomendamos seguir la guía oficial de TypeScript para añadir compatibilidad con TypeScript.

Inicialización de Stripe

Para inicializar Stripe en tu aplicación React Native, ajusta tu pantalla de pago con el componente StripeProvider o usa el método de inicialización initStripe. Solo se requiere la clave publicable de la API en publishableKey. El siguiente ejemplo muestra cómo inicializar Stripe mediante el componente StripeProvider.

import { useState, useEffect } from 'react'; import { StripeProvider } from '@stripe/stripe-react-native'; function App() { const [publishableKey, setPublishableKey] = useState(''); const fetchPublishableKey = async () => { const key = await fetchKey(); // fetch key from your server here setPublishableKey(key); }; useEffect(() => { fetchPublishableKey(); }, []); return ( <StripeProvider publishableKey={publishableKey} merchantIdentifier="merchant.identifier" // required for Apple Pay urlScheme="your-url-scheme" // required for 3D Secure and bank redirects > {/* Your app code here */} </StripeProvider> ); }

Nota

Usa las claves de prueba de la API durante las pruebas y las tareas de desarrollo, y las claves del modo activo cuando publiques tu aplicación.

Crea un PaymentIntent
Lado del servidor
Lado 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 servidor

Primero, crea un PaymentIntent en tu servidor y especifica el importe que hay que cobrar y la divisa. Si ya tienes una integración que utiliza la API Payment Intents, añade afterpay_clearpay a la lista de tipos de métodos de pago para tu PaymentIntent.

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "amount"=1099 \ -d "currency"="usd" \ -d "payment_method_types[]"="afterpay_clearpay"

Lado del cliente

El PaymentIntent devuelto incluye un secreto de cliente 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 almacena el secreto de cliente.

const fetchPaymentIntentClientSecret = async () => { const response = await fetch(`${API_URL}/create-payment-intent`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ currency: 'usd', payment_method_types: ['afterpay_clearpay'], }), }); const {clientSecret, error} = await response.json(); return {clientSecret, error}; };

Recopila los datos del método de pago
Lado del cliente

Afterpay requiere que los datos de facturación estén presentes para que el pago se efectúe correctamente. En tu aplicación, recolecta los datos de facturación necesarios del cliente:

  • Nombre completo (nombre y apellido)
  • Dirección de correo electrónico
  • Dirección de facturación completa

Además, aunque no se requieren datos de envío, pueden ayudar a mejorar las tasas de autenticación. Para recolectar los datos de envío, debes recolectar del cliente la siguiente información:

  • Nombre completo
  • Dirección de envío completa
export default function AfterpayClearpayPaymentScreen() { const [email, setEmail] = useState(''); const handlePayPress = async () => { const billingDetails: PaymentMethodCreateParams.BillingDetails = { email, phone: '+48888000888', addressCity: 'Houston', addressCountry: 'US', addressLine1: '1459 Circle Drive', addressLine2: 'Texas', addressPostalCode: '77063', name: 'Jenny Rosen', }; // Shipping details are optional but recommended to pass in. const shippingDetails: PaymentMethodCreateParams.ShippingDetails = { addressLine1: '1459 Circle Drive', addressCountry: 'US', addressPostalCode: '77063', name: 'Jenny Rosen', }; // ... }; return ( <Screen> <TextInput placeholder="E-mail" onChange={(value) => setEmail(value.nativeEvent.text)} /> </Screen> ); }

Envía el pago a Stripe
Lado del cliente

Recupera el secreto de cliente del PaymentIntent que has creado y llama al confirmPayment. Deberías seguir gestionando el secreto de cliente con cuidado, ya que sirve para completar el cargo. No lo registres, no lo insertes en URL ni lo expongas a nadie que no sea el cliente.

export default function AfterpayClearpayPaymentScreen() { const [email, setEmail] = useState(''); const handlePayPress = async () => { // ... const {error, paymentIntent} = await confirmPayment(clientSecret, { paymentMethodType: 'AfterpayClearpay', paymentMethodData: { billingDetails, // Shipping details are optional but recommended to pass in. shippingDetails, }, }); if (error) { Alert.alert(`Error code: ${error.code}`, error.message); } else if (paymentIntent) { Alert.alert( 'Success', `The payment was confirmed successfully! currency: ${paymentIntent.currency}`, ); } }; return <Screen>{/* ... */}</Screen>; }

OpcionalGestiona la vinculación profunda

Cuando un cliente sale de tu aplicación (por ejemplo, para autenticarse en Safari o en su aplicación bancaria), proporciónale una forma de volver automáticamente a tu aplicación. Muchos tipos de métodos de pago requieren una URL de retorno. Si no proporcionas una, no podremos presentar a tus usuarios métodos de pago que requieran una URL de retorno, aunque los hayas habilitado.

Para proporcionar una URL de retorno:

  1. Registrar una URL personalizada. No se admiten enlaces universales.
  2. Configurar tu URL personalizada.
  3. Configura tu componente raíz para reenviar la URL al SDK de Stripe como se muestra a continuación.

Nota

Si utilizas Expo, configura tu esquema en el archivo app.json.

App.tsx
import { useEffect, useCallback } from 'react'; import { Linking } from 'react-native'; import { useStripe } from '@stripe/stripe-react-native'; export default function MyApp() { const { handleURLCallback } = useStripe(); const handleDeepLink = useCallback( async (url: string | null) => { if (url) { const stripeHandled = await handleURLCallback(url); if (stripeHandled) { // This was a Stripe URL - you can return or add extra handling here as you see fit } else { // This was NOT a Stripe URL – handle as you normally would } } }, [handleURLCallback] ); useEffect(() => { const getUrlAsync = async () => { const initialUrl = await Linking.getInitialURL(); handleDeepLink(initialUrl); }; getUrlAsync(); const deepLinkListener = Linking.addEventListener( 'url', (event: { url: string }) => { handleDeepLink(event.url); } ); return () => deepLinkListener.remove(); }, [handleDeepLink]); return ( <View> <AwesomeAppComponent /> </View> ); }

Para obtener más información sobre los esquemas de URL nativos, consulta la documentación para Android e iOS.

OpcionalAñade partidas al PaymentIntent

Opcionalmente, puedes aceptar los datos de la partida para proporcionar más señales de riesgo a Afterpay. Actualmente, esta función está disponible en versión beta privada. Para solicitar acceso a dicha función, contáctanos.

OpcionalSepara la autorización y la captura

A diferencia de la autorización y captura separadas para los pagos con tarjeta, Afterpay cobra al cliente la primera cuota del pago en el momento de la autorización. Tienes hasta 13 días después de la autorización para capturar el resto del pago. Si no registras el pago en este período, el cliente recibirá el reembolso de la primera cuota y no se le cobrará ninguna otra. En estos casos, Stripe también cancela el PaymentIntent y envía un evento payment_intent.canceled.

Si sabes que no puedes capturar el pago, te recomendamos que canceles el PaymentIntent en lugar de esperar a que transcurra el plazo de 13 días. La cancelación proactiva del PaymentIntent reembolsa inmediatamente la primera cuota a tu cliente, evitando cualquier confusión sobre los cargos en su extracto.

  • 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 del cliente de Afterpay.

    Command Line
    curl
    Ruby
    Python
    PHP
    Java
    Node.js
    Go
    .NET
    No results
    curl https://api.stripe.com/v1/payment_intents \ -u
    sk_test_BQokikJOvBiI2HlWgH4olfQ2
    :
    \ -d "amount"=1099 \ -d "currency"="usd" \ -d "payment_method_types[]"="afterpay_clearpay" \ -d "capture_method"="manual" \ -d "shipping[name]"="Jenny Rosen" \ -d "shipping[address][line1]"="1234 Main Street" \ -d "shipping[address][city]"="San Francisco" \ -d "shipping[address][state]"="CA" \ -d "shipping[address][country]"="US" \ -d "shipping[address][postal_code]"=94111

    Una vez que la autorización se realiza correctamente, Stripe envía un evento payment_intent.amount_capturable_updated. Consulta nuestra guía de eventos para obtener ayuda.

  • Capturar los fondos
  • Una vez que la autorización se realiza correctamente, el estado del PaymentIntent pasa a requires_capture. Para capturar los fondos autorizados, realiza una petición de captura 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

    Opcional Cancela la autorización

    Si necesitas cancelar una autorización, puedes cancelar el PaymentIntent.

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

    OpcionalPrueba la integración de Afterpay

    Para probar tu integración de Afterpay con las claves de la API en modo de prueba, consulta la página de redireccionamiento. Puedes probar el caso de pago satisfactorio autenticando el pago en la página de redireccionamiento. El PaymentIntent pasará de requires_action a succeeded.

    Para probar el caso en el que el usuario no pueda autenticarse, utiliza las claves de la API en modo de prueba y consulta la página de redireccionamiento. En la página de redireccionamiento, haz clic en Error en el pago en modo de prueba. El PaymentIntent pasará de requires_action a requires_payment_method.

    Para la captura manual de PaymentIntents en modo de prueba, el PaymentIntent no capturado vencerá automáticamente 10 minutos después de la autorización satisfactoria.

    Pagos fallidos

    Afterpay 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 Afterpay, el importe pendiente de pago del cliente, el valor del pedido actual).

    Siempre debes presentar más opciones de pago como card en el flujo del proceso de compra, ya que los pagos con Afterpay tiene una tasa de rechazos superior que muchos métodos de pago. En estos casos, el PaymentMethod se separa y el estado del objeto PaymentIntent pasa automáticamente a requires_payment_method.

    Para un PaymentIntent de Afterpay con un estado de requires_action, los clientes deben efectivizar el pago en el transcurso de las 3 horas posteriores a redirigirles al sitio de Afterpay (esto no se aplica a los pagos rechazados). Si no realiza ninguna acción en el transcurso de 3 horas, el PaymentMethod se separa y el estado del objeto del PaymentIntent pasa automáticamente 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.

    Códigos de error

    Estos son algunos códigos de error comunes y las correspondientes acciones recomendadas:

    Código de errorAcción recomendada
    payment_intent_payment_attempt_failedUn error genérico indica que el proceso de compra de Afterpay ha fallado. También puede tratarse de un rechazo que no aparece como código de error de rechazo.
    payment_method_provider_declineAfterpay ha rechazado el pago del cliente. Como siguiente paso, el cliente debe contactarse con Afterpay para obtener más información.
    payment_intent_payment_attempt_expiredEl cliente no completó el pago en la página Afterpay del proceso de compra, y la sesión de pago ha caducado. Los PaymentIntents de Stripe caducan automáticamente si no se autorizan correctamente transcurridas 3 horas desde el inicio del proceso de compra.
    payment_method_not_availableAfterpay ha experimentado un error relacionado con el servicio y no puede completar la solicitud. Vuelve a intentarlo más tarde.
    amount_too_smallIntroduce un importe dentro de los límites de transacciones predeterminados de Afterpay para el país.
    amount_too_largeIntroduce un importe dentro de los límites de transacciones predeterminados de Afterpay para el país.
    ¿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