TTK2 UPOS Extension 1.0 Этот документ является расширением описания протокола прикладного протокола TTK2. Протокола взаимодействия между приложением, запрашивающим выполнение операции (клиентом), и приложением, выполняющим операцию (сервером).

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

Группы | Макросы
Теги ТТК
Примеры работы с библиотекой

## Группы

| Переоткрытие сокета между командами
| Операции в других валютах
| Оплата
| Отмена покупки
| Отмена покупки с указанием RRN
| Приостановить транзакцию
| Зафиксировать транзакцию
| Откатить транзакцию
| Оплата покупки с использованием баллов СПАСИБО
| Выполнение операций без карты
| Уникальный идентификатор операции RequestID
| Запрос статуса операции
| Операция "Оплата с выдачей наличных"
| Операция "Выдача наличных в ТСТ"
| Сервисные операции

## Макросы

#define | TAG_TTK_CLIENT_MID 0x0001
| [in] Message ID, Идентификатор сообщения

Значение | Описание
--- | ---
'PUR' | Оплата
'REF' | Возврат покупки
'VOI' | Отмена покупки
'JRN' |
'RDR' |
'ABR' |
'CSB' | Операция "Оплата с выдачей наличных"
'CST' | Операция "Выдача наличных в ТСТ"
'SRV' | Сервисные операции
'AUT' |
'ADA' |
'TRX' |
'MOV' |

