How to Customize the POS Graphical User Interface for PINPAD Input: Difference between revisions
(→Usage) |
(→Usage) |
||
Line 54: | Line 54: | ||
mHandler.obtainMessage(PIN_KEY_CALLBACK, data[0]).sendToTarget(); | mHandler.obtainMessage(PIN_KEY_CALLBACK, data[0]).sendToTarget(); | ||
} | } | ||
@Override | |||
public void processCallback(int nCount, int nExtra){ | |||
// don't need implement. | |||
} | |||
}); | }); | ||
Revision as of 03:12, 14 January 2022
API
setupCallbackHandler
boolean setupCallbackHandler(PinPadCallbackHandler handler)
Set a callback handler. When an input occurs to PINPAD, the callback handler is called.
Parameters | |
---|---|
handler | PinPadCallbackHandler : Not null. |
Returns | |
---|---|
boolean | true: success. |
processCallback of PinPadCallbackHandler
void processCallback(byte[] data);
The callback method.
Parameters | |
---|---|
data | byte[] : date[0] is the count of input pin. |
Usage
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.
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();