How to Customize the POS Graphical User Interface for PINPAD Input: Difference between revisions

From wizarPOS
No edit summary
Line 1: Line 1:
== API ==
== API Overview ==
=== <big>setupCallbackHandler</big>===
=== <big>setupCallbackHandler</big>===
   <syntaxhighlight lang="java">boolean setupCallbackHandler(PinPadCallbackHandler handler)</syntaxhighlight>
   <syntaxhighlight lang="java">boolean setupCallbackHandler(PinPadCallbackHandler handler)</syntaxhighlight>
Set a callback handler. When an input occurs to PINPAD, the callback handler is called.
This API allows you to set a custom callback handler for PINPAD inputs in your POS application. When a PIN is inputted on the PINPAD, the specified callback handler is triggered.


{|class="wizarpostable"
{|class="wizarpostable"
Line 9: Line 9:
|-
|-
| handler||  '''PinPadCallbackHandler :''' Not null.
| handler||  '''PinPadCallbackHandler :''' Not null.
|}
{|
|-
|}
{|class="wizarpostable"
|-
|-
!  scope="row" colspan="2" | Returns
!  scope="row" colspan="2" | Returns
Line 23: Line 17:
=== <big>processCallback of PinPadCallbackHandler </big>===
=== <big>processCallback of PinPadCallbackHandler </big>===
   <syntaxhighlight lang="java">void processCallback(byte[] data);</syntaxhighlight>
   <syntaxhighlight lang="java">void processCallback(byte[] data);</syntaxhighlight>
The callback method.
The API provides a method to set this callback handler.


{|class="wizarpostable"
{|class="wizarpostable"
Line 36: Line 30:
|}
|}


== Usage ==
== Implementation Steps ==
The setupcallbackhandler method will set a callback handler. Before calling this method, you should call the open method. After setting the callback handler, the default PINPAD UI will not pop up, the driver will send the inputing PIN count to the callback handler, then the third-app can process the inputing PIN count.  
# '''Initialize the PINPAD:'''
#* Before setting up the callback handler, ensure to call the ''''open'''' method to initialize the PINPAD.
# '''Setting the Callback Handler:'''
#* Use the ''''setupcallbackhandler'''' method to assign your custom callback handler.
#* Once this handler is set, the default PINPAD user interface (UI) will not appear.
# '''Handling PIN Input:'''
#* The driver will send the count of the inputted PIN to the callback handler.
#* Your application (referred to as the third-app) can then process this inputted PIN count as needed.


'''Snippet code:'''
'''Snippet code:'''

Revision as of 16:47, 9 January 2024

API Overview

setupCallbackHandler

boolean setupCallbackHandler(PinPadCallbackHandler handler)

This API allows you to set a custom callback handler for PINPAD inputs in your POS application. When a PIN is inputted on the PINPAD, the specified callback handler is triggered.

Parameters
handler PinPadCallbackHandler : Not null.
Returns
boolean true: success.

processCallback of PinPadCallbackHandler

void processCallback(byte[] data);

The API provides a method to set this callback handler.

Parameters
data byte[] : date[0] is the count of input pin.

Implementation Steps

  1. Initialize the PINPAD:
    • Before setting up the callback handler, ensure to call the 'open' method to initialize the PINPAD.
  2. Setting the Callback Handler:
    • Use the 'setupcallbackhandler' method to assign your custom callback handler.
    • Once this handler is set, the default PINPAD user interface (UI) will not appear.
  3. Handling PIN Input:
    • The driver will send the count of the inputted PIN to the callback handler.
    • Your application (referred to as the third-app) can then process this inputted PIN count as needed.

Snippet code:

    PINPadDevice device = (PINPadDevice) POSTerminal.getInstance(mContext)
                    .getDevice("cloudpos.device.pinpad");

    device.open();

    device.setupCallbackHandler(new PinPadCallbackHandler() {
           @Override
           public void processCallback(byte[] data) {
               Log.e(TAG, "processCallback   ");

               mHandler.obtainMessage(PIN_KEY_CALLBACK, data[0]).sendToTarget();
          }
           @Override
           public void processCallback(int nCount, int nExtra){
               // don't need implement.
           }
     });

     KeyInfo keyInfo = new KeyInfo(PINPadDevice.KEY_TYPE_MK_SK, 0, 0, 4);
     String pan = "0123456789012345678";
     OperationResult operationResult = device.waitForPinBlock(keyInfo, pan, false,
                    TimeConstants.FOREVER);
     if (operationResult.getResultCode() == OperationResult.SUCCESS) {
        byte[] pinBlock = ((PINPadOperationResult) operationResult).getEncryptedPINBlock();
        sendSuccessLog2("PINBlock = " + StringUtility.byteArray2String(pinBlock));
     } else {
        sendFailedLog2(mContext.getString(R.string.operation_failed));
     }


    device.close();