АкСистем

тел. +7-391-254-79-87

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Техническое задание на разработку дополнительного модуля для кассы

Техническое задание на разработку дополнительного модуля для кассы

Оглавление

1. Варианты работы модуля

2. Вызов модуля с экрана кассы

3. Административный интерфейс модуля

4. Хранение информации в модуле

5. Предпочтительный метод обмена данными

6. Описание протоколов

Номера карточек могут быть введены в одном из 2х форматов:

1. EAN-13 (13-значная последовательность цифр где 12 значащих и одна контрольная)

2. В формате номера карты VISA записанном на 2-й дорожке.

Варианты работы модуля:

1. ПО торговой точки в зависимости от схемы подключения к Системе либо рассчитывает линейную скидку, оформляет ее и запоминает для последующего отчета. Либо при подключении по «Бонусной схеме» только запоминает параметры операции и выводит на чеке информацию о том, что покупка совершена в рамках программы «Бонусов».

2. Информация об операциях в рамках Системы накапливается в течение какого-то периода и передается в Процессинг компании оператора для обработки и расчета суммарных бонусов Держателям.

Вариант «одноуровневой» работы, при котором отсутствует прямая связь между ПО точки и Процессингом. При этом последовательность операций выглядит следующим образом:

1. Держатель обращается на Точку, совершает покупку на сумму Х руб. и при оплате идентифицируется Картой.

2. ПО Точки сохраняет информацию о сумме покупке, моменте произведения операции и номере карты в локальной БД.

3. По окончании отчетного периода (от 1 дня до 1 месяца, например) данные на Точке обрабатываются, и формируется файл отчета в соответствии с одним из Протоколов.

4. Файл отчета упаковывается архиватором WinRAR с использованием пароля назначенного Точке и пересылается по электронной почте на сервер Процессинга.

5. Сервер определяет по имени файла отправителя и, применяя соответствующий пароль, распаковывает пакет.

6. Распакованный пакет импортируется в БД Процессинга и обрабатывается.


Вариант «одноуровневой» работы, при котором доступна прямая связь между ПО точки и Процессингом. При этом последовательность операций выглядит следующим образом:

 

1. Держатель Карты обращается на Точку, совершает покупку на сумму Х руб. и при оплате идентифицируется Картой.

2. ПО Точки сохраняет информацию о сумме покупке, моменте произведения операции и номере карты в локальной БД.

3. ПО точки, используя HTTP-POST запрос, отправляет на сервер Процессинга информацию об операции в соответствии с одним из Протоколов.

4. Сервер обрабатывает переданный пакет, импортирует его в БД Процессинга.

5. Сервер возвращает, в качестве ответа на запрос, результат операции обработки для записи в БД ПО Точки.

Либо 2х уровневый вариант обмена информацией, когда в торговой сети информация внутри сети передается по корпоративным каналам, а центральный сервер сети производит сеанс обмена данными со шлюзом Процессинга.

При этом последовательность операций выглядит следующим образом:

1. Держатель обращается на Точку, совершает покупку на сумму Х руб. и при оплате идентифицируется Картой.

2. ПО Точки сохраняет информацию о сумме покупке, моменте произведения операции и номере карты в локальной БД.

3. Корпоративное ПО отправляет информацию о произведенной операции на центральный сервер Торговой Сети.

4. ПО Центрального Сервера Торговой Сети точки, используя HTTP-POST запрос, отправляет на сервер Процессинга информацию об операции в соответствии с одним из Протоколов.

5. Сервер обрабатывает переданный пакет, импортирует его в БД Процессинга.

6. Сервер возвращает, в качестве ответа на запрос, результат операции обработки для записи в БД ПО Точки.

Вызов модуля с экрана ПО торговой точки

Вызов модуля идентификации должен осуществляться либо из пункта меняю, либо нажатием "горячей" комбинации. При активации модуля на экран должно быть выведено окошко с заголовком "Бонусно - скидочная система " и полем для ввода номера карты.

Номер карты может быть считан с карты, либо введен вручную.

После ввода номера и оплаты чека транзакция сохраняется в базе модуля и передается на сервер компании оператора в зависимости от того как подключена торговая точка.

Административный интерфейс модуля

Параметры настройки модуля

 

А административной части модуля должны настраиваться следующие параметры:

- ID торговой точки (терминала) в системе Валлет - VARCHAR(255)

- Пароль торговой точки - VARCHAR(255)

- Тип подключения (в настоящий момент доступен только вариант "Бонус") - VARCHAR(255)

- путь отправки HTTP-POST запроса - VARCHAR(255)

Административные операции

- Экспорт транзакций в файл за период.

