1. Mobile
Español
  • English
  • Español
  • Inicio
  • Integración con MCP
  • Libraries & SDKs (Online Payments)
    • Notas de versión
    • Mobile
      • Kushki Android
      • Kushki iOS 
      • Configuración ARM de Kushki iOS
    • Web
      • Kushki.js 🌐
      • kushki.js-hosted-fields
        • kushki.js Hosted Fields
        • Migrar a Kushki.js 2.0
        • Antifraud
          • Interfaces
            • SiftScienceObject
            • SecureInitRequest
            • SecureInitResponse
          • Methods
            • requestInitAntiFraud
            • requestSecureInit
            • requestValidate3DS
        • Card
          • CarApplePay interface
            • Interfaz ICardApplePay
          • Card-Interface
            • Interfaz ICard
            • Interfaz ICardSubscriptions
          • Errors
            • Lista de errores
          • Interfaces
            • MasterCardBrandingRequest
            • Interfaz ApplePayGetTokenOptions
            • Interfaz ApplePayOptions
            • ApplePayPaymentContact
            • AppleTokenResponse
            • CardFieldValues
            • CardOptions
            • DeviceTokenRequest
            • Fields
            • FormValidity
            • SecureDeviceTokenOptions
            • Styles
            • TokenResponse
            • Amount
            • Interfaz BrandByMerchantResponse
            • CardInfo
            • CardTokenResponse
            • DeferredByBinOptionsResponse
            • DeferredInputValues
            • DeferredValuesResponse
            • Field
            • FieldInstance
            • FieldValidity
            • VisaBrandingRequest
          • Methods
            • initApplePayButton
            • initCardToken
            • initSecureDeviceToken
            • Método requestBrandsByMerchant
            • Método requestDeviceToken
            • requestInitCardBrandingAnimation
          • Types
            • CssProperties
            • Moneda
            • FieldTypeEnum
        • Card Payouts
          • Card Payouts Interface
            • ICardPayouts
          • Enumerations
            • Enumeración `InputModelEnum`
          • Errors
            • Errores
          • Interfaces
            • CardPayoutOptions
            • CardPayoutSubscriptionTokenResponse
            • CardPayoutUniqueTokenResponse
            • Field
            • Fields
            • FieldValidity
            • Interfaz FormValidity
            • Interfaz `Styles`
          • Methods
            • initCardPayoutToken
          • Type Aliases
            • CardPayoutTokenResponse
            • InputTypeEnum
          • Types
            • CssProperties
        • Kushki
          • Methods
            • Función init
            • Función requestBankList
            • Función requestCommissionConfiguration
          • Classes
            • KushkiError
          • Interfaces
            • IKushki
            • KushkiOptions
            • CommissionConfigurationRequest
Home
Perú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
Home
Perú 🇵🇪México 🇲🇽Ecuador 🇪🇨Colombia 🇨🇴Chile 🇨🇱
  1. Mobile

Kushki Android

La librería de Kushki para Android te permite recibir pagos de forma fácil y segura en tu aplicación móvil Android.
TIP
¡Te lo hacemos fácil!
Esta librería se encarga de la complejidad de los pagos seguros para que tú te concentres en la experiencia de tu app.

⚙️ Instalación y configuración#

Para usar 3DS, agrega el siguiente repositorio de Maven y sus credenciales al archivo gradle de tu app
Instalar la librería de Kushki para Android es simple: agrega el siguiente código al archivo build.gradle de tu proyecto, dentro de la sección dependencies.

🛠️ Uso#

Cuando termines la instalación, crea una instancia de Kushki. Con ella podrás usar todos los métodos disponibles en el SDK.

Parámetros de configuración#

Requerido
PropiedadTipoDescripciónPor defectoValores posibles
publicMerchantIdStringID de Kushki creado para tu comercio.--
currencyStringCódigo de moneda.USDUSD, COP, CLP, UF, PEN, MXN
Opcional
PropiedadTipoDescripciónPor defectoValores posibles
environmentEnumValor para definir si estás en ambiente de producción o de pruebas.KushkiEnvironment.PRODUCTIONKushkiEnvironment.PRODUCTION, KushkiEnvironment.TESTING
regionalBooleanDefine si se usa una IP estática para acceder a Kushki.falsetrue, false

⚡ Examples
Encuentra los métodos disponibles en nuestra librería de Android, con ejemplos.

Ejemplos de pago único#

Nota de seguridad
El token que entrega Kushki solo cifra y envía información. Si quieres guardar los datos de la tarjeta para compras futuras, ve a la sección Ejemplos de cargos recurrentes.
💳 Card
⏳ Card Async
🍏 Apple Pay
🏦 Transfer In
💵 Cash In

requestToken()#

Para solicitar un token de tarjeta, puedes usar este método


Requerido

