Aceptar pagos con Stripe Elements y la API ChargesAPI Charges
API heredada
El contenido de esta sección se refiere a una funcionalidad de Legacy. Usa la API PaymentIntents.
The Charges API doesn’t support the following features, many of which are required for credit card compliance:
Usa nuestro componente de interfaz de usuario de tarjeta prediseñado para crear un formulario de pago que te permita recopilar en modo seguro los datos de tarjeta del cliente sin tener que manejar los datos confidenciales. Los datos de la tarjeta se convierten luego en un token representativo que puedes enviar de forma segura a tus servidores. El servidor puede utilizar ese token para crear un cargo.
Nota
Todos los pasos de esta guía se han implementado en GitHub. Clona el repositorio y sigue las instrucciones para ejecutar la aplicación de demostración.
Configura StripeLado del clienteLado del servidor
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:
Lado del cliente
The Stripe Android SDK is open source and fully documented.
To install the SDK, add stripe-android
to the dependencies
block of your app/build.gradle
file:
Nota
Para conocer detalles de la última versión y de versiones anteriores del SDK, consulta la página Versiones en GitHub. Para recibir una notificación cuando se publique una nueva versión, mira las versiones del repositorio.
Configura el SDK con tu clave publicable de Stripe para que pueda hacer solicitudes a la API de Stripe, así como en tu subclase Application
:
Nota
Usa las claves para modo de prueba durante las pruebas y el desarrollo, y tus claves para modo activo cuando publiques tu aplicación.
Crear tu formulario de pagoLado del cliente
Recopila los datos de la tarjeta del cliente de manera segura con CardInputWidget, un componente de interfaz de usuario (IU) insertable proporcionado por el SDK que recopila el número de tarjeta, la fecha de vencimiento, el CVC y el código postal
CardInputWidget lleva a cabo la validación y el formateo sobre la marcha.
Crea una instancia del componente de tarjeta y un botón Pagar agregando lo siguiente al diseño de tu página de finalización de compra:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_checkout" tools:context=".CheckoutActivity"> <!-- ... --> <com.stripe.android.view.CardInputWidget android:id="@+id/cardInputWidget" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp"/> <Button android:text="Pay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/payButton" android:layout_marginTop="20dp" app:layout_constraintTop_toBottomOf="@+id/cardInputWidget" app:layout_constraintStart_toStartOf="@+id/cardInputWidget" app:layout_constraintEnd_toEndOf="@+id/cardInputWidget"/> <!-- ... --> </androidx.constraintlayout.widget.ConstraintLayout>
Ejecuta tu aplicación y asegúrate de que en la página de finalización de compra, aparezca el componente de tarjeta y el botón de pago.
Crea un tokenLado del cliente
Cuando el usuario toca el botón de pago, convierte los datos de la tarjeta recopilados por CardInputWidget
en un token de Stripe. La tokenización garantiza que los datos confidenciales de la tarjeta no entren en contacto con tu servidor, de manera que tu integración siga cumpliendo la normativa PCI.
El siguiente código muestra cómo usar Stripe#createToken(). El método toma una instancia Card
como primer parámetro. El segundo parámetro es la instancia ApiResultCallback<Token> que el cliente invoca cuando el token es correcto o da error. Cuando la tokenización se completa correctamente, debes enviar el ID del token devuelto a tu servidor.
Envía el ID del token a tu servidor desde el cliente.
Crea un cargo con el tokenLado del servidor
La respuesta después de la creación de un cargo será un objeto Charge o un error con un código de error. Si la respuesta confirma la creación del cargo, puedes completar el pedido del cliente y mostrarle una página de confirmación. De lo contrario, puedes mostrarle una página de error.
Prueba tu integración
Si puedes ingresar de manera confiable una tarjeta de prueba en el Card Element, envíalo al servidor y verifica si tu servidor creó el cargo. De ser así, tu integración está terminada.
Has creado una integración con la API Charges para empezar a aceptar pagos con tarjeta de inmediato. Esta API no admite ampliar el desarrollo de empresas o clientes fuera de los Estados Unidos y Canadá. Para contar con opciones de pagos internacionales más sólidas, aprenda a aceptar pagos con la API Paument Intents.