!-------------------------------------------------------------------------
! Описание структур для взаимодействия с ARCUS2
!-------------------------------------------------------------------------

  OMIT('_EndDefine_',_ARCUS2_)
_ARCUS2_  EQUATE(1)


!-----------------------------------------------
! Константы структуры UserAuthInt
!-----------------------------------------------
UAI_lnCardholderName       EQUATE(27)

UAI_lnProcCode              EQUATE(7)
UAI_lnTrack2                EQUATE(60)
UAI_lnPan                   EQUATE(20)
UAI_lnExpiry                EQUATE(5)
UAI_lnAmount                EQUATE(13)
UAI_lnCurrency              EQUATE(4)
UAI_lnTerminalID            EQUATE(9)
UAI_lnSpdhTerminalID        EQUATE(17)
UAI_lnRetrievalReference    EQUATE(13)
UAI_lnAuthIdentResponse     EQUATE(9)
UAI_lnResponseCode          EQUATE(4)
UAI_lnCardType              EQUATE(80)
UAI_lnDate                  EQUATE(7)
UAI_lnTime                  EQUATE(7)
UAI_lnBatchNum              EQUATE(8)
UAI_lnTrack2Credit          EQUATE(50)
UAI_lnPinblock              EQUATE(17)
UAI_lnPayData               EQUATE(50)
UAI_lnPayId                 EQUATE(3)
UAI_lnMtid                  EQUATE(5)
UAI_lnReceivedTextMsg       EQUATE(80)
UAI_lnAID                   EQUATE(80)
UAI_lnApplicationLabel      EQUATE(80)
UAI_lnTVR                   EQUATE(80)
UAI_lnRFU                   EQUATE(60)

!-----------------------------------------------
! Структура UserAuthInt
!-----------------------------------------------
UserAuthIntGroup        GROUP,TYPE
handle                      LONG                                ! 
abg_id                      LONG                                ! 
operType                    LONG                                ! [in] Код операции (кассовый)
track2                      CSTRING(UAI_lnTrack2)               ! [in] Трек2
pan                         CSTRING(UAI_lnPan)                  ! [out] PAN
expiry                      CSTRING(UAI_lnExpiry)               ! [out] Expiry Date ГГММ
pay_acc                     CSTRING(UAI_lnPan)                  ! не используется
additional_payment_data     CSTRING(80)                         ! не используется
amount                      CSTRING(UAI_lnAmount)               ! [in] Сумма в копейках
original_amount             CSTRING(UAI_lnAmount)               ! [in] Оригинальная сумма в копейках
currency                    CSTRING(UAI_lnCurrency)             ! [in] Код валюты
terminalID                  CSTRING(UAI_lnTerminalID)           ! [out][in] ID терминала
rrn                         CSTRING(UAI_lnRetrievalReference)   ! [in][out] Ссылка (только для операций для которых нужно, в остальных случаях - пуста)
authCode                    CSTRING(UAI_lnAuthIdentResponse)    ! [out][in] Код авторизации
responseCode                CSTRING(UAI_lnResponseCode)         ! [out] Код ответа
cardType                    CSTRING(UAI_lnCardType)             ! [out] Название типа карты
date                        CSTRING(UAI_lnDate)                 ! [out] Дата транзакции
time                        CSTRING(UAI_lnTime)                 ! [out] Время транзакции
payment_data                CSTRING(UAI_lnPayData)              ! не используется
data_to_print               CSTRING(UAI_lnPayData)              ! не используется
home_operator               CSTRING(UAI_lnPayData)              ! не используется
received_text_message       CSTRING(UAI_lnReceivedTextMsg)      ! не используется
text_message                CSTRING(UAI_lnReceivedTextMsg)      ! [out] Расшифровка
AID                         CSTRING(UAI_lnAID)                  ! [out]EMV AID
ApplicationLabel            CSTRING(UAI_lnApplicationLabel)     ! [out]EMV ApplicationLabel
TVR                         CSTRING(UAI_lnTVR)                  ! [out]EMV TVR
system_res                  CSTRING(6) ! LONG                   ! не используется
enc_data                    CSTRING(64)                         ! [in][out]шифрованные данные карты(PAN) (для ПО с функцией поддержки HRS) 
cardholder_name             CSTRING(UAI_lnCardholderName)
Balance                     CSTRING(UAI_lnAmount+1)
                        END

