Características adicionales.

Banda Magnetica

La actual lectura de de banda magnetica se limita a tarjetas no financieras solo obteniendo el track
de la tarjeta.

1.0 Implementación de la librería.

La librería se implementará en la carpeta libs a nivel app agregando el archivo smartapi.aar

2.0 Inicializar el SDK y asignar variable

Paso 1: Debemos inicializar el SDK para poder hacer uso de todos los métodos disponibles llamando al método createSmartApi(). En este ejemplo creamos una constante llamada smartApi.

Ejemplo:

private val smartApi =SmartApiFactory.createSmartApi(this)
private SmartApi smartApi = SmartApiFactory.INSTANCE.createSmartApi(this);

3.0 Petición y Obteniendo la respuesta

Paso 2: Se manda a llamar el metodo .doTrans(ReadRequest("mx.com.netpay.demosdk"))) el cual recibe el id del paquete de la aplicación actual , y la respuesta se recibira en el activity on result.

Peticion:

/**Read magnetic band*/
readMagnetic.setOnClickListener {

    smartApi.doTrans(ReadRequest("mx.com.netpay.demosdk"))
}
/**Read magnetic band*/
readMagnetic.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        smartApi.doTrans(new ReadRequest("mx.com.netpay.demosdk"));
    }
});

    )
}

Respuesta:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if(data != null) {
        val response = when(requestCode) {
            Constants.READ_MAGNETIC_REQUEST-> smartApi.onResult(requestCode,resultCode,data) as ReadResponse  else -> null
        }
        tvResponse.text = Gson().toJson(response)
    }
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(data != null) {
            BaseResponse response = null;
            switch (requestCode) {
                case Constants.READ_MAGNETIC_REQUEST:
                    response = (ReadResponse) smartApi.onResult(requestCode, resultCode, data);
                    break;
            }
            if (response != null) {
                responseTv.setText(new Gson().toJson(response));
            }
        }
}

4.0 Petición y Obteniendo la respuesta

Paso 1: Ingresar a la app DemoSDK, se mostrará la pantalla correspondiente.

413

Paso 2: Presionar la opción de Leer Tarjetas Magnéticas

413

Paso 3: Deslizar tarjeta y la pantalla mostrará Leyendo dispositivo…

502

Paso 4: Posteriormente al finalizar la lectura de la tarjeta regresará la información en el siguiente formato, debido a que se lee el track 2 en banda magnetica regresará un número de tarjeta y un numerico concatenados por un “=” o encoding .

396

Implementación de código QR

Si se requiere implementar un código QR en la transacción, lo puede realizar con el siguiente código de ejemplo.

printButton.setOnClickListener(View.OnClickListener {
            //Crear una página
            val page = smartApi.createPage()
            //Crear unidad que contiene texto y otros formatos
            val unit1 = page.createUnit()
            unit1.text = "nuevo exto 1"
            unit1.gravity = Gravity.START
            //Se pueden agregar 2 o más unidades a una línea y se dividirá en columnas
            val unit2 = page.createUnit()
            unit2.text = "nuevo Texto 2"
            unit2.gravity = Gravity.END
            //Se crea una línea y se agregan sus unidades.
            page.addLine().addUnit(unit1).addUnit(unit2)
            //Se crea una nueva unidad
            val unit3 = page.createUnit()
            unit3.text = "nuevo texto 3"
            unit3.gravity = Gravity.CENTER
            //Se crea una nueva línea y se agrega la unidad pasada
            page.addLine().addUnit(unit3)
            //Se crea un request del tipo PrintRequest con el package name de la app y la página creada


            page.addLine().addUnit(page.createUnit().apply {
                text = ""
                bitmap = logoBitmap(R.drawable.qr)
                gravity = Gravity.CENTER
            })



            val unit4 = page.createUnit()
            unit4.text = "Texto 4"
            unit4.gravity = Gravity.CENTER
            page.addLine().addUnit(unit4)


            val printRequest = PrintRequest("mx.com.netpay.demosdk", page)
            smartApi.doTrans(printRequest)
  })
  
  private fun logoBitmap(resource:Int):Bitmap{
        val myDrawable = getDrawable(resource)
        return (myDrawable as BitmapDrawable).bitmap
    }

📘

Nota.

En los datos adicionales se puede agregar tanto texto,como imágenes como lo muestra el ejemplo anterior.

Ejemplo de ticket con código QR.

720

📘

Nota.

Para simular este demo de QR en el ticket, pueden presionar el botón de Venta Additional Data en la seccion del readme Demo SDK

NFC Tags

Los tags prácticamente esperan un mensaje de respuesta, algunos tags no tienen un mensaje internamente, y la información se podría regresar como vacío, por lo mismo para poder acceder a estas se necesita configurar el mensaje para poder verlo.

Este mismo método accede a estos 3 tipos de tags

Se tiene que tomar en cuenta que para realizar esta configuración debe ser desde otro dispositivo compatible con lectura NFC y que se puede modificar a través de las aplicaciones NFC tools y NFC reader.
Este método no requiere autenticación como tal, soporta 3 tags.

Este método no requiere autenticación como tal, soporta 3 tags.
Características técnicas de las Etiquetas NFC de la serie NTAG

NTAG - 213
NTAG - 215
NTAG - 216

En particular en el segundo método que hace referencia a los tags con autorización.

En el caso de los NFC tag con autorización se agregan los parámetros de id de la app (paquete), bloque (en este caso se requiere del bloque 0), y password , el password puede ser alguno que se haya aplicado por el fabricante de los tags, en caso de mandar nulo se emplea la llave por default, en este caso se puede manejar como null ya que se emplea la llave "FFFFFFFFFFFF"
Este si requiere autenticación y al momento de que lo utilizas este regresa un RFID

Para poder hacer la implementación de esta información es necesario descargar una librería adicional en el siguiente link

https://drive.google.com/file/d/1cQs1omad3RsXDZofyTjUeC0O46eoyWe0/view?usp=sharing

🚧

Nota:

Es necesario solicitar acceso y anexar la información del nombre del comercio y asesor comercial de NetPay.