Версии

В каждой команде и ответе должна быть указана максимальная поддерживаемая версия протокола.

Необязательный тег Tip версии 2 добавлен в AuthPayResponse, ConfPay. Его можно добавить, только если версия 2 содержит атрибут version в AuthPay.

Настройки r_keeper 7

Для включения подсказок заполните параметр TipChargeForAuthTerminal Подсказки для терминала авторизации.

Описание драйвера AUHTTP

  1. При каждой аутентификации будут создаваться HTTP-запрос к адресу, например: https://127.0.0.1:1212/authtest/authpay.xml,  https://127.0.0.1:1212/authtest/confpay.xml, и т.д.
  2. Сделайте этот запрос, заполнив необходимые параметры. Подробнее читайте в примерах ниже.

Настройка драйвера AUHTTP

Описание формата данных XML

AuthPay/ConfPay/VoidPay: запрос

<?xml version="1.0" encoding="utf-8"?>
<ConfPay version="1">
    <SrcID cashguid="{A776FBF7-F9B3-4E14-946E-AB717BA4884B}" servguid="{C31D76A2-09EC-419F-9EA8-7AB85D7446F8}" restguid="{FC1BBB36-4D7F-4EF9-80C2-33B78ADBDB6A}" fullcode="016470001"/>
    <Order/>
    <MyPay myAmount="288000"/>
    <auXML>
        <ActionID>1</ActionID>
        <CardCode>SomeText</CardCode>
        <AuthCode>AuthCode</AuthCode>
        <AuthInfo>AuthInfo</AuthInfo>
    </auXML>
  <!-- Optional Tip in ConfPay and VoidPay from version 2, only if Tip was returned in AuthPayResponse-->
  <Tip>
    <MyPay myAmount="10000"/>
    <auXML>
        <ActionID>56014</ActionID>
        <AuthCode>AuthCode</AuthCode>
        <AuthInfo>AuthInfo</AuthInfo>
        <CardCode>5536 91.. .... ....</CardCode>
    </auXML>
  </Tip>
</ConfPay>
CODE
  • SrcID: информация об источнике — ресторан/сервер/касса и т.д.
  • Order: содержимое заказа — в приведенном примере заказ пуст
  • MyPay: информация о сумме, валюта будет добавлена ​​позже
  • auXML: вызов информации о предыдущих платежах — для отмены/подтверждения платежа

AuthPay/ConfPay/VoidPay: ответ

<?xml version="1.0" encoding="utf-8"?>
<!-- AuthPayResponse, ConfPayResponse, VoidPayResponse according to request main tag-->
<ConfPayResponse version="1">
  <OpResult>1</OpResult>
  <ActionID>56014</ActionID>
  <CardCode>SomeText</CardCode>
  <AuthCode>AuthCode</AuthCode>
  <AuthInfo>AuthInfo</AuthInfo>
  <PrinterT>
        <Unfiscal CutAfter="1">
            <TextLine Text="--------------------------------" />
            <TextLine Text="    MOKĖJIMO KORTELĖS KVITAS" />
            <TextLine Text="TERMINALO NR.:          TMM01651" />
            <TextLine Text="PREKYBININKO NR.:        0001651" />
            <TextLine Text="MAESTRO  (C)" />
            <TextLine Text="" />
            <TextLine Text="676515******0400" />
            <TextLine Text="BYLA: 000007    KVITO NR: 122381" />
            <TextLine Text="DATA: 2015.08.18   LAIKAS: 12:08" />
            <TextLine Text="RRN: 523012077523 AUT.K.: 851840" />
            <TextLine Text="AID: A0000000043060 APP: MAESTRO" />
            <TextLine Text="TC:  BD67A2DC2F76C234" />
            <TextLine Text="TVR: 0800008000      TSI:   E800" />
            <TextLine Text="           PARDAVIMAS" />
            <TextLine Text="" />
            <TextLine Text="SUMA:                   1.16 EUR" />
            <TextLine Text="" />
            <TextLine Text="  PIN KODAS ĮVESTAS TEISINGAI" />
            <TextLine Text="" />
            <TextLine Text="          PATVIRTINTA" />
            <TextLine Text="" />
            <TextLine Text="IŠSAUGOKITE ČEKĮ, KAD GALĖTUMĖTE" />
            <TextLine Text="" />
            <TextLine Text="  PATIKRINTI SĄSKAITOS IŠRAŠĄ" />
            <TextLine Text="--------------------------------" />
            <TextLine Text="" />
        </Unfiscal>
    </PrinterT>
  <DisplayT>Show me on Display</DisplayT>
  <ConfPrnT>0</ConfPrnT>
  <!-- Tip from version 2, only if 2+ in ConfPay/@version -->
  <Tip>
    <ActionID>56014</ActionID>
    <AuthCode>AuthCode</AuthCode>
    <CardCode>5536 91.. .... ....</CardCode>
    <AuthInfo>AuthInfo</AuthInfo>
    <MyPay myAmount="10000"/>
  </Tip>