!-----------------------------------------------
! ЗАМЕЧАНИЕ
! 1. Есть ли в реальности поля cardholder_name и Balance неизвестно (в разной документации по разному) - оставлены для увеличения
!    структуры, чтобы не было проблем с памятью
!
! 2. system_res - размер поля увеличен до 6 байт из-за выравнивания адресов в структуре
!-----------------------------------------------

!-----------------------------------------------
! Константы структуры UserAuthIntFull
!-----------------------------------------------
 
UAIF_lnProcCode             EQUATE(7)
UAIF_lnRFU                  EQUATE(60)
UAIF_lnPan                  EQUATE(20)
UAIF_lnExpiry               EQUATE(5)
UAIF_lnAmount               EQUATE(13)
UAIF_lnCurrency             EQUATE(4)
UAIF_lnTerminalID           EQUATE(9)
UAIF_lnSpdhTerminalID       EQUATE(17)
UAIF_lnRetrievalReference   EQUATE(13)
UAIF_lnAuthIdentResponse    EQUATE(9)
UAIF_lnResponseCode         EQUATE(4)
UAIF_lnCardType             EQUATE(80)
UAIF_lnDate                 EQUATE(7)
UAIF_lnTime                 EQUATE(7)
UAIF_lnBatchNum             EQUATE(8)
UAIF_lnRFUCredit            EQUATE(50)
UAIF_lnPinblock             EQUATE(17)
UAIF_lnPayData              EQUATE(50)
UAIF_lnPayId                EQUATE(3)
UAIF_lnMtid                 EQUATE(5)
UAIF_lnReceivedTextMsg      EQUATE(80)
UAIF_lnAID                  EQUATE(80)
UAIF_lnApplicationLabel     EQUATE(80)
UAIF_lnTVR                  EQUATE(80)
UAIF_lnCardholderName       EQUATE(27)
UAIF_lnTraceID              EQUATE(61)
UAIF_lnDateTime             EQUATE(13)                   

