Additional characteristics

Magnetic Band

The current magnetic stripe reading is limited to non-financial cards.

1.0 Library implementation.

The library will be implemented in the libs folder at the app level by adding the file smartapi.aar

2.0 Initialize SDK and assign variable

Step 1: We need to initialize the SDK in order to make use of all available methods by calling the createSmartApi() method. In this example we create a constant called smartApi.


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

3.0 Request and Getting Response

Step 2: The method .doTrans(ReadRequest(""))) is called, which receives the package id of the current application, and the response is retrived on the activity on result.


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

/**Read magnetic band*/
readMagnetic.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        smartApi.doTrans(new ReadRequest(""));



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)
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);
            if (response != null) {
                responseTv.setText(new Gson().toJson(response));

4.0 Request and Get Response

Step 1: Enter the DemoSDK app, the following screen will be displayed.


Step 2: Press the option to Read Magnetic Cards


Step 3: Swipe card and the following screen will display "Desliza tu tarjeta"


Step 4: Later, reading the card, the information will return with the following format, since track 2 is read on a magnetic stripe, it will return a card number and a number concatenated by an “=” or encoding .


QR code implementation

If it is required to implement a QR code in the transaction, you can do it with the following example code.

printButton.setOnClickListener(View.OnClickListener {
            //Create a Page
            val page = smartApi.createPage()
            //Create unit containing text and other formats
            val unit1 = page.createUnit()
            unit1.text = "nuevo Texto 1"
            unit1.gravity = Gravity.START
            // 2 or more units can be added to a line and it will be split into columns
            val unit2 = page.createUnit()
            unit2.text = "nuevo Texto 2"
            unit2.gravity = Gravity.END
            //Create a line and add its units.
            //Create a new unit
            val unit3 = page.createUnit()
            unit3.text = "nuevo texto 3"
            unit3.gravity = Gravity.CENTER
            //Create a new line and add the passed unit
            //A request of the type PrintRequest is created with the package name of the app and the created page

            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

            val printRequest = PrintRequest("", page)



In the additional data you can add both text and images as shown in the example above.

Example of ticket with QR code.




To simulate this QR demo on the ticket, you can press the Additional Data Sale button in the readme section [Demo SDK]( demo-sdk)

NFC Tags

The tags practically expect a response message, some tags do not have a message internally, and the information could be returned as empty, for the same reason, in order to access them, it is necessary to configure the message to be able to see it.

This same method accesses these 3 types of tags


It must be taken into account that to make this configuration it must be from another device compatible with NFC reading and that it can be modified through the NFC tools and NFC reader applications.
This method does not require authentication as such, it supports 3 tags.

This method does not require authentication as such, it supports 3 tags.
Technical characteristics of the NTAG series NFC Tags

NTAG - 213
NTAG - 215
NTAG - 216

In particular in the second method that refers to the tags with authorization.


In the case of NFC tags with authorization, the following parameters must be added: app id (package), block (in this case block 0 is required), and password. The password is usually provided by the manufacturer of the tags, sending "null" will set the default key, in this case it can be handled as null since the key "FFFFFFFFFFFF" is used.
This requires authentication and it returns an RFID