</ConfPayResponse>
CODE
  • Корневой узел имеет одно из следующих значений: AuthPayResponse, ConfPayResponse, VoidPayResponse
  • OpResult результат операции, по умолчанию 1
    • 1 — операция прошла успешно
    • 0 — возникла ошибка
  • ActionID, CardCode, AuthCode, AuthInfo: платежные данные, будут доступны при последующих обращениях к confpay.xml или authpay.xml в блоке auXML. Эти данные также храняться в базе данных r_keeper и доступны в отчетах
  • PrinterT: текст для печати
  • DisplayT: сообщение для отображения
  • ConfPrnT: флаг подтверждения — требуется сообщение с подтверждение печати чека.

GetMenuList: запрос

<?xml version="1.0" encoding="utf-8"?>
<GetMenuList version="2"/>
CODE

GetMenuList: ответ

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

<GetMenuListResponse version="2">
  <MENU>
    <MENUITEM caption="Menu 1" operationId="{607D07C9-42E9-4F92-B8AD-7AE051D4AB15}" parameter="12345" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}" userRight="{E3F2D792-1AC5-46D0-B53F-250FD8C3C189}"/>
    <MENUITEM caption="Menu 2 - with submenu">
      <MENUITEM caption="Menu 2: SubMenu 1" operationId="{B012B4DD-3ED9-422C-A28E-D0BF0152F931}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
      <MENUITEM caption="Menu 2: SubMenu 2">
        <MENUITEM caption="Menu 2: SubMenu 2: SubSubMenu 1" operationId="{59D8C6CA-809D-45B6-9D4E-0D7CCC21569A}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
        <MENUITEM caption="Menu 2: SubMenu 2: SubSubMenu 2" operationId="{56A61F0A-13A9-4FD2-A328-D41893576A3A}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
        <MENUITEM caption="Menu 2: SubMenu 2: SubSubMenu 3" operationId="{2D551616-229A-4EAA-A333-8F06D926F70D}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
      </MENUITEM>
      <MENUITEM caption="Menu 2: SubMenu 3">
        <MENUITEM caption="Menu 2: SubMenu 3: SubSubMenu 1">
          <MENUITEM caption="Menu 2: SubMenu 3: SubSubMenu 1: SubSubSubMenu: 1" operationId="{0E2F7D7F-8AE1-4F55-937A-4445C30AB1D0}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
          <MENUITEM caption="Menu 2: SubMenu 3: SubSubMenu 1: SubSubSubMenu: 2" operationId="{B7C5A6D9-5E43-4159-9C8D-ADBF1B26EC18}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
        </MENUITEM>
      </MENUITEM>
    </MENUITEM>
    <MENUITEM caption="Menu 3 - with dialogs">
      <MENUITEM caption="Menu 3: SubMenu 1 with  dialog DateInterval" operationId="{47704B77-5D7A-4B66-9250-DC37238095B1}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="DateInterval" caption="Enter date interval"/>
      </MENUITEM>
      <MENUITEM caption="Menu 3: SubMenu 2 with  dialog NumberInterval" operationId="{51EC80F4-3612-4828-9330-6BDD814D7678}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="NumberInterval" caption="Enter number interval"/>
      </MENUITEM>
      <MENUITEM caption="Menu 3: SubMenu 3 with  dialog OneDate" operationId="{773B5388-9C30-4878-B338-6D37EEAC8576}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="OneDate" caption="Enter date"/>
      </MENUITEM>
      <MENUITEM caption="Menu 3: SubMenu 4 with  dialog OneNumber" operationId="{29A0D2FC-19CB-40F2-B2ED-02699D7CEB5F}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="OneNumber" caption="Enter number"/>
      </MENUITEM>
    </MENUITEM>
  </MENU>
