Validación de BIN

Validación de BIN

ℹ️

Este proceso es opcional

En esta fase se procede a validar el BIN de la tarjeta para conocer la marca, el tipo y si es nacional o internacional.

Requisitos

Resultado

  • Después del proceso de validación del BIN, se obtendrá la marca de la tarjeta, el tipo y un flag que indicará si debe ser tratada como nacional o internacional.

Paso a paso

  1. Instanciar el objeto BinValidationData pasándole el contexto.
  2. Hacer el set del objeto OperationFlow.
  3. Invocar el método doBinValidation y pasarle el BIN como parámetro.
  4. Configurar un observador para recuperar el resultado.

Ejemplo de implementación

 private val operationFlow: OperationFlow?
        get() = OperationFlowHolder.operationFlow
 
RestClientConfiguration.configure(AppfinRestClientConfigure())
 
val binValidationData = BinValidationData(this)
binValidationData.setOperationFlow(
    operationFlow = operationFlow!!,
    merchantId = merchantId,
    customerId = customerId
)
binValidationData.doBinValidation(bin)
 
binValidationData.binValidationResponse.observe(this) {
    if (it.status == "FOUND") {
        binValidationData.setCardBrand(it.brand)
        val cardType: String = when (it.type) {
            "C" -> {
                CardType.CREDIT.name
            }
 
            "D" -> {
                CardType.DEBIT.name
            }
 
            else -> {
                CardType.PREPAID.name
            }
        }
        binValidationData.setCardType(cardType)
        binValidationData.setIsInternational(it.isInternational ?: false)
        binValidationData.setInstitutionId(
            idInstitution = it.institutionId,
            customerId = customerId
        )
 
        when (cardType) {
            CardType.CREDIT.name -> {
                Log.i(TAG, "Mostrar pantalla de cuotas disponibles")
            }
 
            else -> { //Debit y Prepaid
                operationFlow!!.installments = "01"
                Log.i(TAG, "Ir directo al pago")
            }
        }
 
    } else {
        Log.i(TAG, "Bin no encontrado")
        val brandsAvailable = it.brandsAvailable
        Log.i(TAG, "Marcas y tipos disponibles: $brandsAvailable")
    }
}          

Códigos de respuesta

El resultado se recibe mediante el objeto BinValidationResponse. En la siguiente tabla se muestran los posibles valores que se pueden recibir como respuesta:

CódigoDescripción
FOUNDIndica que el BIN fue encontrado en la base de datos de Menta.
NOT_FOUNDIndica que el BIN no fue encontrado.
  • Para el caso de BIN encontrado, como siguiente paso, se debe hacer el set de la marca, tipo, flag de nacional/internacional y del institutionID usando los métodos del SDK.
  • Para el caso del BIN no encontrado, dentro del objeto BinValidationResponse llegará una lista de marcas y tipos disponibles para que el cliente pueda armar pantallas de selección manual si así lo considera, cabe mencionar que los datos antes mencionados son requeridos para el request de cualquier operación.