Purpose
This page aims at helping L3 applications developers to use the OLA Java API.
The code snippets below are just an example of how things can be done, absolutely not the only way to go!
Basic transaction
A basic OLA transaction includes the following steps:
OLA component initialization (Ola.ola_initialize)
Code Block |
---|
private void txnInit() {
final String path = "/data/data/com.amadis.agnoid_tester/";
final String CAKeys = path + "CAKeys";
final String CRL = path + "CRL";
final String EFL = path + "EFL";
final String langIni = path + "lang.ini";
final byte[] params = {0x00, 0x00, 0x00, 0x10, 0x05, 0x00};
final byte paramsLen = (byte)params.length;
final byte traceLevel = (byte)5;
ola.ola_initialize(new OlaInit(path, CAKeys, CRL, EFL, langIni, params, paramsLen, traceLevel));
} |
Preprocessing (OlaContactless.ola_contactless_preprocess)
Code Block |
---|
private OlaContactlessResult txnPreProcess() {
OlaContactlessResult ret = contactless.ola_contactless_preprocess(
new byte[]{0x00, 0x00, 0x00, 0x0A},
new BCD.BCD_YYMMDD(20, 12, 31),
new BCD.BCD_YYMMDD(12, 59, 59),
new BCD(0, 0, 0, 1)
);
if (ret != OlaContactlessResult.OK) {
Log.e("OLA-TESTER", "contactless pre-process failed");
}
return ret;
} |
Card detection
Code Block |
---|
private short txnGetCard() {
Log.d("OLA-TESTER", "PRESENT CARD");
int foundTechnos = dev.technoPolling(60000);
l("Result of foundTechnos: "+ foundTechnos);
if (foundTechnos==4) {
return clcEMV_CARD; //TODO remove hard-coding
} else {
return 0;
}
} |
Build candidate list (OlaContactless.ola_contactless_build_candidate_list)
Code Block |
---|
private OlaContactlessResult txnBuildCandidateList() {
SingleObjectHolder<Integer> nbCandidatesHolder = new SingleObjectHolder<Integer>();
OlaContactlessResult ret = contactless.ola_contactless_build_candidate_list(nbCandidatesHolder);
if (ret != OlaContactlessResult.OK) {
showOutcome(ret);
}
return ret;
} |
Select application (OlaContactless.ola_contactless_final_select_candidate)
Code Block |
---|
private OlaContactlessResult txnFinalSelectCandidate() {
kernel_id_holder = new SingleObjectHolder<Byte>();
OlaContactlessResult ret = contactless.ola_contactless_final_select_candidate(1, kernel_id_holder);
if (ret != OlaContactlessResult.OK) {
showOutcome(ret);
}
return ret;
} |
Start transaction (OlaContactless.ola_contactless_do_transaction)
Code Block |
---|
private void txnDoTransaction() {
SingleObjectHolder<OlaEntryMode> entryMode_holder = new SingleObjectHolder<OlaEntryMode>();
OlaContactlessResult ret = contactless.ola_contactless_do_transaction(entryMode_holder);
showOutcome(ret);
} |