</GetMenuListResponse>
CODE

ExecMenuItem: запрос

<?xml version="1.0" encoding="utf-8"?>
<ExecMenuItem version="2">
    <OperationId>{607D07C9-42E9-4F92-B8AD-7AE051D4AB15}</OperationId>
    <Parameter>12345</Parameter>
</ExecMenuItem>
XML

ExecMenuItem: ответ

<?xml version="1.0" encoding="utf-8"?>
<ExecMenuItemResponse version="2">
  <OpResult>1</OpResult>
  <PrinterT>
        <Unfiscal CutAfter="1">
            <TextLine Text="----Unfiscal doc 1 header-------"/>
            <TextLine Text="Some unfiscal 1 text line 1     "/>
            <TextLine Text="Some unfiscal 1 text line 2     "/>
            <TextLine Text=""/>
        </Unfiscal>
        <Unfiscal CutAfter="1">
            <TextLine Text="----Unfiscal doc 2 header-------"/>
            <TextLine Text="Some unfiscal 2 text line 1     "/>
            <TextLine Text="Some unfiscal 2 text line 2     "/>
            <TextLine Text="Some unfiscal 2 text line 3     "/>
            <TextLine Text="Some unfiscal 2 text line 4     "/>
            <TextLine Text="Some unfiscal 2 text line 5     "/>
            <TextLine Text=""/>
        </Unfiscal>
  </PrinterT>
  <DisplayT>Show me on Display</DisplayT>
</ExecMenuItemResponse>
XML

Пример сценария взаимодействия

1. authpay.xml: запрос авторизации

  • Сервер должен использовать узел MyPay из документа AuthPay, чтобы определить необходимую сумму
  • В случае успешного выполнения сервер должен установить значение для OpResult (версия 4+) и заполнить параметры CardCode, AuthCode, AuthInfo, ActionID
  • Сервер может установить параметр ConfPrnT, если на кассовых станциях требуется сообщение с подтверждением печати чека
  • Сервер может установить параметр PrinterT, если требуется печать дополнительного текста
  • Если сервер не может выполнить требуемую операцию, он должен установить значение 0 для OpResult и заполнить параметр DisplayT или вернуть код ошибки HTTP с описанием.

2. confpay.xml: запрос подтверждения

  • Сервер должен использовать узел MyPay из документа AuthPay, чтобы определить необходимую сумму
  • Сервер может использовать данные узла auXML для идентификации транзакции. Этот блок будет содержать значения, полученные при вызове авторизации
  • В случае успешного выполнения сервер должен установить значение для OpResult (версия 4+) и заполнить параметры CardCode, AuthCode, AuthInfo, ActionID, если какие-либо из них были изменены с момента авторизации
  • Сервер может использовать данные узла auXML для идентификации транзакции. Этот блок будет содержать значения, полученные при вызове авторизации
  • Сервер может установить параметр ConfPrnT, если на кассовых станциях требуется сообщение с подтверждением печати чека
  • Сервер может установить параметр PrinterT, если требуется печать дополнительного текста
  • Если сервер не может выполнить требуемую операцию, он должен установить значение 0 для OpResult и заполнить параметр DisplayT или вернуть код ошибки HTTP с описанием.

