Это старая версия документа!
Модуль «Золотая середина» менеджера оплат Штрих-М служит для интеграции менеджера оплат Штрих-М с бонусными и дисконтными картами компании «Золотая середина».
Сам модуль представляет собой динамически подключаемую библиотеку 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 - код вида оплаты. ожидаются виды оплаты: * 1 - оплата бонусами * остальное - другие виды оплаты. name - наименование вида оплаты. amount - сумма, оплачиваемая данным видом оплаты, в сотых долях валюты. articul - код ККМ, модулем не учитывается. * PaysCount - размер массива Pays. Сумма чека считается как сумма полей amount по всем видам оплаты. Сумма баллов для списания берется их первого элемента со значением поля articul, равным 1. *Выходные поля* * BonusAmount - количество спианных баллов, в сотых долях. * Error - код ошибки, равно 0, если все хорошо. * ErrorMsg - текст ошибки, не заполняется, если все хорошо. * StringForPrint - слип-чек для печати. * *Amount* - сумма чека, вычисленная из массива Pays. h1. Настройка слип - чека Шаблон слип-чека, выдаваемого модулем можно настраивать. Для этого существует закладка «Слип-чек» в окне настроек модуля. Шаблон представляет собой произвольный текст со специальными полями, которые будут вычислены и подставлены в чек. Каждое подставляемое поле ограничено символом '&' в начале и в конце. Затем идет двухбуквенное регистрочувствительное наименование поля, а затем спецификатор формата. Спецификатор формата должен быть такой же, как для C-функции printf. Например, *&SU%8.2f &* означает поле SU (сумма чека), отформатированное как число с десяточной точкой, с точностью 2 знака после запятой и шириной 8 символов. Выравнивание полей осуществляется по правой границе. Если ширина получившегося отформатированного значения получилась меньше, чем ширина строки между начаьным ии конечным сиволами '&', проивзводится дополнение пробелами слева (выравнивание по правой границе). Ниже представлены поля, которые поддерживаются: * *SU* - сумма чека * *SB* - сумма к оплате за вычетом суммы, оплачиваемой баллами * *CN* - номер карты * *BC* - количество начисленных при операции бонусов * *BD* - количество списанных при операции бонусов * *BB* - баланс карты да операции Настройки модуля, включая шаблон слип-чека сохраняются в файле «Общие документы\Seredina\seredinas1c.xml». h1. Разрешение проблем при работе модуля Возникающие проблемы можно условно разделить на несколько видов. * Ошибки настройки. Этот класс проблем возникает из-за неправильной установки или настройки модуля. * Ошибки связи. Возникают из-за проблем с сетью. * Ошибки бизнес-логики. Возникают в процессе обработки запросов. Например, сумма баллов для списания превысила лимит списания. Для помощи в решении проблем можно использовать лог-файлы. Они расположены в папке «Общие документы\Seredina\Logs». Каждый файл имеет имя в формате YYYYMMDDКАТЕГОРИЯ.log. Здесь: * YYYY - год записи в журнал, * MM - месяц записи в журнал, * DD - день записи в журнал, * КАТЕГОРИЯ - строка, идентифицирующая категорию информации. Принимает значения: _s1c - лог модуля seredinas1c.dll (пусто) - лог OLE-компонента _trm - лог терминала
Кроме того, можно воспользоваться утилитой командной строки для тестирования *testcmdl.exe*, которая обспечивает вызовы функций модуля. Эта утилита расположена там же, где и модуль. Схема запуска утилиты: *testcmdl.exe [номер карты [/s сумма] [/b баллы_для_списания]]*. Здесь: * [номер карты] - номер бонусной карты для тестирования, по умолчанию 0040019414 * [/s сумма] - сумма чека, в целых рублях * [/b баллы_для_списания] - сумма баллов для списания, в целых баллах.
Вывод утилиты обычно похож на следующий: <pre>
*testcmdl.exe [номер карты [/s сумма] [/b баллы_для_списания]]*
Информация о модуле.
Версия протокола: 7 Имя: "Золотая середина" Дополнтельная информация: ReadCardOnCash: 1 MultiAuth: 0 ReadPhoneNumberOnCash: 0 ReadServiceProviderOnCash: 0 MultiCloseDay: 0
Запрос информации о карте…Успешно. Информация о карте:
Номер: 0040019414 Баланс: 1020.25 Скидка: 0
Продажа с начислением бонусов…
Карта: 0040019414 Сумма чека: 100
…Успешно.
Начислено баллов: 10 Сообщение: Продажа выполнена успешно, начислено 10.00 бонусов. Строка продажи: Строка для печати: Продажа выполнена успешно, начислено 10.00 бонусов.
Возврат начисленых бонусов…
Карта: 0040019414 Сумма чека: -100
…Успешно.
Начислено баллов: -10 Сообщение: Возврат выполнен успешно Строка продажи: Строка для печати: Возврат выполнен успешно
Продажа со списанием бонусов…
Карта: 0040019414 Сумма чека: 100 Баллов для списания: 1
…Успешно.
Списано баллов: 1 Сообщение: Продажа выполнена успешно. Списано баллов: 1,00. Строка продажи: Строка для печати: Продажа выполнена успешно. Списано баллов: 1,00.
</pre>
Также, есть проблема, связанная с включённой защитой от выполнения данных (DEP) для 1С. Она проявляется как ошибка доступа к памяти вида: «access vioaltion at [ADDR]. Write memory at [ADDR]», где [ADDR] - некий адрес в памяти. Эту защиту нужно отключать для процесса 1с. Как это сделать, подробнее можно узнать здесь: http://support.microsoft.com/kb/875352.