!-----------------------------------------------
! Структура UserAuthIntFull
!-----------------------------------------------
UserAuthIntFullGroup    GROUP,TYPE
handle                      LONG 
abg_id                      LONG 
operType                    LONG                                 ! [in] Код операции (кассовый)
rfu                         CSTRING(UAIF_lnRFU)                  !
pan                         CSTRING(UAIF_lnPan)                  ! [out] PAN
expiry                      CSTRING(UAIF_lnExpiry)               ! [out] Expiry Date ГГММ
pay_acc                     CSTRING(UAIF_lnPan)                  ! не используется
additional_payment_data     CSTRING(80)                          ! не используется
amount                      CSTRING(UAIF_lnAmount)               ! [in] Сумма в копейках
original_amount             CSTRING(UAIF_lnAmount)               ! [in] Оригинальная сумма в копейках
currency                    CSTRING(UAIF_lnCurrency)             ! [in] Код валюты
terminalID                  CSTRING(UAIF_lnTerminalID)           ! [out][in] ID терминала
rrn                         CSTRING(UAIF_lnRetrievalReference)   ! [in][out] Ссылка (только для операций для которых нужно, в остальных случаях - пуста)
authCode                    CSTRING(UAIF_lnAuthIdentResponse)    ! [out][in] Код авторизации
responseCode                CSTRING(UAIF_lnResponseCode)         ! [out] Код ответа
cardType                    CSTRING(UAIF_lnCardType)             ! [out] Название типа карты
date                        CSTRING(UAIF_lnDate)                 ! [out] Дата транзакции
time                        CSTRING(UAIF_lnTime)                 ! [out] Время транзакции
payment_data                CSTRING(UAIF_lnPayData)              ! не используется
data_to_print               CSTRING(UAIF_lnPayData)              ! не используется
home_operator               CSTRING(UAIF_lnPayData)              ! не используется
received_text_message       CSTRING(UAIF_lnReceivedTextMsg)      ! не используется
text_message                CSTRING(UAIF_lnReceivedTextMsg)      ! [out] Расшифровка
AID                         CSTRING(UAIF_lnAID)                  ! [out]EMV AID
ApplicationLabel            CSTRING(UAIF_lnApplicationLabel)     ! [out]EMV ApplicationLabel
TVR                         CSTRING(UAIF_lnTVR)                  ! [out]EMV TVR
system_res                  LONG                                 ! не используется
receiptNumber               USHORT                               ! номер чека
Invoice                     USHORT                               ! номер платежа
operatopn_type              LONG                                 ! тип операции
card_number                 CSTRING(20)                          ! номер карты
merchant                    CSTRING(80)                          ! Идентификатор организации
date_buffer                 CSTRING(100)                         !
debit_number                USHORT                               ! количество дебетовых операций
debit_total                 CSTRING(7)                           ! итог дебет
debit_clear_total           CSTRING(7)                           ! итог дебет без учета комиссий и скидок
return_number               USHORT                               ! Количество возвратов
return_total                CSTRING(7)                           !
return_clear_total          CSTRING(7)                           !
butch_num                   ULONG                                ! номер смены / пакета
TrAmount                    CSTRING(13)                          !
enc_data                    CSTRING(64)                          ! [in][out]шифрованные данные карты(PAN) (для ПО с функцией поддержки HRS)
cardholder_name             CSTRING(UAIF_lnCardholderName)       ! имя владельца карты
max_discount                CSTRING(UAIF_lnAmount)               ! максимальная сумма скидки (в минимальных единицах валюты)
min_discount                CSTRING(UAIF_lnAmount)               ! минимальная сумма скидки (в минимальных единицах валюты)
commission_amount           CSTRING(UAIF_lnAmount+1)             ! сумма комиссии (в минимальных единицах валюты)
PaymentsData                CSTRING(102)                         ! для unipay (каждое поле должно заканчиваться «NULL»)
                                                                 ! PaymentsData [0:2] – Идентификатор платежа;
                                                                 ! PaymentsData [3:35] – Дополнительные данные 1;
                                                                 ! PaymentsData [36:68] - Дополнительные данные 2;
                                                                 ! PaymentsData [69:101] - Дополнительные данные 3;
BIN                         CSTRING(7)                           ! BIN карты, поле должно заканчиваться «NULL»
Hash                        CSTRING(41)                          ! Хэш номера карты (SHA1)
Last4Digits                 CSTRING(7)                           ! Последние 4 цифры номера карты
isDiscoutedGoods            BYTE                                 ! Признак дисконтных товаров в чеке
Balance                     CSTRING(UAIF_lnAmount+1)             ! Баланс карты
TraceID                     CSTRING(UAIF_lnTraceID)              ! идентификатор предавторизации
OriginalDateTime            CSTRING(UAIF_lnDateTime)             ! Дата и время оригинальной операции
CashRecieptNumber           USHORT                               ! Номер кассового чека
OutPutTransactionData       CSTRING(256)                         ! Дополнительные данные транзакции (сообщение от хоста)
TransactionID               CSTRING(19)                          ! Идентификатр транзакции
ComissionOffline            CSTRING(UAIF_lnAmount)               ! Офлайн комиссия
ComissionOfflineCurrency    CSTRING(UAIF_lnCurrency)             ! Валюта офлайн комиссии
ComissionAcquirer           CSTRING(UAIF_lnAmount)               ! Комиссия эквайера
ComissionAcquirerCurrency   CSTRING(UAIF_lnCurrency)             ! Валюта комиссии эквайера
ComissionIssuer             CSTRING(UAIF_lnAmount)               ! Комиссия эмитента
ComissionIssuerCurrency     CSTRING(UAIF_lnCurrency)             ! Валюта комиссии эмитента
AuthorizedAmount            CSTRING(UAIF_lnAmount)               ! Авторизованная сумма
AuthorizedAmountCurrency    CSTRING(UAIF_lnCurrency)             ! Валюта авторизованной суммы

                        END

