Данное приложение позволяет не интегрировать в свое приложение компоненту для работы с ККТ, а использовать Intent для обмена с ККТ. В Intent передаются JSON-задания, возможности которых представлены на странице Работа с JSON-заданиями. Ответ на каждое задание представлен на той же странице, отличие лишь в формате ответа. Если напрямую через компоненту требуется самому получить результат выполнения JSON-задания (код и описание ошибки не возвращаются в JSON), то при взаимодействии с сервисом код ошибки также придет в JSON.
В поле result возвращается результат выполнения (код и текст ошибки), а в поле data - данные результата задания в случае его успешного завершения. Описание данных результата представлено в описании каждого задания.
Пример задания:
{
"type": "closeShift",
"operator": {
"name": "Иванов",
"vatin": "123654789507"
}
}
Пример ответа:
{
"result": {
"error": 0,
"description": "Ошибок нет"
},
"data": {
"fiscalParams" : {
"fiscalDocumentDateTime" : "2017.07.25 13:12:00",
"fiscalDocumentNumber" : 69,
"fiscalDocumentSign" : "1138986989",
"fnNumber" : "9999078900000961",
"registrationNumber" : "0000000001002292",
"shiftNumber" : 11,
"receiptsCount" : 3,
"fnsUrl": "www.nalog.ru"
},
"warnings": {}
}
}
Пример ошибки выполнения:
{
"result": {
"error": 73,
"description": "Смена закрыта - операция невозможна"
},
"data": {}
}
Для отправки задания требуется сформировать Intent следующим образом:
Intent i = new Intent();
i.setAction("ru.atol.drivers10.service.PROCESS_TASK");
i.putExtra("PARAM_REQUEST", "{\n" +
" \"type\": \"closeShift\",\n" +
" \"operator\": {\n" +
" \"name\": \"Иванов\",\n" +
" \"vatin\": \"123654789507\"\n" +
" }\n" +
"}");
startActivityForResult(i, 1);
Пример приема ответа:
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,
data.getStringExtra("PARAM_RESULT"),
Toast.LENGTH_LONG).show();
}
});
}