El objeto ClipPayment

Crear un objeto de pago

Para integrar la función de pagos con tarjeta usando el Clip Plus, se requiere:

  • Crear un objeto de pago en la aplicación
  • Agregar un listener para el botón o elemento gráfico de pago en tu aplicación
30623062

Para crear un objeto de pago, implementa la siguiente función:

val clipPayment = ClipPayment.Builder()
                .amount(amount: BigDecimal)
                .enableContactless(enabled: Boolean)
                .enableTips(enabled: Boolean)
                .roundTips(round: Boolean)
                .enablePayWithPoints(enabled: Boolean)
                .customTransactionId(customTransactionId: String?)
                .build()
ClipPayment clipPayment = new ClipPayment.Builder()
               .amount(BigDecimal: amount)
               .enableContactless(boolean enabled)
               .enabledTips(boolean enabled)
               .roundTips(boolean round)
               .enablePayWithPoints(boolean enabled)
               .customTransactionId(String customTransactionId)
               .build();

La siguiente tabla incluye una descripción para los elementos del objeto ClipPayment:

Elemento

Tipo de Dato

Descripción

amount

Big Decimal

Cantidad de la transacción.

enableContactless

Boolean

Por medio de un switch, permite activar o desactivar las transacciones con tecnología contactless en el dispositivo Clip Plus 2.

enableTips

Boolean

Permite mostrar la pantalla de selección de propina en el flujo de pago.

roundTips

Boolean

Cuando enableTips está activo, permite redondear los decimales de la cantidad de la propina.

enablePayWithPoints

Boolean

Por medio de un switch, permite activar o desactivar el pago con puntos.

customTransactionId

String

Referencia personalizada proporcionada por el cliente.

Longitud: 100 caracteres

Validación: cadena alfanumérica y los siguientes caracteres especiales @ # $ & ( ) _ - , .

En el listener del botón de pago de tu aplicación, agrega la siguiente función:

ClipApi.launchPaymentActivity(activity: Activity, payment: ClipPayment, requestCode: Int)
ClipApi.launchPaymentActivity(Activity activity, ClipPayment payment, int requestCode);

El resultado de una transacción será recibido en el método onActivityResult() del Activity que invocó el método de pago.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    when (requestCode) {
        REQUEST_CODE_PAYMENT -> {
            when (data?.getIntExtra(StatusCode.RESULT_CODE, StatusCode.FAILURE)) {
                StatusCode.SUCCESSFUL -> {
                    val transactionResult = data.getParcelableExtra<ClipTransaction>(StatusCode.RESULT_PAYMENT_DATA)
                    // Transaction succeeded
                }
                StatusCode.FAILURE -> {
                    // Transaction failed
                }
            }
        }

        else -> super.onActivityResult(requestCode, resultCode, data)
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    String content;
    if (requestCode == REQUEST_CODE_PAYMENT) {
        case REQUEST_CODE_PAYMENT_RESULT :
        switch(data.getIntExtra(StatusCode.RESULT_CODE, StatusCode.FAILURE)) {
            case StatusCode . SUCCESSFUL :
            ClipTransaction transactionResult = data . getParcelableExtra (StatusCode.RESULT_PAYMENT_DATA);
            // Transaction succeeded
            break;
            case StatusCode . FAILURE :
            int errorCode = data . getIntExtra (StatusCode.RESULT_ERROR, -1);
            String errorCodeDesc = data . getStringExtra (StatusCode.RESULT_ERROR_DESC);
            String messageError = data . getStringExtra (StatusCode.RESULT_ERROR_MESSAGE);
            // Transaction failed
            break;
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

👍

Mira cómo hacerlo

Consulta la receta con los pasos necesarios para recibir un pago con tarjeta en tu proyecto.



Restringir pagos con ciertos tipos de tarjetas

El SDK de Clip permite especificar una lista de números BIN (Número de Identificación Bancario, por sus siglas en inglés) restringidos de las tarjetas de las que no se desea recibir pagos. El número BIN son los primeros seis dígitos de una tarjeta.

📘

Nota

La función de restringir pagos por número BIN sólo es compatible con pagos con tarjeta swipe y chip. No es compatible para pagos en modo contactless.

Para proporcionar esta lista restringida al SDK, primero es necesario crear una lista de objetos del tipo CardBin cuyo único parámetro es un String que contiene el BIN de la tarjeta:

val listOfBins = listOf(CardBin(“XXXXXX”), CardBin(“XXXXXX”))
List<CardBin> listOfBins = Arrays.asList(CardBin(“XXXXXX”), CardBin(“XXXXXX”));

📘

Nota

El regex que se valida es: ^\d{0,6}$
De no cumplir con el formato especificado, se regresará una excepción de tipo: InvalidParameterFormat.

Ya que se creó y envió la lista, es necesario llamar a la función ClipApi.setCardBinRestriction() y pasar como parámetro la lista creada:

ClipApi.setCardBinRestriction(restrictionType: RestrictionType, listOfBins: List<CardBin>)
ClipApi.setCardBinRestriction(RestrictionType restrictionType, List<CardBin> listOfBins);

La siguiente tabla incluye una descripción para el objeto RestrictionType:

Elemento

Descripción

RestrictionType.ALLOWED

Únicamente se aceptarán pagos con las tarjetas provistas por medio de listOfBins.

RestrictionType.DENIED

Las tarjetas que se pasen por medio de listOfBins no se aceptarán en los pagos.

📘

Nota

Es necesario crear y enviar la lista de números restringidos antes de iniciar una transacción.

👍

Mira cómo hacerlo

Consulta la receta con los pasos necesarios para restringir pagos a ciertas tarjetas en tu proyecto.