PropiedadTipoDescripción
cardObjectLos datos de la tarjeta recogidos en un objeto card
totalAmountDoubleEl monto que vas a cobrar

Opcional

PropiedadTipoDescripciónValores posibles
contextContextContexto del estado actual de la aplicación u objeto. Obligatorio en implementaciones con 3DS y Sift.
activityActivityComponente de la aplicación que provee una pantalla con la que los usuarios pueden interactuar para hacer algo. Obligatorio en implementaciones con 3DS.

3DS#

El método requestToken de la librería de Kushki para Android hace lo necesario para que los comercios que tienen 3DS activo puedan verificar transacciones a través de este servicio.
En implementaciones con 3DS es necesario validar que specificationVersion sea mayor que 2.0.
Respuesta
Si el servicio de 3DS no está activo, al consumir el método requestToken se devolverá una respuesta similar a la siguiente

{
     "token": "PmgVbd100000Pe5VEU098014S84wiTFR"
}

Si el servicio de 3DS está activo, al consumir el método requestToken se devolverá una respuesta similar a la siguiente

{
    "token": "PmgVbd100000Pe5VEU098014S84wiTFR",
    "secureService": "3dsecure",
    "secureId": "a80d6cef-90ad-44ca-a2ef-f244301d5e40",
    "security": {
        "acsURL": "https://0merchantacsstag.cardinalcommerce.com/MerchantACSWeb/creq.jsp",
        "authenticationTransactionId": "o6YMk3mdEoAMVMImUpd0",
        "authRequired": true,
        "paReq": "eyJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMi4wIiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJlODIzYWVhMS1hMjM3LTRkNmQtYjlhNC0yY2JjZGZlYjI1YTYiLCJhY3NUcmFuc0lEIjoiY2Q4MThmNDAtOTc1NC00NmRjLTg1YzgtMWU5MDk2MjY1MmMzIiwiYWNzVWlUeXBlIjoiMDIiLCJjaGFsbGVuZ2VDb21wbGV0aW9uSW5kIjoiTiIsImNoYWxsZW5nZUluZm9IZWFkZXIiOiJQYXltZW50IFNlY3VyaXR5IiwiY2hhbGxlbmdlSW5mb0xhYmVsIjoiQ3JlZGVudGlhbCBTZWxlY3Rpb24iLCJjaGFsbGVuZ2VJbmZvVGV4dCI6IllvdXIgb25saW5lIHBheW1lbnQgaXMgYmVpbmcgc2VjdXJlZCB1c2luZyBDYXJkIE5ldHdvcmsuIFBsZWFzZSBzZWxlY3Qgd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8gcmVjZWl2ZSB0aGUgY29kZSBmcm9tIFlvdXJCYW5rLiIsImNoYWxsZW5nZVNlbGVjdEluZm8iOlt7Im1vYmlsZSI6Ik1vYmlsZSAqKioqKioqKjMyMSJ9LHsiZW1haWwiOiJFbWFpbCAqKioqKioqKioqQGcqKioqLmNvbSJ9XSwiaXNzdWVySW1hZ2UiOnsibWVkaXVtIjoiaHR0cHM6Ly9tZXJjaGFudGFjc3N0YWcuY2FyZGluYWxjb21tZXJjZS5jb20vTWVyY2hhbnRBQ1NXZWIvc2NyZWVucy9pbWFnZXMvQW55QmFua181MTIucG5nIiwiaGlnaCI6Imh0dHBzOi8vbWVyY2hhbnRhY3NzdGFnLmNhcmRpbmFsY29tbWVyY2UuY29tL01lcmNoYW50QUNTV2ViL3NjcmVlbnMvaW1hZ2VzL0FueUJhbmtfNTEyLnBuZyIsImV4dHJhSGlnaCI6Imh0dHBzOi8vbWVyY2hhbnRhY3NzdGFnLmNhcmRpbmFsY29tbWVyY2UuY29tL01lcmNoYW50QUNTV2ViL3NjcmVlbnMvaW1hZ2VzL0FueUJhbmtfNTEyLnBuZyJ9LCJwc0ltYWdlIjp7Im1lZGl1bSI6Imh0dHBzOi8vbWVyY2hhbnRhY3NzdGFnLmNhcmRpbmFsY29tbWVyY2UuY29tL01lcmNoYW50QUNTV2ViL3NjcmVlbnMvaW1hZ2VzL0NhcmRfTmV0d29yay5wbmciLCJoaWdoIjoiaHR0cHM6Ly9tZXJjaGFudGFjc3N0YWcuY2FyZGluYWxjb21tZXJjZS5jb20vTWVyY2hhbnRBQ1NXZWIvc2NyZWVucy9pbWFnZXMvQ2FyZF9OZXR3b3JrLnBuZyIsImV4dHJhSGlnaCI6Imh0dHBzOi8vbWVyY2hhbnRhY3NzdGFnLmNhcmRpbmFsY29tbWVyY2UuY29tL01lcmNoYW50QUNTV2ViL3NjcmVlbnMvaW1hZ2VzL0NhcmRfTmV0d29yay5wbmcifSwic2RrVHJhbnNJRCI6IjJjZWI0NjUxLWUyYzAtNDZjOS04YzAxLWI2ODNjMTM3Nzc5MSIsInN1Ym1pdEF1dGhlbnRpY2F0aW9uTGFiZWwiOiJORVhUIiwiYWNzQ291bnRlckF0b1MiOiIwMDAiLCJleHBhbmRJbmZvTGFiZWwiOiJNb3JlIEluZm9ybWF0aW9uIiwiZXhwYW5kSW5mb1RleHQiOiJIZXJlIGlzIHRoZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRoYXQgd2UgcHJvdmlkZS4iLCJ3aHlJbmZvTGFiZWwiOiJOZWVkIHNvbWUgaGVscD8iLCJ3aHlJbmZvVGV4dCI6IkhlcmUgaXMgdGhlIGhlbHAgdGhhdCB3ZSBwcm92aWRlLiJ9",
        "specificationVersion": "2.2.0"
    }
}

