Золотая середина

Общие положения

Модуль «Золотая середина» менеджера оплат Штрих-М служит для интеграции менеджера оплат Штрих-М с бонусными и дисконтными картами компании «Золотая середина».

Сам модуль представляет собой динамически подключаемую библиотеку 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.