Интеграция с ПО UPOS через библиотеку GATE. 1.0 Платформа Win32.

- Титульная страница
- Группы
- Структуры данных

Уникальный идентификатор операции RequestID
Примеры работы с библиотекой

Уникальный идентификатор операции – это число от 0x00000001 до 0xFFFFFFFE. Кассовая программа назначает уникальный идентификатор каждому вызову функции UPOS, и гарантирует его уникальность в течение минимум двух смен. С RequestID работают в следующих случаях:

1. при выгрузке банковских слипов и торговых чеков на сервер Сбербанка (слипы формирует ПО UPOS, а розничные чеки – кассовое ПО);

2. в реализации механизма восстановления работоспособности ККМ после сбоя, для выяснения статуса операции по её уникальному идектификатору.
   Если кассовое ПО использует RequestID, то оно должно обеспечить отправку его в каждой команде и уникальность в течении двух смен.

   Значение RequestID может потребоваться для выполнения отправки торгового (кассового) чека в банк.

   Если это необходимо, то для финансовых операций следует использовать функцию _call_sb_kernel(4xxx, ...). Значение будет возвращено в поле RequestID структуры struct_out_reserved4.

   Например:

   InArg in;
   OutArg out;
   struct_in_cl4 InDetail;
   struct_out_cl4 OutDetail;
   struct_in_reserved4 inExtra;
   struct_out_reserved4 outExtra;
3. Связать аргументы
   in.in_struct = &InDetail;
   out.out_struct = &OutDetail;
   out.Reserved = &outExtra;
   outExtra.size = sizeof(outExtra);
   inExtra.size = sizeof(inExtra);
   in.Reserved = &inExtra;
4. Задать значения
   outExtra.Department = DEPARTMENT_NOT_SPECIFIED;
   InDetail.Amount = 100000; // тысяча рублей - сумма к оплате
5. Загрузить библиотеку и основную функцию.
   HMODULE dll = LoadLibrary("gate.dll");
   Gate_Call_Sb_Kernel gate_Call_Sb_Kernel = (Gate_Call_Sb_Kernel)GetProcAddress(dll, "_call_sb_kernel");
   Предупреждения
     Обязательно инициализировать библиотеку функцией KO_INITIALIZATION
6. Вызвать динамически загруженную функцию на оплату
   DWORD error = function(4000,&in,&out);
   //outExtra.RequestID содержит идентификатор операции