!-------------------------------------------------------------------------
! Коды возвращаемые фунцией Process
!-------------------------------------------------------------------------
A2RC_Success        EQUATE(0)
A2RC_Error          EQUATE(999)


!_EndDefine_ 

 OMIT('*** ARCUS2 DOCS ***')
  
!-------------------------------------------------------------------------
! Кусок документации
!-------------------------------------------------------------------------

typedef struct
{
int handle;
int abg_id;
int operType; //[in] Код операции (кассовый)
char track2[lnTrack2]/rfu[lnRFU]; //[in] Трек2
char pan[lnPan]; //[out] PAN
char expiry[ lnExpiry ]; //[out] Expiry Date ГГММ
char pay_acc[lnPan]; //не используется
char additional_payment_data[80]; //не используется
char amount[ lnAmount ]; //[in] Сумма в копейках
char original_amount[ lnAmount ]; //[in] Оригинальная сумма в копейках
char currency[ lnCurrency ]; //[in] Код валюты
char terminalID[lnTerminalID ]; //[out][in] ID терминала
char rrn[lnRetrievalReference ]; //[in][out] Ссылка (только для операций для которых нужно, в
остальных случаях - пуста)
char authCode[ lnAuthIdentResponse ]; //[out][in] Код авторизации
char responseCode[lnResponseCode ]; //[out] Код ответа
char cardType[lnCardType]; //[out] Название типа карты
char date[lnDate]; //[out] Дата транзакции
char time[lnTime]; //[out] Время транзакции
char payment_data[lnPayData]; //не используется
char data_to_print[lnPayData]; //не используется
char home_operator[lnPayData]; //не используется
char received_text_message[lnReceivedTextMsg]; //не используется
char text_message[lnReceivedTextMsg]; //[out] Расшифровка
char AID[lnAID]; //[out]EMV AID
char ApplicationLabel[lnApplicationLabel]; //[out]EMV ApplicationLabel
char TVR[lnTVR]; //[out]EMV TVR
int system_res; //не используется
char enc_data[64]; // [in][out]шифрованные данные карты(PAN) (для ПО с
функцией поддержки HRS) char cardholder_name[lnCardholderName]; char Balance[lnAmount+1];
}UserAuthInt;


Enum {
lnProcCode = 7,
lnTrack2 = 60,
lnPan = 20,
lnExpiry = 5,
lnAmount = 13,
lnCurrency = 4,
lnTerminalID = 9,
lnSpdhTerminalID=17,
lnRetrievalReference = 13,
lnAuthIdentResponse = 9,
lnResponseCode = 4,
lnCardType = 80,
lnDate = 7,
lnTime = 7,
lnBatchNum = 8,
lnTrack2Credit = 50,
lnPinblock = 17,
lnPayData = 50,
lnPayId = 3,
lnMtid = 5,
lnReceivedTextMsg=80,
lnAID=80,
lnApplicationLabel=80,
lnTVR=80,
lnRFU=60
};      