Подробнее...
#define | TAG_TTK_CLIENT_ECR 0x0002
#define | TAG_TTK_CLIENT_ERN 0x0003
#define | TAG_TTK_CLIENT_AMT 0x0004
#define | TAG_TTK_TRX_MODE 0x0008
#define | TAG_TTK_TM_STD 0x01
#define | TAG_TTK_TM_FOR_JRN 0x02
#define | TAG_TTK_TM_ORG_JRN 0x04 /*print original operation when it canceled. ERN of original operation stored in TAG_TTK_SERVER_OLD_ERN tag. if searched ERN==TAG_TTK_SERVER_OLD_ERN -> restored original transaction (f.e. purchase), else restored cancel operation*/
#define | TAG_TTK_INVOICE_NUM 0x000B
#define | TAG_TTK_CLIENT_AUT_CODE 0x000C
#define | TAG_TTK_TRACK2 0x0017
#define | TAG_TTK_CLIENT_RRN 0x0018
#define | TAG_TTK_EXTRA_DATA 0x0019
#define | TAG_TTK_OPER_TYPE 0x001A
#define | TTK_OPERATION_TOTALS '2'
#define | TTK_OPERATION_TEST_SERVER '3'
#define | TTK_OPERATION_TEST_HOST '4'
#define | TTK_OPERATION_FULL_REPORT '5'
#define | TTK_OPERATION_BRIEF_REPORT '6'
#define | TTK_OPERATION_CLOSE_DAY '7'
#define | TTK_OPERATION_HELP 'H'
#define | TTK_OPERATION_FLUSH_KEYS 'F'
#define | TTK_OPERATION_REMLOAD 'R'
#define | TTK_OPERATION_READ_CONFIG 'r'
#define | TTK_OPERATION_WRITE_CONFIG 'w'
#define | TTK_OPERATION_MONIT 'M'
#define | TTK_OPERATION_SIGN 'S'
#define | TTK_OPERATION_SPEC_READ 'Z'
#define | TTK_OPERATION_SHOW_INPUT 'I'
#define | TTK_OPERATION_MERCH_CHEQUE 'V'
#define | TTK_OPERATION_SUSPEND_TRX 'D'
#define | TTK_OPERATION_COMMIT_TRX 'E'
#define | TTK_OPERATION_ROLLBACK_TRX 'A'
#define | TTK_OPERATION_STATUS_REQ 'B'
#define | TTK_OPERATION_CALL_MENU 'C'
#define | TTK_OPERATION_CALL_MENU_1 'c'
#define | TTK_OPERATION_OPEN_READER 'o'
#define | TTK_OPERATION_TEST_READER 't'
#define | TTK_OPERATION_CLOSE_READER 'e'
#define | TAG_TTK_BUFFER_SIZE 0x003E
#define | TAG_TTK_COMMAND 0x0040
#define | TAG_TTK_DATA 0x0041
#define | TAG_TTK_SERVER_MID 0x0081
| [out] Message ID, Идентификатор сообщения Подробнее...
#define | TAG_TTK_SERVER_ECR 0x0082
#define | TAG_TTK_SERVER_ERN 0x0083
#define | TAG_TTK_SERVER_AMT 0x0084
#define | TAG_TTK_PAN 0x0089
#define | TAG_TTK_SERVER_TSN 0x008B
#define | TAG_TTK_SERVER_AUT_CODE 0x008C
#define | TAG_TTK_SERVER_DATE 0x008D
#define | TAG_TTK_SERVER_TIME 0x008E
#define | TAG_TTK_ISSUER_NAME 0x008F
#define | TAG_TTK_MERCHANT_ID 0x0090
#define | TAG_TTK_SERVER_RRN 0x0098
#define | TAG_TTK_TERMINAL_ID 0x009D
#define | TAG_TTK_RESPONSE_CODE 0x009B
#define | TAG_TTK_CHEQUE_IN_ASCII 0x009C
#define | TAG_TTK_CHEQUE_IN_PDS 0x009E
#define | TAG_TTK_COPY_CHEQUE_IN_PDS 0x9F0E
#define | TAG_TTK_ERROR_TEXT 0x00A0
#define | TAG_TTK_APPROVE 0x00A1
#define | TAG_TTK_HASH 0x00A3
#define | TAG_TTK_IS_OWN 0x00A4
#define | TAG_TTK_ERROR_CODE 0x00A5
#define | TAG_TTK_STATE_CODE 0x1F00
#define | TAG_TTK_STATE_DATA 0x1F01
#define | TAG_TTK_SERVER_STATE 0x1F70
#define | TAG_TTK_SERVER_MSG 0x1F71
#define | TAG_TTK_TIMEOUT 0x1F7C
#define | TAG_TTK_SERVER_OLD_ERN 0x00C1
#define | TAG_TTK_SIGN_DATA 0x5F01
#define | TAG_TTK_DEPARTMENT_INDEX 0x5F02
#define | TAG_TTK_LLT_ID 0x5F03
#define | TAG_TTK_CLIENT_NAME 0x5F04
#define | TAG_TTK_UPOS_MESSAGE 0x5F05
#define | TAG_TTK_CARD_EXPDATE 0x5F06
#define | TAG_TTK_PILOT_OPER_TYPE 0x5F07
#define | TAG_TTK_TAGS_TO_PINPAD 0x5F08
#define | TAG_TTK_CARDHOLDER_ANSWER 0x5F09
#define | TAG_TTK_REQUEST_ID 0x5F0A
#define | TAG_TTK_MERCHANT_CHEQUE 0x5F0B
#define | TAG_TTK_TRX_FLAGS 0x5F0C
#define | TAG_TTK_CARD_TYPE 0x5F0D
#define | TAG_TTK_CARD_UID 0x5F0E
#define | TAG_TTK_TLV_CFG 0x5F0F
#define | TAG_TTK_SMARTTAP_DATA TAG_PILOT_RESPONSE_DATA_BLOCK
#define | TAG_TTK_TRANSPORT_FLAGS 0x5F11
#define | TTK_TRANSPORT_ERN_CHECK_B0 0x01
#define | TAG_TTK_TRANSPORT_RFU1 0x5F12
#define | TAG_PIL_HELP_R_LOG 0x5F11 /**cmd PIL_OT_HELP also downloads log-file */
#define | TAG_PIL_HELP_DATE1 0x5F12 /**DWORD date in yyyymmdd format (start of log) */
#define | TAG_PIL_HELP_DATE2 0x5F13 /**DWORD date in yyyymmdd format (end of log) */
#define | TAG_TTK_TRANSPORT_RFU31 0x5F31
#define | TAG_TTK_LOYALTY_DATA 0x5F32
#define | TAG_TTK_SERVER_AMT_C 0x5F33
#define | TAG_MSB_SERVER_AMT 0x5F34
#define | TAG_MSB_SERVER_AMT_C 0x5F35
#define | TAG_MSB_HASH 0x5F36
#define | TAG_MSB_DATE 0x5F37
#define | TAG_MSB_TIME 0x5F38
#define | TAG_TTK_ENCDATA 0x5F39
#define | TAG_TTK_PING_INFO 0x5F3A
#define | TAG_MSB_PARAMS_FLAGS 0x5F3B
#define | TAG_TTK_NEXTIDX 0x5F40
#define | TAG_PIL_RFU_5F41 TAG_PIL_REQ_ID_OPT /**BYTE. cmd PIL_OT_STATUS_REQ_ID additional option. used in MSB enviroment only. defined in piltags.h */
#define | TAG_TTK_REALPAN 0x5F42
#define | TAG_TTK_RECVCARD 0x5F43
#define | TAG_TTK_EXPEREDCARD 0x5F44
#define | TAG_TTK_FFI 0x5F45
#define | TAG_TTK_SCREEN_TEXT_MODE 0x5F46
#define | TAG_TTK_SCREEN_TEXT 0x5F47
#define | TAG_TTK_AID 0x5F48
#define | TAG_TTK_PASSPORT_DATA 0x5F49
#define | TAG_MSB_CHEQUE_FLAGS 0x5F4A
#define | TAG_MSB_PIN_FLAGS 0x5F4B
#define | TAG_MSB_OWN_CARD_FLAGS 0x5F4C
#define | TAG_MSB_CASHIER_NAME 0x5F4D
#define | TAG_TTK_CARD_DATA 0x5F4E
#define | TAG_MSB_SCREEN_WIDTH 0x5F4F
#define | TAG_MSB_SCREEN_HEIGHT 0x5F50
#define | TAG_MSB_REAL_EXP_DATE 0x5F51
#define | TAG_MSB_HOST_FLAGS 0x5F52
#define | TAG_HF_NONE 0x00
#define | TAG_HF_ANSWER_HAS_DPAN 0x01
#define | TTK_RCODE_OK "00"
#define | TTK_RCODE_UNABLE_FIND_REC "B4"
#define | TTK_RCODE_NEED_MORE_TAGS "FE"
#define | TTK_RCODE_V2R_NOLINK "CE"
#define | TTK_RCODE_TIME_FOR_TOTALS "1F"
#define | TTK_RCODE_UKNOWN_ERROR "99"
#define | TTK_RCODE_UNKNOWN_OPERATION "UN"
#define | TTK_RCODE_OPERATION_TYPE_NOSET "FD"
#define | TTK_RCODE_PILOT_OPERATION_COMPLETE "88"