PROPIEDADTIPODESCRIPCIÓNVALORES POSIBLES
secureServiceStringServicio usado para autenticar la transacción
secureIdStringEl secureId que obtienes en la respuesta del token
securityObjectEl objeto security que llega en la respuesta del token
security.acsURLStringURL de la página de challenge del emisor
security.authenticationTransactionIdStringID de la transacción verificada por las franquicias.
security.specificationVersionStringVersión de 3D Secure. Debe ser mayor que 2.0
security.paReqStringEste parámetro contiene información de la transacción comprimida y codificada en Base64. Lo entregan las franquicias.
security.authRequiredBooleanIndica si el challenge de 3DS es obligatorio o no.

requestSecureValidation()#

Es necesario validar que el flujo de 3DS se completó con éxito y que el challenge de 3DS se superó correctamente. Para eso usa el método requestSecureValidation() y envía el parámetro secureId que obtuviste del método requestToken().


Respuesta
El objeto de respuesta debe tener la siguiente estructura para dar por completado el flujo de 3DS.

{
    "code": "3DS000",
    "message": "ok"
}

Ejemplo


3DS flow

getBinInfo()#

Devuelve un objeto con la información del bin de la tarjeta de crédito (los primeros ocho dígitos). Para los comercios de Chile, la respuesta sirve para decidir si continúas con la solicitud de un token de tarjeta (cuando cardType es CREDIT) o con la de un token de Card Async (cuando cardType es DEBIT):
Solicitud


Requerido

PropiedadTipoDescripción
binStringLos primeros ocho dígitos de la tarjeta de crédito


Ejemplos de cargos recurrentes#

💳 Card Subscription
⏳ Async Subscription 🇨🇱

requestSubscriptionToken()#

To request a recurring charge token.
Requerido
PropiedadTipoDescripción
cardObjectLos datos de la tarjeta recogidos en un objeto card.

Ejemplos de dispersiones#

💸 Cash Out 🇨🇴

requestCashOutToken()#

To request a Cash Out token.
Requerido
PropiedadTipoDescripciónValores posibles
nameStringNombre del cliente
lastNameStringApellido del cliente
documentTypeStringTipo de documento que el cliente usa para pagar.CC, NIT, CE, TI, PP
documentNumberStringNúmero de documento que el cliente usa para pagar
totalAmountNumberEl monto que vas a cobrar, como número
currencyStringCódigo de moneda usadoCOP

Opcional
PropiedadTipoDescripción
emailStringCorreo electrónico del cliente
descriptionStringUna descripción del pago

🚦 Manejo de respuestas#

Cuando termine la ejecución, tienes que manejar el objeto Transaction.
Resultados correctos
El método onPostExecute recibirá un objeto Transaction. Si la operación fue exitosa, el token estará disponible al invocar el método getToken:
Resultados con error y excepciones
Si la transacción no fue exitosa, puedes obtener los detalles del error directamente del objeto:
Código de error: Invoke transaction.getCode()
Descripción: Invoke transaction.getMessage()
Nota: Ante cualquier error inesperado, el método requestToken lanzará una excepción gestionada de tipo KushkiException.

🎨 Sensory Branding#

