API CashDesk Mobile
Метод використовується для інтеграції мобільного додатка з Програмним ПРРО CashDesk за допомогою виклику Intent.
Запит виконується методом POST у форматі JSON.
Налаштування
Щоб мати можливість викликати додаток, потрібно додати наступний запис до файлу AndroidManifest.xml:
<queries>
<package android:name="ua.cashdesk.web" />
</queries>
Мобільний додаток повинен використовувати об'єкт Intent для передачі даних у Касу наступним чином:
//Java
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("ua.cashdesk.web");
if (launchIntent != null) {
launchIntent.setFlags(0);
try {
launchIntent.putExtra("num_fiscal", "5*********");
launchIntent.putExtra("action_type", "status");
activityLauncher.launch(launchIntent);
} catch (JSONException e) {
e.printStackTrace();
}
}
Важливо
Ваш мобільний додаток має бути готовим до наступних ситуацій:
- Відсутність відповіді від додатку Каса
- Повернення відповіді null
- Отримання відповіді від системи Android
Таким чином, на стороні вашого додатку повинна бути підтримана обробка всіх неочікуваних ситуацій при отриманні відповіді на Intent, наприклад:
//Java
ActivityResultLauncher<Intent> activityLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if(result.getResultCode() == Activity.RESULT_OK){
Intent data = result.getData();
if(data!=null){
String a = data.getStringExtra("response_status");
if(a != null){
if(!a.isEmpty()){
//Main parse logic
} else {
//Message that operation processed successful.
}
} else {
//Message that operation processed successful.
}
} else {
//Message that operation processed successful.
}
} else {
//Message that operation processed successful.
}
});
Приклад результату (більшість викликів Intent: open_shift, service_input, service_output, sale, return_sale, z_report)
Ім'я | Тип | Опис |
---|---|---|
version | string | Версія API |
response_status | string | Статус відповіді:
|
ORDERDATE | string | Дата створення документа |
ORDERNUM | string | Номер документа |
ORDERTIME | string | Час створення документа |
text_print | string | Дані для друку |
Відповідь:
version: "1.1",
response_status: "OK",
ORDERDATE: "2025-01-13",
ORDERNUM: "DEV_6784e5659b415",
ORDERTIME: "12:05:25",
text_print: "ICAgICAgICAgINCi0JXQo....",
Запит "Виклик статусу"
Параметри запиту
Ім'я | Тип | Обов'язковий | Опис |
---|---|---|---|
action_type | string | Так | Тип операції, що виконується Можливі значення:
|
num_fiscal | string | Так | Фіскальний номер пристрою або каси |
Приклад запиту
Запит:
action_type: 'status',
num_fiscal: "500*******"
Параметри відповіді
Ім'я | Тип | Опис |
---|---|---|
version | string | Версія API відповіді |
response_status | string | Статус відповіді:
|
num_fiscal | string | Фіскальний номер каси |
org_name | string | Назва організації, до якої прив'язана каса |
address | string | Юридична або фактична адреса організації |
ipn | string | Реєстраційний номер облікової картки платника податків |
tin | string | Ідентифікаційний номер платника податків |
name | string | Назва касового апарата або точки продажу |
Приклад відповіді
Відповідь:
version: "1.1",
response_status: "OK",
num_fiscal: "500*******",
org_name: "Тестова Організація",
address: "УКРАЇНА",
ipn: "123456789",
tin: "123456789",
name: "Тестова каса",
Запит service_input / service_output
Параметри запиту
Ім'я | Тип | Обов'язковий | Опис |
---|---|---|---|
action_type | string | Так | Тип операції, що виконується Можливі значення:
|
num_fiscal | string | Так | Фіскальний номер пристрою або каси |
sum | integer | Так | Сума видачі |
Приклад запиту
Запит:
action_type: "service_input",
num_fiscal: "500*******",
sum: 55.0
Приклад успішної відповіді
Відповідь:
ТЕСТОВИЙ ЧЕК
Тестова Організація
Тестова каса
УКРАЇНА
ПН 123456789
--------------------------------
Службове внесення 66.00
Гроші в касі 66.00
--------------------------------
ЧЕК № DEV_6784e5659b415
13.01.2025 12-05-25
Онлайн
ФН ПРРО 500*******
Службовий чек Cashdesk
ТЕСТОВИЙ ЧЕК
Приклади неуспішних відповідей
Відповідь:
version: "1.1",
errors: undefined
message: "Server error"
response_status: "ERROR"
version: "1.1"
Відповідь:
version: "1.1",
errors: ["sum must be great than 0"]
message: "Validation error"
response_status: "ERROR"
version: "1.1"