Lite SDK (Inscripción Android)
Esta página proporciona una guía sobre el Lite SDK Yuno Lite para la inscripción en Android. Este SDK ofrece un proceso de integración simplificado con la funcionalidad de inscripción esencial, por lo que es ideal para los comerciantes que:
- ¿Necesita una implementación rápida con requisitos mínimos de personalización?
- Desea centrarse principalmente en la inscripción en el método de pago
- Prefiera una interfaz de usuario lista para usar que gestione el flujo de inscripción
El Lite SDK incluye características principales como:
- Componentes de interfaz de usuario de inscripción predefinidos
- Proceso de inscripción de tarjetas
- Gestión básica del estado de inscripción
- Gestión de errores esenciales
Para los comerciantes que necesiten funciones más avanzadas, como múltiples métodos de pago, interfaz de usuario personalizada o prevención avanzada del fraude, considere la posibilidad de utilizar nuestro Full SDK completo.
Requisitos
Antes de comenzar la integración de Yuno Android SDK, asegúrate de que tu proyecto cumple los requisitos técnicos. Además, asegúrate de que se cumplen los siguientes requisitos previos:
- Debes tener una cuenta Yuno activa
- Necesitas tus credenciales de la API de Yuno (
public-api-key), que puedes obtener en Sección de desarrolladores del panel de Yuno - Antes de inscribir un método de pago, debe crear un cliente utilizando el endpoint Crear cliente
Paso 1: Crea un cliente
Cree un cliente en el sistema de Yuno utilizando la función Crear endpoint cliente antes de inscribir métodos de pago. Este endpoint devolverá un customer_id que utilizará para asociar los métodos de pago inscritos con el cliente específico.
El endpoint devolverá un customer_session que deberá utilizar al llamar a los métodos de inscripción.
Paso 2: Incluya la biblioteca en tu proyecto
Añade el Lite SDK de Yuno Lite a tu proyecto Android:
Añadir el repositorio
Añade el repositorio Maven de Yuno a la configuración Gradle de tu proyecto:
maven { url "https://yunopayments.jfrog.io/artifactory/snapshots-libs-release" }Incluya el siguiente código en el archivo build.gradle para añadir la dependencia del SDK de Yuno a la aplicación:
dependencies {
implementation 'com.yuno.payments:android-sdk:{last_version}'
}Permisos
El SDK de Yuno incluye el INTERNET por defecto, necesario para realizar solicitudes de red.
<uses-permission android:name="android.permission.INTERNET" />Paso 3: Initialize el SDK con la clave pública
Initialize el SDK:
- Obtén tu Clave Pública API desde el Panel de Control de Yuno
- Cree una clase de aplicación personalizada si aún no lo ha hecho
- En el
onCreate()de tu clase de aplicación, llame aYuno.initialize()con su clave API:
class CustomApplication : Application() {
override fun onCreate() {
super.onCreate()
Yuno.initialize(
this,
PUBLIC_API_KEY,
config: YunoConfig,
)
}
}Usa la clase de datos YunoConfig para personalizar el comportamiento del SDK. Incluya esta configuración cuando llame a Yuno.initialize(). Las opciones disponibles son:
datos clase YunoConfig(
val cardFlow: CardFormType = CardFormType.UN_Paso,
val guardarTarjetaHabilitada: Boolean = false
val keepLoader: Boolean = false
val cardFormDeployed: Boolean = false
val idioma: YunoLanguage? = null
val estilos: YunoStyles? = null
)La siguiente tabla describe cada opción de personalización:
Opción de personalización | Descripción |
|---|---|
flujo de tarjeta | Esta configuración opcional define el flujo de pago y de Tarjetas de Inscripción. Por defecto, el |
saveCardEnabled | Activa la casilla Guardar tarjeta en los flujos de tarjetas. Consulte la sección Guardar tarjeta para obtener más información. |
keepLoader | Mantén la pantalla de carga de Yuno hasta que crees y continúes con el pago. Para usar esta característica, usa la función |
language | Define el idioma que se utilizará en los formularios de pago. Puede establecerlo en una de las opciones de idioma disponibles:
|
| |
estilos | Permite la personalización de la interfaz de usuario en todo el SDK. Úselo para definir estilos visuales globales, como la familia de fuentes y la apariencia de los botones (color, relleno, radio, tipografía) mediante un |
También necesitas actualizar tu manifiesto para usar tu aplicación:
<application android:name=".CustomApplication"></application>Paso 4: Inscribir un nuevo método de pago
El proceso de inscripción consta de dos pasos. Primero, inicializar el proceso para configurar los componentes necesarios. A continuación, inicie el flujo de la interfaz de usuario para que el usuario pueda inscribir un método de pago.
4.1 Initialize proceso de inscripción
Llame al initEnrollment dentro del método onCreate para preparar tu aplicación para gestionar el flujo de inscripción. Se trata de un paso de configuración obligatorio requerido por el sistema operativo Android para registrar el contrato que permite al SDK enviar el estado de inscripción final a tu aplicación.
fun ComponentActivity.initEnrollment(
callbackEnrollmentState: ((¿Cadena?) -> Unidad)? = null
)4.2 Iniciar el flujo de inscripción
Llame al startEnrollment para iniciar la interfaz de usuario y comenzar la inscripción de un nuevo método de pago. Puede llamar a este método en cualquier momento después de initEnrollment se ha ejecutado, como cuando un usuario pulsa un botón "Inscribir nuevo método de pago ".
fun Actividad.iniciarInscripción(
clienteSesión: Cadena,
countryCode: String
mostrarEstadoInscripción: Boolean = true,
callbackEnrollmentState: ((String?) -> Unit)? = null,
códigoSolicitud: Int
)En la tabla siguiente se describen los startEnrollment parámetros:
| Parámetro | Descripción |
|---|---|
customerSession | El cliente de la sesión asociado al proceso de inscripción actual. |
countryCode | Código del país donde se realiza el pago. Consulte Cobertura de países para obtener una lista completa de los países admitidos y sus códigos. |
showEnrollmentStatus | Indica si se debe mostrar el estado de la inscripción. Este parámetro es opcional y su valor por defecto es true. |
callbackEnrollmentState | Función que devuelve el estado actual del proceso de inscripción. Este parámetro es opcional y su valor predeterminado es null. Para registrar esta devolución de llamada, debe llamar a initEnrollment método en el onCreate de la actividad. Compruebe el estados posibles que se pueden devolver. |
requestCode | Es un parámetro opcional que debe informar si va a utilizar la función onActivityResult para capturar los estados de inscripción. |
Estado de inscripción de devolución de llamada
El objeto callbackEnrollmentState es una función que devuelve el estado actual del proceso de inscripción. Proporcione esta función solo si desea realizar un seguimiento del estado de la inscripción.
Use el endpoint AppCompatActivity.enrollmentStatus() para comprobar el estado actual de la inscripción en cualquier momento. Esta función es opcional y acepta los mismos parámetros que startEnrollment. El siguiente bloque de código muestra la firma de la función:
fun AppCompatActivity.enrollmentStatus(
clienteSesión: String,
countryCode: String
mostrarEstadoDeInscripción: Boolean = false
callbackEnrollmentState: ((¿Cadena?) -> Unidad)? = null,
)
Función opcionalMediante la función
enrollmentStatuses opcional. No es un requisito para completar el proceso de inscripción. Más información
Anulación de la devolución de llamadaSi proporciona una nueva devolución de llamada al llamar a la función
enrollmentStatusanulará la llamada de retorno establecida al llamar a la funcióninitEnrollment.
El siguiente bloque de código muestra los posibles estados:
const val ESTADO_INSCRIPCIÓN_SUCCEDIDO =SUCCEEDED"
const val ESTADO_INSCRIPCIÓN_FALLO = "FALLO"
const val ESTADO_INSCRIPCIÓN_PROCESANDO = "PROCESANDO"
const val ESTADO_INSCRIPCIÓN_RECHAZAR = "RECHAZAR"
const val ESTADO_INSCRIPCIÓN_ERROR_INTERNO = "ERROR_INTERNO"
const val ESTADO_INSCRIPCIÓN_CANCELADA_POR_USUARIO = "CANCELADA"La siguiente tabla proporciona información adicional sobre los posibles estados:
| Estado | Descripción | Se requiere acción adicional |
|---|---|---|
SUCCEEDED | El proceso de inscripción se ha completado con éxito y sin errores. | No. |
FAIL | El intento de inscripción falló debido a errores como problemas de validación de datos, fallos de conexión al servidor o problemas técnicos. | Sí. Investigue la causa del fallo (validación, red, servidor) y tome medidas correctivas. |
PROCESSING | La inscripción está actualmente en curso, a la espera de aprobación o verificación. | No. |
REJECT | La inscripción fue rechazada por motivos como la falta de requisitos o incoherencias detectadas. | Sí. Informe al usuario del rechazo, facilite el motivo si es posible y sugiera los siguientes pasos. |
INTERNAL_ERROR | Se ha producido un error interno inesperado en el sistema que gestiona el proceso de inscripción. | Sí. Requiere intervención técnica para revisar el sistema, solucionar problemas internos y reintentar o informar al usuario. |
CANCELED | El usuario canceló voluntariamente el proceso de inscripción o salió antes de completarlo. | No. |
Utilización de la OnActivityResult method
OnActivityResult method
Método obsoletoEl objeto
onActivityResultes una solución obsoleta. Si estás realizando una nueva integración Android, Yuno recomienda usar el métodoinitEnrollment()contrato, que sigue las mejores prácticas de Google.
El método onActivityResult se invoca automáticamente cuando una actividad devuelve un resultado. Puede utilizar esta opción para ejecutar acciones siempre que cambie el estado de la inscripción. Siga estos pasos para procesar el resultado de la inscripción:
Uso del código de pedido predeterminadoSi utiliza el
onActivityResultpero no informó arequestCodeal llamar alstartEnrollmenten el Paso 3, debe utilizar elYUNO_ENROLLMENT_REQUEST_CODEproporcionado por Yuno.
- Anular el
onActivityResultmétodo. Esto garantiza que se respeten las llamadas jerárquicas.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}- Compruebe si el
requestCodecorresponde aYUNO_ENROLLMENT_REQUEST_CODE. Dado que está ejecutandoYunoen tu aplicación, puede importar elYUNO_ENROLLMENT_REQUEST_CODEpara usarlo.
if (requestCode == YUNO_ENROLLMENT_REQUEST_CODE) {
}- Si el
requestCodecoincide, gestiona el resultado de la inscripción. Extrae el estado de inscripción utilizando el métodoYUNO_ENROLLMENT_RESULTproporcionada por la biblioteca Yuno. Cree unaonEnrollmentStateChangepara gestionar los cambios de estado.
onEnrollmentStateChange(data?.getStringExtra(YUNO_ENROLLMENT_RESULT))El siguiente bloque de código muestra un ejemplo de código para utilizar la función OnActivityResult para ejecutar funciones cuando cambia el estado de inscripción:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == YUNO_ENROLLMENT_REQUEST_CODE) {
val enrollmentState = data?.getStringExtra(YUNO_ENROLLMENT_RESULT)
onEnrollmentStateChange(enrollmentState)
}
}
fun onEnrollmentStateChange(enrollmentState: String?) {
when (enrollmentState) {
"SUCCEEDED" -> {
}
"FAIL" -> {
}
}
}Paso 5: Obtener el estado de la inscripción
Llame al initEnrollment método en el onCreate de la actividad para registrar una llamada de retorno para obtener el estado final de la inscripción.
Características complementarias
Yuno Android SDK proporciona servicios y configuraciones adicionales que puedes utilizar para mejorar la experiencia de los clientes. Utiliza la personalización del SDK para cambiar la apariencia del SDK para que coincida con tu marca o para configurar el cargador.
styles
stylesCon el styles puede definir estilos visuales globales a través de una opción de personalización YunoStyles objeto. Permite aplicar una imagen de marca consistente en todo el SDK personalizando la apariencia y la tipografía de los botones.
datos clase YunoStyles(
val BotónEstilos: YunoButtonStyles? = null,
val fontFamily: ¿FontFamily? = null
)| Parámetro | Descripción |
|---|---|
buttonStyles | Personaliza los botones principales que se muestran en el SDK. |
fontFamily | Establece la familia de fuentes utilizada en todos los elementos de texto del SDK. |
El objeto YunoButtonStyles El objeto le permite definir configuraciones específicas para la apariencia del botón:
datos clase YunoButtonStyles(
val backgroundColor: Color? = null,
val contentColor: Color? = null,
val cornerRadius: ¿Dp? = null
val elevación: ¿Dp? = null
val relleno: ¿Dp? = null
val fontFamily: FontFamily? = null
val fontSize: TextUnit? = null
val fontStyle: FontStyle? = null
)Use el endpoint YunoConfig descrita en el paso 3, para utilizar la clase de datos styles opción de personalización.
Loader
La funcionalidad del cargador se controla a través del keepLoader en el parámetro YunoConfig que se documenta en línea en la sección de configuración del SDK.
Opciones de renderizado
Puede elegir entre dos opciones de representación de la forma de la tarjeta. Las siguientes capturas de pantalla muestran la diferencia entre cardFormType ONE_STEP y STEP_BY_STEP:
Personalización del SDK
Puede cambiar el aspecto del SDK para adaptarlo a su marca. Para obtener más información, consulte la página de personalización del SDK.
App DemoAdemás de los ejemplos de código proporcionados, puedes ver el repositorio de Yuno para completar la implementación de Yuno Android SDKs.
Modo de renderizado (inscripción)
El modo de renderizado del SDK de Yuno te permite integrar el flujo de inscripción con un control total de la interfaz de usuario, manteniendo la validación y la lógica del SDK. El SDK devuelve Android Fragment que puede mostrar tanto en Jetpack Compose (a través de AndroidView) como en los diseños XML tradicionales.
Función principal: startEnrollmentRender
startEnrollmentRenderfun Actividad.iniciarRenderizaciónInscripción(
clienteSesión: String
countryCode: String
submitButton: Boolean = false,
coroutineScope: CoroutineScope,
oyente: YunoEnrollmentRenderListener
): YunoEnrollmentFragmentControllerParámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
customerSession | String | Sí | La sesión de cliente para el proceso de inscripción actual |
countryCode | String | Sí | Código de país para la configuración regional |
submitButton | Boolean | No | Si el trueel SDK renderiza internamente las acciones de envío; de lo contrario, utiliza su interfaz de usuario. |
coroutineScope | CoroutineScope | Sí | Ámbito utilizado para ejecutar operaciones asíncronas vinculadas al ciclo de vida de la actividad. |
listener | YunoEnrollmentRenderListener | Sí | Receptor de eventos de fragmentos, carga y estado final |
Valor de retorno
Devuelve un YunoEnrollmentFragmentController para controlar el flujo de inscripción (por ejemplo, enviar formularios).
Ejemplo de uso
class EnrollmentActivity : Activity() {
private lateinit var fragmentController: YunoEnrollmentFragmentController
private fun initializeEnrollment() {
fragmentController = startEnrollmentRender(
customerSession = "your_customer_session_id",
countryCode = "US",
submitButton = false,
coroutineScope = lifecycleScope,
listener = enrollmentRenderListener
)
}
}Interfaz: YunoEnrollmentRenderListener
YunoEnrollmentRenderListenerImplementa esta interfaz para recibir fragmentos de inscripción y eventos.
interface YunoEnrollmentRenderListener {
fun showView(fragment: Fragment, needSubmit: Boolean)
fun returnStatus(resultCode: Int, paymentStatus: String)
fun loadingListener(isLoading: Boolean)
}showView(fragmento: Fragmento, needSubmit: Boolean)
- Recibe el fragmento que se mostrará en su contenedor de interfaz de usuario
needSubmitindica si debe mostrar su propio botón de envío (cuandosubmitButton = false)
Ejemplo (XML):
override fun showView(fragment: Fragment, needSubmit: Boolean) {
supportFragmentManager.beginTransaction()
.replace(R.id.enrollment_container, fragment)
.commit()
clientSubmitButton.isVisible = needSubmit
if (needSubmit) {
clientSubmitButton.setOnClickListener { fragmentController.submitForm() }
}
}returnStatus(resultCode: Int, paymentStatus: String)
- Evento de estado de inscripción final. Utilízalo para notificar al usuario el éxito o el fracaso
loadingListener(isLoading: Boolean)
- Carga de callback de estado para mostrar/ocultar spinners y desactivar/activar UI
override fun loadingListener(isLoading: Boolean) {
progressBar.isVisible = isLoading
clientSubmitButton.isEnabled = !isLoading
}Interfaz: YunoEnrollmentFragmentController
YunoEnrollmentFragmentControllerDevuelto por startEnrollmentRender para controlar el flujo de inscripción.
interfaz YunoEnrollmentFragmentController {
fun submitForm()
}val fragmentController = iniciarEnrollmentRender(
sesión_cliente = "tu_id_sesión_cliente",
countryCode = "US",
submitButton = false,
coroutineScope = lifecycleScope,
listener = enrollmentRenderListener
)- Controle el flujo (sométase cuando sea necesario):
fragmentController.submitForm()Ventajas del modo Render
Flexibilidad de la interfaz de usuario
- Compatible con Compose (a través de AndroidView) y XML
- Control total sobre dónde y cómo se muestran las vistas
- Fácil de adaptar al sistema de diseño de tu aplicación
Control del caudal
- Temporización de envío personalizada mediante
submitForm()
Consideraciones importantes
- Corbata
coroutineScopea su ciclo de vida Actividad/Fragmento (por ejemplo,lifecycleScope) - En
needSubmit = true, cree su propio botón de envío y llame asubmitForm() - En Compose, coloque el fragmento en un
AndroidViewcontenedor
Actualizado hace 3 meses