La animación de marca de la tarjeta les da a los usuarios una confirmación clara de su pago.
Aplica esta animación solo cuando el usuario haya elegido una tarjeta Mastercard o Visa para pagar, y reprodúcela cuando la transacción se haya completado.
Visa
Mastercard
Agrega el siguiente repositorio de Maven al gradle de tu app:
Agrega las siguientes dependencias en tu archivo build.gradle:
Define la vista ViewVisaAnimation en la activity de destino.
    <com.kushkipagos.views.ViewVisaAnimation
        android:id="@+id/visa_animation"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:clipChildren="false"
        app:backdropColor="@color/blue"
        app:languageCode="SPANISH"
        app:soundEnabled="false"
        app:hapticEnabled="false"
        app:checkmarkMode="NONE"
        app:checkmarkText="SUCCESS"
        />

Propiedades#


PropiedadTipoRequeridoDescripciónPor defectoValores posibles
backdropColorAndroid colorNoDefine un color para el fondo de la animación. Consulta Android resource types para más información.white
languageCodeenumNoDefine el idioma de la animación.ENGLISHENGLISH, SPANISH, PORTUGUESE
soundEnabledbooleanNoActiva o desactiva el sonido de la animación.truetrue, false
hapticEnabledbooleanNoActiva o desactiva la vibración de la animación.truetrue, false
checkmarkModeenumNoMuestra el check de confirmación.CHECKMARKCHECKMARK, CHECKMARK_WITH_TEXT, NONE
checkmarkTextenumNoDefine el texto del check de confirmación.APPROVEAPPROVE, COMPLETE, SUCCESS

Obtén visaAnimationView con el id definido en la activity:

También puedes definir propiedades personalizadas para la animación:
Finally, trigger the animation:

Propiedades#

PropiedadTipoRequeridoDescripción
fnOnFinishedAnimationlambdaSíLambda que se ejecuta cuando termina la animación.

Siguientes pasos#

Recuerda que para continuar con el flujo de pago tienes que enviar a tu back-end el token recibido.
Para iniciar el proceso de cargo, ve a nuestras integraciones de backend: Kushki Libraries o Kushki API


📖 Resumen de referencia#

Encuentra los métodos disponibles en nuestra librería de Android. Puedes hacer las siguientes operaciones:
Pago único:
Crear un token de tarjeta
Consultar la información del bin
Crear un token de Card Async
Crear un token de Transfer In
Crear un token de Cash In
Cargos recurrentes
Crear un token de cargo recurrente con tarjeta
Consultar un cargo recurrente de Card Async
Consultar la lista de bancos disponibles para cargos recurrentes con débito por transferencia
Crear un token de cargo recurrente por transferencia
Iniciar y responder un challenge para validar los datos de la cuenta en los cargos recurrentes por transferencia
Dispersiones
Create a Cash Out token

Pago único#


NombreParámetrosDevuelveDescripción
requestToken()card, totalAmount, context, activityObjectDevuelve un token
requestSecureValidation()En la primera llamada: secureService, secureServiceId, cityCode, stateCode, phone, expeditionDocumentDate. En la segunda llamada: secureService, secureServiceId, questionnaireCode, answers (objeto JSON)ObjectEn la primera llamada devuelve un cuestionario para el challenge. En la segunda devuelve un código y un mensaje con el resultado de la verificación de la cuenta
getBinInfo()binObjectDevuelve un objeto con la información del bin de la tarjeta de crédito
requestCardAsyncToken()totalAmount, returnUrl, email, descriptionObjectDevuelve un token de Card Async
requestTransferToken()amount, callbackUrl, documentType, documentNumber, email, paymentDescription, userTypeObjectDevuelve un token de Transfer In
requestCashToken()totalAmount, currency, identification, documentType, name, lastName, email, descriptionObjectDevuelve un token de Cash In que después puedes usar para inicializar una transacción de Cash In

Cargos recurrentes#


NombreParámetrosDevuelveDescripción
requestSubscriptionToken()cardObjectDevuelve un token de cargo recurrente
requestCardSubscriptionAsyncTokencurrency, email, cardNumber, callbackUrlObjectDevuelve un token de cargo recurrente de Card Async
getBankList()ObjectDevuelve la lista de bancos disponibles para cargos recurrentes por transferencia
requestTransferSubscriptionToken()documentNumber, bankCode, name, lastName, accountNumber, documentType, accountType, email, currencyObjectDevuelve un token junto con un secureId y un secureService. Ese token se puede usar después para crear un cargo recurrente por transferencia. Antes tendrás que confirmar los datos de la cuenta iniciando y respondiendo un challenge con el método de validación segura

Dispersiones#


NombreParámetrosDevuelveDescripción
requestCashOutToken()totalAmount, currency, documentNumber, documentType, name, lastName, email, descriptionObjectDevuelve un token de Cash Out que después puedes usar para inicializar una transacción de Cash Out

🚀 Aplicación de ejemplo#

Puedes encontrar una aplicación de ejemplo en nuestro GitHub android project repository.
¿Tienes una sugerencia sobre esta documentación? Contáctanos.
Modified at 2026-09-10 19:18:39
Previous
Notas de versión
Next
Kushki iOS 
Built with