3. voidpay.xml: запрос отмены

  • Сервер должен использовать данные узла auXML для идентификации транзакции. Этот блок будет содержать значения, полученные при вызове авторизации
  • Сервер должен использовать узел MyPay из документа AuthPay, чтобы определить необходимую сумму
  • В случае успешного выполнения сервер должен установить значение для OpResult (версия 4+) и заполнить параметры CardCode, AuthCode, AuthInfo, ActionID, если какие-либо из них были изменены с момента авторизации
  • Сервер может установить параметр PrinterT, если требуетсяпечать дополнительного текста
  • Если сервер не может выполнить требуемую операцию, он должен установить значение 0 для OpResult и заполнить параметр DisplayT или вернуть код ошибки HTTP с описанием.

4. doshift.xml: запрос итога по сменам

При закрытии общей смены, драйвер вызовет doshift.xml со следующими данными:

<?xml version="1.0" encoding="utf-8"?>
<DoShift version="1">
    <SrcID cashguid="{4E4C529F-88EF-4BFF-A8C4-9C3D9524BC42}" servguid="{F64F66DA-5463-46A0-BDCD-97DE92026F0E}" restguid="{FC1BBB36-4D7F-4EF9-80C2-33B78ADBDB6A}" fullcode="199990053"/>
</DoShift>
XML

Сервер должен дать ответ вида DoShiftResponse. Не выполняйте никаких действий в это время.

<?xml version="1.0"?>
<DoShiftResponse version="1"/>
  <PrinterT>
        <Unfiscal CutAfter="1">
            <TextLine Text="   START CARD TERMINAL REPORT   "/>
            <TextLine Text="             ...                "/>
            <TextLine Text="   REPORT IN PROGRESS           "/>
            <TextLine Text="             ...                "/>
            <TextLine Text="  FINISH CARD TERMINAL REPORT   "/>
        </Unfiscal>
    </PrinterT>
XML

5. getmenulist.xml: Запрос структуры меню:

POST-запрос к http://127.0.0.1:1220/authcall.xml/getmenulist.xml

<?xml version="1.0" encoding="utf-8"?>
<GetMenuList version="2"/>
XML

Пример ответа:

<?xml version="1.0" encoding="utf-8"?>
<GetMenuListResponse version="2">
  <MENU>
    <MENUITEM caption="Menu 1" operationId="{607D07C9-42E9-4F92-B8AD-7AE051D4AB15}" parameter="12345" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}" userRight="{E3F2D792-1AC5-46D0-B53F-250FD8C3C189}"/>
    <MENUITEM caption="Menu 2 - with submenu">
      <MENUITEM caption="Menu 2: SubMenu 1" operationId="{B012B4DD-3ED9-422C-A28E-D0BF0152F931}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
      <MENUITEM caption="Menu 2: SubMenu 2">
        <MENUITEM caption="Menu 2: SubMenu 2: SubSubMenu 1" operationId="{59D8C6CA-809D-45B6-9D4E-0D7CCC21569A}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
        <MENUITEM caption="Menu 2: SubMenu 2: SubSubMenu 2" operationId="{56A61F0A-13A9-4FD2-A328-D41893576A3A}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
        <MENUITEM caption="Menu 2: SubMenu 2: SubSubMenu 3" operationId="{2D551616-229A-4EAA-A333-8F06D926F70D}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
      </MENUITEM>
      <MENUITEM caption="Menu 2: SubMenu 3">
        <MENUITEM caption="Menu 2: SubMenu 3: SubSubMenu 1">
          <MENUITEM caption="Menu 2: SubMenu 3: SubSubMenu 1: SubSubSubMenu: 1" operationId="{0E2F7D7F-8AE1-4F55-937A-4445C30AB1D0}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
          <MENUITEM caption="Menu 2: SubMenu 3: SubSubMenu 1: SubSubSubMenu: 2" operationId="{B7C5A6D9-5E43-4159-9C8D-ADBF1B26EC18}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}"/>
        </MENUITEM>
      </MENUITEM>
    </MENUITEM>
    <MENUITEM caption="Menu 3 - with dialogs">
      <MENUITEM caption="Menu 3: SubMenu 1 with  dialog DateInterval" operationId="{47704B77-5D7A-4B66-9250-DC37238095B1}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="DateInterval" caption="Enter date interval"/>
      </MENUITEM>
      <MENUITEM caption="Menu 3: SubMenu 2 with  dialog NumberInterval" operationId="{51EC80F4-3612-4828-9330-6BDD814D7678}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="NumberInterval" caption="Enter number interval"/>
      </MENUITEM>
      <MENUITEM caption="Menu 3: SubMenu 3 with  dialog OneDate" operationId="{773B5388-9C30-4878-B338-6D37EEAC8576}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="OneDate" caption="Enter date"/>
      </MENUITEM>
      <MENUITEM caption="Menu 3: SubMenu 4 with  dialog OneNumber" operationId="{29A0D2FC-19CB-40F2-B2ED-02699D7CEB5F}" purposeToLock="{7DA9C7F9-7DAE-462F-9FC5-113E2E3810B2}">
        <DIALOGINFO dialogType="OneNumber" caption="Enter number"/>
      </MENUITEM>
    </MENUITEM>
  </MENU>
