Это старая версия документа!
Содержание
Золотая середина
Общие положения
Модуль «Золотая середина» менеджера оплат Штрих-М служит для интеграции менеджера оплат Штрих-М с бонусными и дисконтными картами компании «Золотая середина».
Сам модуль представляет собой динамически подключаемую библиотеку seredinas1c.dll, разработанную в соответствии с требованиями компании Штрих-М.
Требования к системе
Для работы модуля требуется, чтобы был установлен «Терминал для работы с картами «Золотая середина».
Порядок установки и настройки
При установке терминала требуется включить флажок «Устанавливать OLE-компоненты для интеграции». Сам файл seredinas1c.dll помещается в соответствующую папку менеджера оплат и на него указывается ссылка в файле ShtrihPayMan.ini. Для работы OLE-компонентов требуется наличие файла настроек wscardterm.ini либо в той же папке, что и модуль seredinas1c.dll, либо в папке «Общие документы\Seredina». В папку «Общие документы\Seredina» файл настроек попадает при установке терминала для работы с картами «Золотая середина».
Порядок использования.
Ниже перечислены основные операции, реализуемые модулем, а также значения полей, которые модуль ожидает при вызове.
Запрос баланса.
Осуществляется вызовом функции GetDiscountCardInfo(DiscountCardInfo *info).
*Входные поля* * CardNumber - номер карты.
*Выходные поля* * Balance - баланс, в сотых долях баллов. * ErrorCode - код ошибки, равно 0, если все хорошо. * ErrorMessage - текст ошибки, не заполняется, если все хорошо. * StringForPrint - слип-чек для печати.
Начисление баллов.
Осуществляется вызовом функции CorrectDiscountCard(PayInfo *info).
*Входные поля* * CardNumber - номер карты. * CheckNumber - номер чека, если 0, генерируется автоматически из параметров магазина и даты/времени. * Amount - сумма чека в рублях.
*Выходные поля* * BonusAmount - начисленные баллы, в сотых долях. * Error - код ошибки, равно 0, если все хорошо. * ErrorMsg - текст ошибки, не заполняется, если все хорошо. * StringForPrint - слип-чек для печати.
Списание баллов.
Осуществляется вызовом функции Pay(PayInfo *info).
Входные поля
- CardNumber - номер карты.
- CheckNumber - номер чека, если 0, генерируется автоматически из параметров магазина и даты/времени.
- Amount - количество баллов для списания.
- Pays - массив видов платежей, имеет C-тип PayItem * * .
- Каждый элемент содержит поля:
- articul - код вида оплаты.
- name - наименование вида оплаты.
- amount - сумма, оплачиваемая данным видом оплаты, в сотых долях валюты.
- articul - код ККМ, модулем не учитывается.
- PaysCount - размер массива Pays.
Сумма чека считается как сумма полей amount по всем видам оплаты. Сумма баллов для списания берется из поля info→Amount.
Выходные поля
- BonusAmount - количество списанных баллов, в сотых долях.
- Error - код ошибки, равно 0, если все хорошо.
- ErrorMsg - текст ошибки, не заполняется, если все хорошо.
- StringForPrint - слип-чек для печати.
Настройка слип - чека
Шаблон слип-чека, выдаваемого модулем можно настраивать. Для этого существует закладка «Слип-чек» в окне настроек модуля. Шаблон представляет собой произвольный текст со специальными полями, которые будут вычислены и подставлены в чек. Каждое подставляемое поле ограничено символом '&' в начале и в конце. Затем идет двухбуквенное регистрочувствительное наименование поля, а затем спецификатор формата. Спецификатор формата должен быть такой же, как для C-функции printf. Например, *&SU%8.2f &* означает поле SU (сумма чека), отформатированное как число с десятичной точкой, с точностью 2 знака после запятой и шириной 8 символов. Выравнивание полей осуществляется по правой границе. Если ширина получившегося отформатированного значения получилась меньше, чем ширина строки между начальным и конечным символами '&', производится дополнение пробелами слева (выравнивание по правой границе).
Ниже представлены поля, которые поддерживаются:
- SU - сумма чека
- SB - сумма к оплате за вычетом суммы, оплачиваемой баллами
- CN - номер карты
- BC - количество начисленных при операции бонусов
- BD - количество списанных при операции бонусов
- BB - баланс карты да операции
Настройки модуля, включая шаблон слип-чека сохраняются в файле «Общие документы\Seredina\seredinas1c.xml».
Разрешение проблем при работе модуля
Возникающие проблемы можно условно разделить на несколько видов.
- Ошибки настройки. Этот класс проблем возникает из-за неправильной установки или настройки модуля.
- Ошибки связи. Возникают из-за проблем с сетью.
- Ошибки бизнес-логики. Возникают в процессе обработки запросов. Например, сумма баллов для списания превысила лимит списания.
Для помощи в решении проблем можно использовать лог-файлы. Они расположены в папке «Общие документы\Seredina\Logs». Каждый файл имеет имя в формате YYYYMMDDКАТЕГОРИЯ.log. Здесь:
- YYYY - год записи в журнал,
- MM - месяц записи в журнал,
- DD - день записи в журнал,
- КАТЕГОРИЯ - строка, идентифицирующая категорию информации. Принимает значения:
- _s1c - лог модуля seredinas1c.dll
- (пусто) - лог OLE-компонента
- _trm - лог терминала
Кроме того, можно воспользоваться утилитой командной строки для тестирования testcmdl.exe, которая обеспечивает вызовы функций модуля. Эта утилита расположена там же, где и модуль. Схема запуска утилиты:
testcmdl.exe [номер карты [/s сумма] [/b баллы_для_списания]].
Здесь:
- [номер карты] - номер бонусной карты для тестирования, по умолчанию 0040019414
- [/s сумма] - сумма чека, в целых рублях
- [/b баллы_для_списания] - сумма баллов для списания, в целых баллах.
Вывод утилиты обычно похож на следующий:
> *testcmdl.exe [номер карты [/s сумма] [/b баллы_для_списания]]* Информация о модуле. Версия протокола: 7 Имя: "Золотая середина" Дополнтельная информация: ReadCardOnCash: 1 MultiAuth: 0 ReadPhoneNumberOnCash: 0 ReadServiceProviderOnCash: 0 MultiCloseDay: 0 Запрос информации о карте...Успешно. Информация о карте: Номер: 0040019414 Баланс: 70 Скидка: 0 Продажа с начислением бонусов... Карта: 0040019414 Сумма чека: 10 ...Успешно. Начислено баллов: 10 Сообщение: Продажа выполнена успешно, начислено 10.00 бонусов. Строка продажи: Строка для печати: **************************************** * Добро пожаловать в программу * * <Золотая середина> * **************************************** * № чека * * Дата чека: * * К оплате: 10.00 руб. * * К оплате с учетом бонусов: * * 10.00 руб. * **************************************** * № Вашей карты: 0040019414 * * Начислено бонусов за покупку * * +10.00 * * Списано бонусов в счет покупки * * 0.00 * * Баланс бонусов по карте (до покупки) * * 70.00 * **************************************** * При предъявлении карты, * Вам начисляется 5% бонусов * * от суммы Вашей покупки. * * 1 бонус=1 рубль * * Оплачивайте бонусами * * до 50% от суммы покупки. * **************************************** * БЛАГОДАРИМ ЗА ПОКУПКУ! * * Узнать подробнее об условиях * * программы и текущих акциях * * www.seredina.ru * **************************************** Возврат начисленых бонусов... Карта: 0040019414 Сумма чека: -10 ...Успешно. Начислено баллов: -10 Сообщение: Возврат выполнен успешно Строка продажи: Строка для печати: **************************************** * Добро пожаловать в программу * * <Золотая середина> * **************************************** * № чека * * Дата чека: * * К оплате: -10.00 руб. * * К оплате с учетом бонусов: * * -10.00 руб. * **************************************** * № Вашей карты: 0040019414 * * Начислено бонусов за покупку * * -10.00 * * Списано бонусов в счет покупки * * 0.00 * * Баланс бонусов по карте (до покупки) * * 70.00 * **************************************** * При предъявлении карты, * Вам начисляется 5% бонусов * * от суммы Вашей покупки. * * 1 бонус=1 рубль * * Оплачивайте бонусами * * до 50% от суммы покупки. * **************************************** * БЛАГОДАРИМ ЗА ПОКУПКУ! * * Узнать подробнее об условиях * * программы и текущих акциях * * www.seredina.ru * **************************************** Продажа со списанием бонусов... Карта: 0040019414 Сумма чека: 10 Баллов для списания: 5 ...Успешно. Списано баллов: 5 Сообщение: Продажа выполнена успешно. Списано баллов: 5,00. Строка продажи: Строка для печати: **************************************** * Добро пожаловать в программу * * <Золотая середина> * **************************************** * № чека * * Дата чека: * * К оплате: 10.00 руб. * * К оплате с учетом бонусов: * * 5.00 руб. * **************************************** * № Вашей карты: 0040019414 * * Начислено бонусов за покупку * * +0.00 * * Списано бонусов в счет покупки * * 5.00 * * Баланс бонусов по карте (до покупки) * * 70.00 * **************************************** * При предъявлении карты, * Вам начисляется 5% бонусов * * от суммы Вашей покупки. * * 1 бонус=1 рубль * * Оплачивайте бонусами * * до 50% от суммы покупки. * **************************************** * БЛАГОДАРИМ ЗА ПОКУПКУ! * * Узнать подробнее об условиях * * программы и текущих акциях * * www.seredina.ru * ****************************************
Также, есть проблема, связанная с включённой защитой от выполнения данных (DEP) для 1С. Она проявляется как ошибка доступа к памяти вида: «access vioaltion at [ADDR]. Write memory at [ADDR]», где [ADDR] - некий адрес в памяти. Эту защиту нужно отключать для процесса 1с. Как это сделать, подробнее можно узнать здесь: http://support.microsoft.com/kb/875352.