Выбирается период времени, за который экспортируются данные о транзакциях в файл. Исключительно с целью "ручной сверки" при необходимости.

- Экспорт не отправленных транзакций в файл.

При этом экспортированные операции помечаются как "отправленные, в процессе доставки", но если происходит сеанс связи с сервером - они все равно отправляются в обычном порядке. Т.е. экспорт - это не замена отправки автоматически в общем случае, а подстраховка, на случай отсутствия возможности автоматической передачи.

- Импорт результатов обработки

При импорте разбирается "ответный" XML и статус записей устанавливается результат как будто сеанс связи прошел в автоматическом режиме.

Хранение информации на стороне клиента

На стороне клиента при каждой операции необходимо сохранять следующую информацию:

Номер «Карты»

Момент операции с точностью до секунды

Сумма операции в копейках

ID транзакции в базе торговой точки или номер чека (для возможности проведения сверки).

ID транзакции в базе компании оператора - для возможности проведения сверки

Предпочтительный метод обмена информацией

Непосредственно после совершения торговой операции модуль делает попытку отправить данные на сервер компании оператора.

В отправку входят данные по текущей операции и данные по всем операциям, не отправленным до настоящего момента, оформленные как пакет платежей в соответствии с протоколом передачи.

Если отправка проходит успешно, то переданные записи отмечаются как "отправленные и доставленные".

В случае, если отправка невозможна - данные по текущей транзакции сохраняются для отправки в дальнейшем и помечается как "не отправленные".

Описание протоколов

Протокол Wallet - XML 1.0

Список операций:

Передача информации по платежу

Передача информации по группе платежей

Возврат бонусов

Передача информации по платежу:

Запрос:

<?xml version="1.0" encoding="UTF-8"?>

<request version="1.0">

<merchant>

<id>XXXX</id>

<signature>YYYY</signature>

</merchant>

<data>

<oper>payment</oper>

<payment id="QQQQ">

<cardnumber >ZZZZZZZZZZZZZ</cardnumber>

<timestamp>YYYYMMDDHHmmSS</timestamp>

<sum>0000000</sum>

</payment>

</data>

</request>

Где:

XXXX – уникальный идентификатор торговой точки,

YYYY – «цифровая подпись»,текстовая 16-ричная строка, вычисляемая по формуле:

Signature=sha1(DATA+PASSWORD).

DATA = участок запроса от тега <data> включая его, и до тега </data> включая его, из которой удалены все символы пробелов, табуляций, возврата каретки и перевода строки (\t\r\n).

PASSWORD = строка пароля торговой точки

DATA+PASSWORD – конкатенация строк.

QQQQ – уникальный идентификатор платежа в системе торговой точки. (ID в базе или что угодно позволяющее проводить сверку при необходимости)

ZZZZZZZZZZZZZ – номер «Карты»

0000000 – сумма покупки в копейках.

Ответ:

<?xml version="1.0" encoding="UTF-8"?>

<request version="1.0">

<merchant>

<id>XXXX</id>

<signature>YYYY</signature>

</merchant>

<data>

<payment id="QQQQ">

<result>ERROR_CODE</result>

<check>WALLET_CHECK_NUMBER</check>

</payment>

</data>

</request>

Где:

XXXX – уникальный идентификатор торговой точки,

YYYY – «цифровая подпись»,текстовая 16 ричная строка, вычисляемая по формуле:

Signature=sha1(DATA+PASSWORD).

DATA = участок запроса от тега <data> включая его, и до тега </data> включая его, из которой удалены все символы пробелов, табуляций, возврата каретки и перевода строки (\t\r\n).

PASSWORD = строка пароля торговой точки

DATA+PASSWORD – конкатенация строк.

QQQQ – уникальный идентификатор платежа в системе торговой точки. (ID в базе или что угодно позволяющее проводить сверку при необходимости)

ERROR_CODE - 0 или код ошибки, если больше 0

WALLET_CHECK_NUMBER - уникальный идентификатор операции в базе компании оператора

Передача информации по блоку платежей:

Запрос:

<?xml version="1.0" encoding="UTF-8"?>

<request version="1.0">

<merchant>

<id>XXXX</id>

<signature>YYYY</signature>

</merchant>

<data>

<oper>payblock</oper>

<payments>

<payment id="QQQQ1">

<cardnumber >ZZZZZZZZZZZZZ</cardnumber>

<timestamp>YYYYMMDDHHmmSS</timestamp>

<sum>0000000</sum>

</payment>

...

<payment id="QQQQN">

<cardnumber >ZZZZZZZZZZZZZ</cardnumber>