</GetMenuListResponse>
XML

6. execmenuitem.xml: Запрос выполнения пункта меню:

POST-запрос к http://127.0.0.1:1220/authcall.xml/execmenuitem.xml

<?xml version="1.0" encoding="utf-8"?>
<ExecMenuItem version="2">
    <OperationId>{607D07C9-42E9-4F92-B8AD-7AE051D4AB15}</OperationId>
    <Parameter>12345</Parameter>
</ExecMenuItem>
XML

Пример ответа:

<?xml version="1.0" encoding="utf-8"?>
<ExecMenuItemResponse version="2">
  <OpResult>1</OpResult>
  <PrinterT>
        <Unfiscal CutAfter="1">
            <TextLine Text="----Unfiscal doc 1 header-------"/>
            <TextLine Text="Some unfiscal 1 text line 1     "/>
            <TextLine Text="Some unfiscal 1 text line 2     "/>
            <TextLine Text=""/>
        </Unfiscal>
        <Unfiscal CutAfter="1">
            <TextLine Text="----Unfiscal doc 2 header-------"/>
            <TextLine Text="Some unfiscal 2 text line 1     "/>
            <TextLine Text="Some unfiscal 2 text line 2     "/>
            <TextLine Text="Some unfiscal 2 text line 3     "/>
            <TextLine Text="Some unfiscal 2 text line 4     "/>
            <TextLine Text="Some unfiscal 2 text line 5     "/>
            <TextLine Text=""/>
        </Unfiscal>
  </PrinterT>
  <DisplayT>Show me on Display</DisplayT>
</ExecMenuItemResponse>
XML
  • Если сервер не может выполнить требуемую операцию, он должен вернуть код ошибки HTTP с описанием.

Обновления и исправления

  1. Недостаточно информации для отмены транзакции:
    Мы добавили раздел auXML с данными CardCode, AuthCode, AuthInfo, ActionID: это позволит вам найти информацию о предыдущей транзакции
  2. Возможность печати и отображения сообщения на экране после авторизации и в случае ошибки на любом этапе работы:
    Мы добавили OpResult для определения результата операции и узлов PrinterT/DisplayT:
    • Если OpResult равен 0, а DisplayT содержит текст: мы покажем сообщение на станции
    • Если PrinterT содержит текст, он будет распечатан на печатающем устройстве
  3. Отключение диалога с подтверждением печати документа: 
    Мы добавили параметр ConfPrnT:
    • 0 — значение по умолчанию
    • Выставите значение 1, если вам нужно подтверждение печати чека.