typedef struct
{
int handle;
int abg_id;
int operType; //[in] Код операции (кассовый)
char rfu[lnRFU];
char pan[lnPan]; //[out] PAN
char expiry[ lnExpiry ]; //[out] Expiry Date ГГММ
char pay_acc[lnPan]; //не используется
char additional_payment_data[80]; //не используется
char amount[ lnAmount ]; //[in] Сумма в копейках
char original_amount[ lnAmount ]; //[in] Оригинальная сумма в копейках
char currency[ lnCurrency ]; //[in] Код валюты
char terminalID[lnTerminalID ]; //[out][in] ID терминала
char rrn[lnRetrievalReference ]; //[in][out] Ссылка (только для операций для которых нужно, в
остальных случаях - пуста)
char authCode[ lnAuthIdentResponse ]; //[out][in] Код авторизации
char responseCode[lnResponseCode ]; //[out] Код ответа
char cardType[lnCardType]; //[out] Название типа карты
char date[lnDate]; //[out] Дата транзакции
char time[lnTime]; //[out] Время транзакции
char payment_data[lnPayData]; //не используется
char data_to_print[lnPayData]; //не используется
char home_operator[lnPayData]; //не используется
char received_text_message[lnReceivedTextMsg]; //не используется
char text_message[lnReceivedTextMsg]; //[out] Расшифровка
char AID[lnAID]; //[out]EMV AID
char ApplicationLabel[lnApplicationLabel]; //[out]EMV ApplicationLabel
char TVR[lnTVR]; //[out]EMV TVR
int system_res; //не используется
unsigned short receiptNumber; //номер чека
unsigned short Invoice; //номер платежа
int operatopn_type; //тип операции
char card_number[20]; //номер карты
char merchant[80]; //Идентификатор организации
char date_buffer[100]; //
unsigned short debit_number; //количество дебетовых операций
char debit_total[7]; //итог дебет
char debit_clear_total[7]; //итог дебет без учета комиссий и скидок
unsigned short return_number; //Количество возвратов
char return_total[7]; //
char return_clear_total[7]; //
unsigned long butch_num; //номер смены / пакета
char TrAmount[13]; //
char enc_data[64]; // [in][out]шифрованные данные карты(PAN) (для ПО с
функцией поддержки HRS) char cardholder_name[lnCardholderName]; //имя владельца карты
char max_discount[lnAmount]; //максимальная сумма скидки (в минимальных единицах валюты)
char min_discount[lnAmount]; /минимальная сумма скидки (в минимальных единицах валюты)
char commission_amount[ lnAmount+1 ]; //сумма комиссии (в минимальных единицах валюты)
char PaymentsData[102]; //для unipay (каждое поле должно заканчиваться «NULL»)
PaymentsData [0:2] – Идентификатор платежа;
PaymentsData [3:35] – Дополнительные данные 1;
PaymentsData [36:68] - Дополнительные данные 2;
PaymentsData [69:101] - Дополнительные данные 3;
char BIN[7]; //BIN карты, поле должно заканчиваться «NULL»
char Hash[41]; //Хэш номера карты (SHA1)
char Last4Digits[7]; //Последние 4 цифры номера карты
char isDiscoutedGoods; //Признак дисконтных товаров в чеке
char Balance[lnAmount+1]; //Баланс карты
!
ARCUS 2 / Руководство администратора
65
char TraceID[lnTraceID]; //идентификатор предавторизации
char OriginalDateTime[lnDateTime]; //Дата и время оригинальной операции
unsigned short CashRecieptNumber; //Номер кассового чека
char OutPutTransactionData[256]; //Дополнительные данные транзакции (сообщение от хоста)
char TransactionID[19]; //Идентификатр транзакции
char ComissionOffline[lnAmount]; //Офлайн комиссия
char ComissionOfflineCurrency[lnCurrency]; //Валюта офлайн комиссии
char ComissionAcquirer[lnAmount]; //Комиссия эквайера
char ComissionAcquirerCurrency[lnCurrency]; //Валюта комиссии эквайера
char ComissionIssuer[lnAmount]; //Комиссия эмитента
char ComissionIssuerCurrency[lnCurrency]; //Валюта комиссии эмитента
char AuthorizedAmount[lnAmount]; //Авторизованная сумма
char AuthorizedAmountCurrency[lnCurrency]; //Валюта авторизованной суммы
}UserAuthIntFull;
Enum {
lnProcCode = 7,
lnRFU = 60,
lnPan = 20,
lnExpiry = 5,
lnAmount = 13,
lnCurrency = 4,
lnTerminalID = 9,
lnSpdhTerminalID=17,
lnRetrievalReference = 13,
lnAuthIdentResponse = 9,
lnResponseCode = 4,
lnCardType = 80,
lnDate = 7,
lnTime = 7,
lnBatchNum = 8,
lnRFUCredit = 50,
lnPinblock = 17,
lnPayData = 50,
lnPayId = 3,
lnMtid = 5,
lnReceivedTextMsg=80,
lnAID=80,
lnApplicationLabel=80,
lnTVR=80,
lnCardholderName = 27,
lnTraceID = 61,
lnDateTime = 13                   

! '*** ARCUS2 DOCS ***'
 