<timestamp>YYYYMMDDHHmmSS</timestamp>

<sum>0000000</sum>

</payment>

</payments>

</data>

</request>

Где:

XXXX – уникальный идентификатор торговой точки,

YYYY – «цифровая подпись»,текстовая 16-ричная строка, вычисляемая по формуле:

Signature=sha1(DATA+PASSWORD).

DATA = участок запроса от тега < payments > включая его, и до тега </ payments > включая его из которой удалены все символы пробелов, табуляций, возврата каретки и перевода строки (\t\r\n).

PASSWORD = строка пароля торговой точки

DATA+PASSWORD – конкатенация строк.

QQQQ1,…,QQQQN – уникальные идентификаторы платежей в системе торговой точки. (ID в базе или что угодно позволяющее проводить сверку при необходимости)

ZZZZZZZZZZZZZ – номер «Карты»

0000000 – сумма покупки в копейках.

Ответ:

<?xml version="1.0" encoding="UTF-8"?>

<request version="1.0">

<merchant>

<id>XXXX</id>

<signature>YYYY</signature>

</merchant>

<data>

<payment id=”QQQQ1”>

<result>ERROR_CODE</result>

<check>WALLET_CHECK_NUMBER</check>

</payment>

...

<payment id=”QQQQN”>

<result>ERROR_CODE</result>

<check>WALLET_CHECK_NUMBER</check>

</payment>

</data>

</request>

XXXX – уникальный идентификатор торговой точки,

YYYY – «цифровая подпись»,текстовая 16-ричная строка, вычисляемая по формуле:

Signature=sha1(DATA+PASSWORD).

DATA = участок запроса от тега < data > включая его, и до тега </ data > включая его из которой удалены все символы пробелов, табуляций, возврата каретки и перевода строки (\t\r\n).

PASSWORD = строка пароля торговой точки

DATA+PASSWORD – конкатенация строк.

QQQQ1,…,QQQQN – уникальные идентификаторы платежей в системе торговой точки. (ID в базе или что угодно позволяющее проводить сверку при необходимости)

ERROR_CODE - 0 или код ошибки, если больше 0

WALLET_CHECK_NUMBER - уникальный идентификатор операции в базе компании оператора

Возврат бонусов

Запрос:

<?xml version="1.0" encoding="UTF-8"?>

<request version="1.0">

<merchant>

<id>XXXX</id>

<signature>YYYY</signature>

</merchant>

<data>

<oper>bonusback</oper>

<payment id="QQQQ">

<timestamp>YYYYMMDDHHmmSS</timestamp>

<sum>0000000</sum>

</payment>

</data>

</request>

Где:

XXXX – уникальный идентификатор торговой точки,

YYYY – «цифровая подпись»,текстовая 16-ричная строка, вычисляемая по формуле:

Signature=sha1(DATA+PASSWORD).

DATA = участок запроса от тега <data> включая его, и до тега </data> включая его, из которой удалены все символы пробелов, табуляций, возврата каретки и перевода строки (\t\r\n).

PASSWORD = строка пароля торговой точки

DATA+PASSWORD – конкатенация строк.

QQQQ – уникальный идентификатор платежа в системе торговой точки. (ID в базе или что угодно позволяющее проводить сверку при необходимости)

0000000 – сумма покупки в копейках.

Если сумма равна 0, то выполняется удаление транзакции из системы компании оператора.

Ответ:

<?xml version="1.0" encoding="UTF-8"?>

<request version="1.0">

<merchant>

<id>XXXX</id>

<signature>YYYY</signature>

</merchant>

<data>

<payment id="QQQQ">

<result>ERROR_CODE</result>

<check>WALLET_CHECK_NUMBER</check>

</payment>

</data>

</request>

Где:

XXXX – уникальный идентификатор торговой точки,

YYYY – «цифровая подпись»,текстовая 16-ричная строка, вычисляемая по формуле:

Signature=sha1(DATA+PASSWORD).

DATA = участок запроса от тега <data> включая его, и до тега </data> включая его, из которой удалены все символы пробелов, табуляций, возврата каретки и перевода строки (\t\r\n).

PASSWORD = строка пароля торговой точки

DATA+PASSWORD – конкатенация строк.

QQQQ – уникальный идентификатор платежа в системе торговой точки. (ID в базе или что угодно позволяющее проводить сверку при необходимости)

ERROR_CODE - 0 или код ошибки, если больше 0

WALLET_CHECK_NUMBER - уникальный идентификатор операции в базе компании оператора.

В случае, если заказывается удаление транзакции то WALLET_CHECK_NUMBER возвращается == 0

 

Обновлено 08.04.2010 14:26