## Подробное описание

Данные документ является расширением документа Docs\Для разработчиков ПО ККМ.rtf. Содержит информацию о дополнительных тегах и последовательностях обмена кассы и терминала командами по протоколу ТТК.

## Макросы

#define TAG_MSB_CASHIER_NAME 0x5F4D

In: Полное фамилия, имя, отчество кассира

#define TAG_MSB_CHEQUE_FLAGS 0x5F4A

In: флаги управления печатью чека

#define TAG_MSB_DATE 0x5F37

Out: date (B 4)

#define TAG_MSB_HASH 0x5F36

Out: bin hash (B 20)

#define TAG_MSB_HOST_FLAGS 0x5F52

Out: DWORD, 0x00 - no flags, 0x01 - Has DF57

#define TAG_MSB_OWN_CARD_FLAGS 0x5F4C

In:

См. также
  OwnCardFlags

#define TAG_MSB_PARAMS_FLAGS 0x5F3B

In: MSB PilotParams Flags

#define TAG_MSB_PIN_FLAGS 0x5F4B

In: флаги управления вводом пинкода

#define TAG_MSB_REAL_EXP_DATE 0x5F51

Out: BYTE[2], format - CN, BYTE[0] - MM, BYTE[1] YY.

См. также
  TAG_REAL_EXP_DATE 0xDF58

#define TAG_MSB_SCREEN_HEIGHT 0x5F50

Out: Available hieght in symbols

#define TAG_MSB_SCREEN_WIDTH 0x5F4F

Out: Available width in symbols

#define TAG_MSB_SERVER_AMT 0x5F34

Out: Amount for msb protocol (B 4)

#define TAG_MSB_SERVER_AMT_C 0x5F35

Out: AmountC for msb protocol (B 4)

#define TAG_MSB_TIME 0x5F38

