менеджер_оплат:расширение
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| менеджер_оплат:расширение [2015/01/22 18:43] – [Структура DiscountCardInfo] versus | менеджер_оплат:расширение [2019/07/25 16:12] (текущий) – [Структура AddInfo] versus | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Создание нового модуля для работы с процессингом ====== | ||
| + | |||
| + | Создание нового модуля заключатся в создании динамически подгружаемой библиотеки с определенным программным интерфейсом. | ||
| + | Все экспортируемые функции модуля можно условно разделить на группы: | ||
| + | * Функции общего назначения | ||
| + | * Функции безналичной оплаты | ||
| + | * Функции приема платежей (оплата услуг) | ||
| + | * Функции работы с подарочными картами | ||
| + | * Функции работы с дисконтными картами | ||
| + | |||
| + | |||
| + | ===== Функции общего назначения ===== | ||
| + | ==== Функция GetInfo ==== | ||
| + | |||
| + | Обязательная функция. Вызывается менеджером оплат для получения информации о подключаемом модуле. | ||
| + | |||
| + | <code c>int GetInfo(Info *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если выполнена успешно. Если функция вернет 0, менеджер оплат не будет загружать и использовать этот модуль. | ||
| + | |||
| + | |||
| + | ==== Функция ShowProperties ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для отображения окна настроек модуля. | ||
| + | |||
| + | <code c>int ShowProperties();</ | ||
| + | |||
| + | Возвращает 1, если настройки были изменены. Если настройки не изменены, | ||
| + | |||
| + | Функция ShowProperties вызывается только для инициализированного модуля. Если инициализация модуля завершилась с ошибкой (функция Init вернула 0), менеджер оплвт не будет производить вызов функции ShowProperties. | ||
| + | |||
| + | |||
| + | ==== Функция Init ==== | ||
| + | |||
| + | Обязательная функция. Вызывается менеджером оплат для инициализации модуля. | ||
| + | |||
| + | <code c>int Init(char *path, Error *error);</ | ||
| + | |||
| + | Параметры: | ||
| + | path - путь к каталогу, | ||
| + | error сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если инициализация модуля прошла успешно. Если инициализация не прошла успешно, | ||
| + | |||
| + | |||
| + | ==== Функция Done ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для деинициализации модуля. | ||
| + | |||
| + | <code c>int Done();</ | ||
| + | |||
| + | Возвращает 1, если деинициализация модуля прошла успешно, | ||
| + | |||
| + | |||
| + | ==== Функция CancelLastTransaction ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для технологической отмены транзакции. | ||
| + | |||
| + | <code c>int CancelLastTransaction(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если транзакция успешно отменена, | ||
| + | |||
| + | |||
| + | ==== Функция CloseDay ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат завершения смены кассира. Функциональная нагрузка функции: | ||
| + | |||
| + | <code c>int CloseDay(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если закрытие дня выполнено полностью, | ||
| + | |||
| + | |||
| + | ==== Функция PrintReport ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для печати дополнительного отчета. | ||
| + | |||
| + | <code c>int PrintReport(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если отчет сформирован успешно и его можно печатать, | ||
| + | |||
| + | |||
| + | ==== Функция PrintCheckCopy ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для повторной печати слипа. Поиск оригинального документа осуществляется по параметрам RRN и AuthCode структуры payinfo. | ||
| + | |||
| + | <code c>int PrintCheckCopy(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если слип сформирован успешно и его можно печатать, | ||
| + | |||
| + | |||
| + | ==== Функция CheckConnection ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для проверки связи с узлами модуля. Вызов функции инициирует пользователь. | ||
| + | |||
| + | <code c>int CheckConnection(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если связь со всеми узлами установлена, | ||
| + | |||
| + | |||
| + | ==== Функция Commit ==== | ||
| + | |||
| + | Экспорт этой функции обязателен, | ||
| + | Если операция требует подтверждения, | ||
| + | Функция Commit вызывается не для всех операций, | ||
| + | Для идентификации подтверждаемой операции менеджер оплат передает ее RRN и AuthCode в параметрах структуры payinfo. | ||
| + | |||
| + | <code c>int Commit(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 0, только если операцию подтвердить невозможно. Если операция не подтверждена из-за отсутствия свиязи с процессингом, | ||
| + | |||
| + | |||
| + | ===== Функции безналичной оплаты ===== | ||
| + | |||
| + | Если модуль поддерживает обработку безналичной оплаты, | ||
| + | |||
| + | ==== Функция Pay ==== | ||
| + | |||
| + | Обязательная функция (если модуль поддерживает обработку безналичной оплаты). Вызывается менеджером оплат для выполнения операции с безналичным счетом клиента. | ||
| + | |||
| + | <code c>int Pay(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если операция прошла успешно, | ||
| + | |||
| + | ==== Функция PrePay ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для выполнения операции с безналичным счетом клиента. | ||
| + | Вызывается до вызова Pay() в тех случаях, | ||
| + | |||
| + | <code c>int PrePay(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если операция прошла успешно, | ||
| + | |||
| + | |||
| + | ==== Функция VoicePay ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для выполнения операции с безналичным счетом клиента, | ||
| + | |||
| + | <code c>int VoicePay(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если операция прошла успешно, | ||
| + | |||
| + | |||
| + | ===== Функции оплаты услуг ===== | ||
| + | ==== Функция ServicePay ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для выполнения операции по приему платежей (оплаты услуг). | ||
| + | |||
| + | <code c>int ServicePay(int iterID, ServicePayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | iterID. Принимает значение 0 или 1. Если iterID равен 0, то происходит проверка возможности провести платеж. Если 1, то происходит фиксация платежа в процессинге.\\ | ||
| + | payinfo указатель на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если операция прошла успешно, | ||
| + | |||
| + | Примечание. Если iterID равен 1, то функция может вернуть 0 только в случае фатальной ошибки. К фатальным ошибкам относится, | ||
| + | |||
| + | |||
| + | |||
| + | ===== Функции работы с подарочными картами ===== | ||
| + | ==== Функция GetGiftCardNominal ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для получения номинала подарочной карты. | ||
| + | |||
| + | <code c>int GetGiftCardNominal(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если операция прошла успешно, | ||
| + | |||
| + | |||
| + | ==== Функция ActivateGiftCard ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для активации подарочной карты в процессинге. | ||
| + | |||
| + | <code c>int ActivateGiftCard(PayInfo *payinfo);</ | ||
| + | |||
| + | Параметры: | ||
| + | payinfo сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если карта активирована, | ||
| + | |||
| + | |||
| + | ==== Функция GetGiftCardBalance ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для получения остатка на подарочной карте. | ||
| + | |||
| + | <code c>int GetGiftCardBalance(GiftCardInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если остаток получен, | ||
| + | |||
| + | |||
| + | ==== Функция ActivateGiftCardArbitraryNominal ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для активации подарочной карты произвольного номинала. | ||
| + | |||
| + | <code c>int ActivateGiftCardArbitraryNominal(PayInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если карта успешно активирована в процессинге, | ||
| + | |||
| + | |||
| + | ==== Функция GiftCardPreActivationSlip ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для получения преактивационного слипа. | ||
| + | |||
| + | <code c>int GiftCardPreActivationSlip(PayInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если карта может быть активирована, | ||
| + | |||
| + | |||
| + | ===== Функции работы с дисконтными картами ===== | ||
| + | Работа с дисконтными картами реализается одним из двух режимов: | ||
| + | * Процессинг является ведомым | ||
| + | * Процессинг является ведущим | ||
| + | |||
| + | Первый режим предоставляет возможность получить номер карты из процессинга и отправить в процессинг результат обработки карты в чеке (предоставленную скидку, | ||
| + | |||
| + | Второй режим подразумевает полную обработку скидок процессингом и только оповещает менеджер оплат о необходимости произвести начисление скидки на чек, сообщает менеджеру оплат текст с дополнительной информацией для печати на чеке. Реализация этого режима производится экспортом функций CorrectDiscountCard и GetDiscountCardInfo. | ||
| + | |||
| + | ==== Функция ExternalDiscount_GetID ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для получения номера дисконтной карты. | ||
| + | |||
| + | <code c>int ExternalDiscount_GetID(DiscountCardInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если номер карты получен из процессинга, | ||
| + | |||
| + | |||
| + | |||
| + | ==== Функция ExternalDiscount_UpdateDC ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для информирования процессинга о скидке по карте, начисленных бонусах. | ||
| + | |||
| + | <code c>int ExternalDiscount_UpdateDC(PayInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если функция выполнена успешно, | ||
| + | |||
| + | ==== Функция GetDiscountCardInfo ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для получения информации о карте. | ||
| + | |||
| + | <code c>int GetDiscountCardInfo(DiscountCardInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если функция выполнена успешно, | ||
| + | |||
| + | ==== Функция CorrectDiscountCard ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для информирования процессинга о составе чека для корректирования информации по карте. | ||
| + | |||
| + | <code c>int CorrectDiscountCard(PayInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если функция выполнена успешно, | ||
| + | |||
| + | ==== Функция GetMaxPayAmountOnCheck ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для получения от процессинга информации о максимально возможной сумме списания баллов с карты и о сумме скидки, | ||
| + | |||
| + | <code c>int GetMaxPayAmountOnCheck(PayInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если функция выполнена успешно, | ||
| + | |||
| + | Функция модифицирует поля структуры info.\\ | ||
| + | Amount -- Максимально возможная сумма списания баллов в текущем чеке.\\ | ||
| + | DiscountAmount -- Скидка, | ||
| + | |||
| + | ==== Функция ConvertDiscountCard ==== | ||
| + | |||
| + | Не обязательная функция. Вызывается менеджером оплат для конвертации дисконтной карты или для связи двух карт. | ||
| + | |||
| + | <code c>int ConvertDiscountCard(DiscountCardInfo *info);</ | ||
| + | |||
| + | Параметры: | ||
| + | info сслка на структуру [[менеджер_оплат: | ||
| + | |||
| + | Возвращает 1, если функция выполнена успешно, | ||
| + | |||
| + | ===== Структуры в параметрах функий ===== | ||
| + | ==== Структура Info ==== | ||
| + | <code c> | ||
| + | struct Info | ||
| + | { | ||
| + | int version; | ||
| + | char *name; | ||
| + | char *terminal_id; | ||
| + | char *number_of point; | ||
| + | AddInfo *addinfo; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Описание полей: | ||
| + | version -- содержит текущее значение версии протокола.\\ | ||
| + | name -- Наименование процессинга для менеджера оплат. Если NULL, используется имя из конфигурационного файла менеджера оплат.\\ | ||
| + | terminal_id -- не используется.\\ | ||
| + | number_of point -- не используется.\\ | ||
| + | addinfo -- Указатель на структуру [[менеджер_оплат: | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Структура Error ==== | ||
| + | <code c> | ||
| + | struct Error | ||
| + | { | ||
| + | int code; | ||
| + | char *message; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Структура сожержит описание ошибки. Предназначена для передачи информации об ошибке в менеджер оплат. | ||
| + | |||
| + | Описание полей: | ||
| + | code -- внутренний код ошибки модуля.\\ | ||
| + | message -- текстовое описание ошибки.\\ | ||
| + | ==== Структура AddInfo ==== | ||
| + | <code c> | ||
| + | struct AddInfo | ||
| + | { | ||
| + | int ReadCardOnCash; | ||
| + | int MultiAuth; | ||
| + | int ReadPhoneNumberOnCash; | ||
| + | int ReadServiceProviderOnCash; | ||
| + | int MultiCloseDay; | ||
| + | int PrePay; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Структура предназначена для передачи дополнительной информации о модуле менеджеру оплат. | ||
| + | |||
| + | Поля:\\ | ||
| + | ReadCardOnCash -- Принимает значение 0, если считывание карты производится переферией модуля. 1, если менеджер оплат обязан произвести чтение карты своими средствами.\\ | ||
| + | MultiAuth -- Принимает значение 1, если модуль поддерживает работу с несколькими юридическими лицами. В проивном случае 0.\\ | ||
| + | ReadPhoneNumberOnCash -- Если номер телефона (при оплате услуг) поставляется мереджером оплат, то значение поля должно быть равно 1. В проивном случае 0.\\ | ||
| + | ReadServiceProviderOnCash -- Если выбор провайдера услуг (при оплате услуг) производится модулем, | ||
| + | MultiCloseDay -- Поле может быть равно 1 только при MultiAuth равном 1. Если поле равно 1, то менеджер оплат будет вызывать функцию CloseDay отдельно для каждого юридического лица. В противном случае функция CloseDay будет вызвана только один раз (даже при работе с несколькими юридическими лицами).\\ | ||
| + | PrePay -- Поле может принимает значение 1, если модуль экспортировал функцию PrePay() и ожидает вызова этого метода от кассового приложения.\\ | ||
| + | |||
| + | |||
| + | ==== Структура PayInfo ==== | ||
| + | <code c> | ||
| + | struct PayInfo | ||
| + | { | ||
| + | int Amount; | ||
| + | char *CardNumber; | ||
| + | int KKMNumber; | ||
| + | int CheckNumber; | ||
| + | char *AuthCode; | ||
| + | char *RRN; | ||
| + | int Error; | ||
| + | char *ErrorMsg; | ||
| + | char *StringForPrint; | ||
| + | char *DisplayMessage; | ||
| + | int DiscountAmount; | ||
| + | int MustCommit; | ||
| + | char *StringForBuy; | ||
| + | int ComissionAmount; | ||
| + | int BonusAmount; | ||
| + | int GoodsCount; | ||
| + | void *Goods; | ||
| + | int PaysCount; | ||
| + | void *Pays; | ||
| + | int CardInputType; | ||
| + | int CashierCode; | ||
| + | char *CashierName; | ||
| + | char *CardType; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | |||
| + | Поля: | ||
| + | |||
| + | Amount -- Сумма опреации в сотых долях валюты. | ||
| + | |||
| + | CardNumber -- Номер карты (второй трэк). | ||
| + | |||
| + | KKMNumber -- Логический номер кассы или номер юридического лица, если мдуль работает в режиме нескольких оридических лиц. | ||
| + | |||
| + | CheckNumber -- номер чека, получается кассовым ПО. | ||
| + | |||
| + | AuthCode -- Код авторизации. | ||
| + | |||
| + | RRN -- RRN. | ||
| + | |||
| + | Error -- Код ошибки. | ||
| + | |||
| + | ErrorMsg -- Текстовое представление ошибки. | ||
| + | |||
| + | StringForPrint -- Текст слипа для печати на чековой ленте. | ||
| + | |||
| + | DisplayMessage -- Сообщение, | ||
| + | |||
| + | DiscountAmount -- Сумма скидки. | ||
| + | |||
| + | MustCommit -- Выходной параметр. Если значение равно 1, то операция должна быть подтверждена функцией Commnt. Если 0, то опреация не нуждается в подтверждении. | ||
| + | |||
| + | StringForBuy -- Текст, который кассовое ПО напечатает в кассовом чеке. | ||
| + | |||
| + | ComissionAmount -- Сумма комиссии в сотых долях валюты. | ||
| + | |||
| + | BonusAmount -- Начисленный бонус в сотых долях валюты. | ||
| + | |||
| + | GoodsCount -- Количество элементов массива Goods. | ||
| + | |||
| + | Goods -- Массив указателей на структуры [[менеджер_оплат: | ||
| + | |||
| + | PaysCount -- Количество элементов массива Pays. | ||
| + | |||
| + | Pays -- Массив указателей на структуры [[менеджер_оплат: | ||
| + | |||
| + | CardInputType -- Способ ввода карты. Принимает значения: | ||
| + | 0 -- Ридер магнитных карт\\ | ||
| + | 1 -- Сканер штрихкода\\ | ||
| + | 2 -- Ручной ввод | ||
| + | |||
| + | CashierCode - Код кассира. | ||
| + | |||
| + | CashierName - ФИО Кассира. | ||
| + | |||
| + | CardType - Выходной. Тип карты, которой совершалась операция. | ||
| + | |||
| + | ==== Структура ServicePayInfo ==== | ||
| + | <code c> | ||
| + | struct ServicePayInfo | ||
| + | { | ||
| + | int Amount; | ||
| + | char *PhoneNumber; | ||
| + | char *TransID; | ||
| + | char *OperCode; | ||
| + | char *OperName; | ||
| + | char *SessionID; | ||
| + | int ComissionAmount; | ||
| + | int ErrorCode; | ||
| + | char *ErrorMessage; | ||
| + | char *StringForPrint; | ||
| + | char *StringForBuy; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Структура GiftCardInfo ==== | ||
| + | <code c> | ||
| + | struct GiftCardInfo | ||
| + | { | ||
| + | int Amount; | ||
| + | char *CardNumber; | ||
| + | int ErrorCode; | ||
| + | char *ErrorMessage; | ||
| + | char *StringForPrint; | ||
| + | char *DisplayMessage; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Структура DiscountCardInfo ==== | ||
| + | <code c> | ||
| + | struct DiscountCardInfo | ||
| + | { | ||
| + | int Balance; | ||
| + | int CheckCount; | ||
| + | int CheckSum; | ||
| + | char *CardNumber; | ||
| + | int ErrorCode; | ||
| + | char *ErrorMessage; | ||
| + | char *StringForPrint; | ||
| + | char *DisplayMessage; | ||
| + | int Discount; | ||
| + | int CardInputType; | ||
| + | char *AltCardNumber; | ||
| + | int AltCardInputType; | ||
| + | char *ClientName; | ||
| + | SYSTEMTIME ClientBirthday; | ||
| + | }; | ||
| + | </ | ||
| + | ClientName -- ФИО клиента. Входной/ | ||
| + | ClientBirthday -- День рождения клиента. Входной/ | ||
| + | |||
| + | |||
| + | ==== Структура GoodItem ==== | ||
| + | <code c> | ||
| + | struct GoodItem | ||
| + | { | ||
| + | char *articul; | ||
| + | char *name; | ||
| + | int quant; | ||
| + | int price; | ||
| + | int amount; | ||
| + | int discount; | ||
| + | int maxdiscount; | ||
| + | char *barcode; | ||
| + | int CategoriesCount; | ||
| + | char** Categories; | ||
| + | }; | ||
| + | </ | ||
| + | Поля:\\ | ||
| + | articul -- Артикул товара.\\ | ||
| + | name -- Наименование товара.\\ | ||
| + | quant -- Количество товара в тысячных долях единицы.\\ | ||
| + | price -- цена за единицу товара в сотых долях валюты.\\ | ||
| + | amount -- стоимость товара с учётом скидки в сотых долях валюты.\\ | ||
| + | discount -- сумма скидки на товар в сотых долях валюты.\\ | ||
| + | maxdiscount -- максимально возможная сумма скидки на товар в сотых долях валюты.\\ | ||
| + | barcode -- Штрихкод товара.\\ | ||
| + | CategoriesCount -- количество элементов в массиве Categories; | ||
| + | Categories -- массив доп. категорий товаров; | ||
| + | |||
| + | |||
| + | ==== Структура PayItem ==== | ||
| + | <code c> | ||
| + | struct PayItem | ||
| + | { | ||
| + | int articul; | ||
| + | int ecr_articul; | ||
| + | char *name; | ||
| + | int amount; | ||
| + | int CategoriesCount; | ||
| + | char** Categories; | ||
| + | }; | ||
| + | </ | ||
| + | Поля:\\ | ||
| + | articul -- Артикул вида оплаты.\\ | ||
| + | ecr_articul -- Номер вида оплаты в ККМ.\\ | ||
| + | name -- Наименование вида оплаты.\\ | ||
| + | amount -- Сумма в сотых долях валюты по виду оплаты в чеке.\\ | ||
| + | CategoriesCount -- количество элементов в массиве Categories; | ||
| + | Categories -- массив доп. категорий оплат; | ||
