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

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

Запрос статуса операции
Сервисные операции

Предупреждения
  Внимание! Использование функционала запроса статуса операции обязательно для всех новых интеграций. Значение RequestID должно быть задано при запуске оплаты. Метод передачи внешнего RequestID описан в примерах интеграции для соответствующего модуля.
  Запрос статуса операции должен использовать значение RequestID, полученное после оплаты из возвращаемых результатов.
  Значение RequestID переданное при запуске оплаты может отличается от полученного после оплаты на версиях модулей ПО UPOS не поддерживающих внешний RequestID. В ответ кассовое программное обеспечение должно получить информацию об операции и чек выполненной операции (если такая найдена и не отменена).
  В случае ошибки при работе с чеком, либо его отсутствии по каким-либо техническим причинам, кассовое программное обеспечение может отменить операцию по её RequestID, пометив операцию к автоотмене. Алгоритм приведен ниже (см. Приостановить транзакцию).
  По операциям, отмененным автоматически, будет возвращена ошибка "Операция не найдена".

Применение
Запрос статуса операции применяется, когда результат выполнения операции неизвестен.
• При любой ошибке операции необходимо вызывать Запрос статуса операции, если при этом получена ошибка 4311 (операция не найдена), то операцию оплаты можно повторить, поскольку она не прошла успешно.
• На экран кассира следует выводить, только исходную ( полученную при финансовой операции) ошибку.
• Если Запрос статуса операции завершилась успешно, то касса должна считать чек из файла p, кассир может отдать чек клиенту, операция завершена так как описано в чеке (одобрена или отклонена).

Предупреждения
  Если операция завершилась ошибкой 99, это не значит, что транзакция была проведена неуспешно, а лишь то, что терминал не отвечает на команды. В этос случае необходимо приостановить работу и проверить канал связи ККМ и пинпада.

Схематично функционал использования Запрос статуса операции приведен в документе sb_pilot.doc раздел "Запрос статуса операции".

Пример запроса статуса операции и чека операции:

auth_answer14 argument;
// выполнение операции оплаты с заполнением структуры argument.
// ...
// ниже получение статуса операции с чеком
StatusRequestQuery query;
query.size = sizeof(StatusRequestQuery);
query.RequestId = argument.RequestID;
StatusRequestResult result;
result.size = sizeof(StatusRequestResult);
result.Cheque = NULL;
error = GetOperationStatusByRequestId(&query, &result);
//error - содержит код выполнения операции
if (result.Cheque) // чек исходной операции
::GlobalFree((HGLOBAL)result.Cheque);

Пример запроса статуса операции и чека операции:

auth_answer14 argument;
// выполнение операции оплаты с заполнением структуры argument.
// ...
// ниже получение статуса операции без получения чека
// чек мог быть получен при исходной операции
StatusRequestQuery query;
query.size = sizeof(StatusRequestQuery);
query.RequestId = argument.RequestID;
error = GetOperationStatusByRequestId(&query, NULL);
//error - содержит код выполнения операции