Out: date (B 4)

#define TAG_PIL_HELP_DATE2 0x5F13 /**DWORD date in yyyymmdd format (end of log) */

0x5F12 - 0x5F30 Transport RFU

#define TAG_TTK_AID 0x5F48

Out: AID

#define TAG_TTK_APPROVE 0x00A1

Operation approve flag. Признак одобренности транзакции. Если тег равен “Y”, транзакция одобрена. Если тег равен “N” — отклонена. Если тег отсутствует, то решение об одобренности следует из анализа тега Response Code.

#define TAG_TTK_BUFFER_SIZE 0x003E

Размер буфера, требуемый для обработки команды

Заметки
  Рекомендованное значение 65000

#define TAG_TTK_CARD_DATA 0x5F4E

In: PAN или DPAN = data

#define TAG_TTK_CARD_EXPDATE 0x5F06

Срок действия карты в формате MM/YY

#define TAG_TTK_CARD_TYPE 0x5F0D

[in|out] Тип карты.

Заметки
  Значения расписаны в CARDS.

#define TAG_TTK_CARD_UID 0x5F0E

Contactless card UID. Идентификатор бесконтактной операции.

#define TAG_TTK_CARDHOLDER_ANSWER 0x5F09

Output: Text which card holder input by pinpad keyboard

#define TAG_TTK_CHEQUE_IN_ASCII 0x009C

[out] Receipt in ASCII format. Содержимое банковского чека в формате ASCII.

Заметки
  Кодировка cp866

#define TAG_TTK_CHEQUE_IN_PDS 0x009E

[out] Receipt in PDS format. Содержимое банковского чека в формате PDS.

#define TAG_TTK_CLIENT_AMT 0x0004

[in] Transaction amount. Сумма указывается как целое число. Например, Amount = '12345' при установленной валюте "Рубль" означает сумму 123 рубля 45 копеек.

Заметки
  Тип: строка. Длина: 12 байт.

#define TAG_TTK_CLIENT_AUT_CODE 0x000C

[in|out] Authorization ID. Код авторизации

#define TAG_TTK_CLIENT_ECR 0x0002

[in] ECR number, Номер клиента

Заметки
  Тип: строка. Длина: 12 байт.

Прим.
  Например, можно использовать серийный номер жесткого диска ККМ.

#define TAG_TTK_CLIENT_ERN 0x0003

[in] Document/transaction number, Номер транзакции

Заметки
  Тип: строка. Длина: 10 байт.

#define TAG_TTK_CLIENT_MID 0x0001

[in] Message ID, Идентификатор сообщения

Значение | Описание
--- | ---
'PUR' | Оплата
'REF' | Возврат покупки
'VOI' | Отмена покупки
'JRN' |
'RDR' |
'ABR' |
'CSB' | Операция "Оплата с выдачей наличных"
'CST' | Операция "Выдача наличных в ТСТ"
'SRV' | Сервисные операции
'AUT' |
'ADA' |
'TRX' |
'MOV' |

Заметки
  Тип: строка. Длина: 3 байта.

#define TAG_TTK_CLIENT_NAME 0x5F04

Cardholder name. Имя держателя карты.

#define TAG_TTK_CLIENT_RRN 0x0018

[in|out] Reference retrieval number. Ссылочный номер транзакции.

Заметки
  Тип: строка. Длина: 12 байт.

#define TAG_TTK_COPY_CHEQUE_IN_PDS 0x9F0E

[out] Receipt in PDS format. Содержимое второго банковского чека в формате PDS.

#define TAG_TTK_DEPARTMENT_INDEX 0x5F02

Department index. Номер отдела.

#define TAG_TTK_ENCDATA 0x5F39

Шифрованный блок данных, используемый для рекурентных платежей. Длина 32 байта.

#define TAG_TTK_ERROR_CODE 0x00A5

Код завершения операции. Значения расписаны в Коды ошибок

#define TAG_TTK_ERROR_TEXT 0x00A0

[out] Текст соответствующий коду завершения операции TAG_TTK_ERROR_CODE.

#define TAG_TTK_EXPEREDCARD 0x5F44

Out: Номер ожидаемой карты

#define TAG_TTK_EXTRA_DATA 0x0019

[in|out] Дополнительные данные операции.

#define TAG_TTK_FFI 0x5F45

Out: emvFormFactor

#define TAG_TTK_HASH 0x00A3

Хеш от номера карты. По умолчанию расчитывается как SHA1. Длина 40 байт.

#define TAG_TTK_INVOICE_NUM 0x000B

Invoice Number. Номер чека (операции) сервера.

#define TAG_TTK_IS_OWN 0x00A4

Признак "Карта Сбербанка".

#define TAG_TTK_ISSUER_NAME 0x008F

[out] Issuer name. Имя платежной системы карты.

#define TAG_TTK_LLT_ID 0x5F03

Номер программы лояльности.

#define TAG_TTK_LOYALTY_DATA 0x5F32

Out: x5 llt data as string

#define TAG_TTK_MERCHANT_CHEQUE 0x5F0B

[in] Merchant cheque. Торговый чек.

#define TAG_TTK_MERCHANT_ID 0x0090

[out] Merchant number. Идентификатор организации.

#define TAG_TTK_NEXTIDX 0x5F40

Out: TrxIndex (B2)

#define TAG_TTK_OPER_TYPE 0x001A

[in] Service operation number. Тип операции, состоящий из одного символа. Перечень возможных значений:

- TTK_OPERATION_HELP
- TTK_OPERATION_TOTALS
- TTK_OPERATION_REMLOAD
- TTK_OPERATION_SUSPEND_TRX
- TTK_OPERATION_COMMIT_TRX
- TTK_OPERATION_ROLLBACK_TRX

#define TAG_TTK_PAN 0x0089

[out] Masked card number. Маскированный номер карты.

#define TAG_TTK_PASSPORT_DATA 0x5F49

Out: паспортные данные клиента

#define TAG_TTK_PILOT_OPER_TYPE 0x5F07

Внутренний тип операции.

Заметки
  Значения расписаны в Типы операций интерфейса PILOT

#define TAG_TTK_PING_INFO 0x5F3A

In: Тег с информацией о ккм модулях для отправки в пинге. Содержит tlv buffer в формате команды MDC_PINGINFO::MMCMD_READ

#define TAG_TTK_REALPAN 0x5F42

Out: REALPAN

#define TAG_TTK_RECVCARD 0x5F43

Out: Номер карты получателя платежа

#define TAG_TTK_REQUEST_ID 0x5F0A

[in|out] Уникальный идентификатор операции RequestID

#define TAG_TTK_RESPONSE_CODE 0x009B

[out] Response Code. Код ответа.

#define TAG_TTK_SCREEN_TEXT 0x5F47

In: Текст для вывода на экран пинпада

#define TAG_TTK_SCREEN_TEXT_MODE 0x5F46

In: Флаги для текста выводимого на экран

См. также
  EditModeMask

#define TAG_TTK_SERVER_AMT 0x0084

[out] Transaction amount

Заметки
  Тип: строка. Длина: 12 байт.

#define TAG_TTK_SERVER_AMT_C 0x5F33

[out] Полная сумма покупки без учета баллов спасибо

#define TAG_TTK_SERVER_AUT_CODE 0x008C

[out] Authorization ID. Код авторизации (назначается хостом, для каждой одобренной транзакции)

#define TAG_TTK_SERVER_DATE 0x008D

[out] Transaction date. Дата проведения транзакции в формате DDMM.

#define TAG_TTK_SERVER_ECR 0x0082

[out] Customer number, Номер клиента

Заметки
  Тип: строка. Длина: 12 байт.

#define TAG_TTK_SERVER_ERN 0x0083

[out] Document/transaction number, Номер транзакции

Заметки
  Тип: строка. Длина: 10 байт.

#define TAG_TTK_SERVER_MID 0x0081

[out] Message ID, Идентификатор сообщения

Заметки
  Тип: строка. Длина: 3 байта.

#define TAG_TTK_SERVER_MSG 0x1F71

Server Status Message. Текстовое сообщение статуса терминала.

#define TAG_TTK_SERVER_OLD_ERN 0x00C1

original document/transaction number. when trx canceled, original number changed to number of cancel operation. we store the original in this tag. tag name must be 1 byte len, as TAG_TTK_SERVER_ERN

#define TAG_TTK_SERVER_RRN 0x0098

[out] Retrieval Reference Number

#define TAG_TTK_SERVER_STATE 0x1F70

Server Status ID. Состояние терминала.

Заметки
  Возможные значения приведены ниже в таблице

  Состояние | Значение
  --- | ---
  TTKS_WAIT_CARD | 0
  TTKS_WAIT_PIN | 4
  TTKS_SEL_APP | 5
  TTKS_AUTH | 6
  TTKS_WAIT_EJECT | 8
  TTKS_WAIT_KEYB | 9
  TTKS_WAIT_CTLS | 11
  TTKS_IDLE | 7
  TTKS_CARD_MIFARE | 12
  TTKS_REMOVE_CARD | 1

Прим.
  Используется в статусных сообщениях, полученных от терминала.

#define TAG_TTK_SERVER_TIME 0x008E

[out] Transaction time. Время проведения транзакции в формате hhmm.

#define TAG_TTK_SERVER_TSN 0x008B

[out] Invoice number. Номер чека транзакции. Назначается сервером для каждой транзакции. Последовательно увеличивающийся номер.

#define TAG_TTK_SIGN_DATA 0x5F01

Output. Screen signature raw buffer

#define TAG_TTK_SMARTTAP_DATA TAG_PILOT_RESPONSE_DATA_BLOCK

Out: smarttap data block as tlv buffer

#define TAG_TTK_STATE_CODE 0x1F00

Input code

#define TAG_TTK_STATE_DATA 0x1F01

Input data

#define TAG_TTK_TAGS_TO_PINPAD 0x5F08

Tlv buffer with tags to MainBag

#define TAG_TTK_TERMINAL_ID 0x009D

[out] Terminal unique number. Идентификатор терминала (Поле 41 в ISO). Назначается в конфигурационных параметрах POS-терминала.

#define TAG_TTK_TIMEOUT 0x1F7C

Next message timeout. Таймайт до следующего сообщения.

Заметки
  Работает при установленном в терминале параметре Дополнительные опции - Интервал статусных сообщений ТТК2, с отличном от ноля

#define TAG_TTK_TLV_CFG 0x5F0F

In: Tlv Configuration to upload

#define TAG_TTK_TRACK2 0x0017

[in|out] Card Track2. Вторая дорожка карты.

Заметки
  Через этот тег может передаваться хеш карты в операциях с баллами Спасибо

#define TAG_TTK_TRANSPORT_FLAGS 0x5F11

Flags for Transport Integration Mode

#define TAG_TTK_TRX_FLAGS 0x5F0C

[out] TrFlags. Флаги транзакции. Значения расписаны в документе sb_pilot.doc

Заметки
  Поле типа DWORD

#define TAG_TTK_TRX_MODE 0x0008

[in] TTK Transaction Mode

#define TAG_TTK_UPOS_MESSAGE 0x5F05

Сообщение об ошибке, соответствующее коду заврешения операции TAG_TTK_RESPONSE_CODE.

Заметки
  Кодировка cp866

#define TTK_OPERATION_CALL_MENU 'C'

Реализует функционал Вызов системного меню

#define TTK_OPERATION_COMMIT_TRX 'E'

Реализует функционал Зафиксировать транзакцию (является устаревшим и не рекомендуется к использованию)

#define TTK_OPERATION_HELP 'H'

Реализует функционал Печать чека помощи

#define TTK_OPERATION_REMLOAD 'R'

Реализует функционал Удаленная загрузка

#define TTK_OPERATION_ROLLBACK_TRX 'A'

Реализует функционал Откатить транзакцию (является устаревшим и не рекомендуется к использованию)

#define TTK_OPERATION_STATUS_REQ 'B'

Реализует функционал Запрос статуса операции

#define TTK_OPERATION_SUSPEND_TRX 'D'

Реализует функционал Приостановить транзакцию (является устаревшим и не рекомендуется к использованию)

#define TTK_OPERATION_TOTALS '2'

Реализует функционал Сверка итогов

#define TTK_RCODE_UNABLE_FIND_REC "B4"

Operation successfully cancelled

#define TTK_TRANSPORT_ERN_CHECK_B0 0x01

If flag is set - mark operations with same ERN as a canceled