Для существующих интеграций драйвер cvauHttp.dll устарел, его поддержка ограничена. Вместо него рекомендуем использовать драйвер cvhttpv2.dll.

Для новых интеграций весь этот протокол устарел. Вместо этого рекомендуем использовать текущий протокол драйвера UniCV.dll.

Версии

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

Драйвер берет версию протокола из третьего числа версии драйвера.

Список версий:

  • 7.13.50.0: поддерживается поле PaymentSystem (переводится в поле Owner)

Настройки 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: запрос

POST http://127.0.0.1:1220/authcall.xml/authpay.xml
POST http://127.0.0.1:1220/authcall.xml/voidpay.xml
POST http://127.0.0.1:1220/authcall.xml/confpay.xml

<?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>
  <PaymentSystem>VISA</PaymentSystem>
  <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>
    <PaymentSystem>VISA</PaymentSystem>
    <MyPay myAmount="10000"/>
  </Tip>
</ConfPayResponse>
CODE
  • Корневой узел имеет одно из следующих значений: AuthPayResponse, ConfPayResponse, VoidPayResponse
  • OpResult результат операции, по умолчанию 1
    • 1 — операция прошла успешно
    • 0 — возникла ошибка
  • ActionID, CardCode, AuthCode, AuthInfo: платежные данные, будут доступны при последующих обращениях к confpay.xml или authpay.xml в блоке auXML. Эти данные также храняться в базе данных r_keeper и доступны в отчетах
  • PaymentSystem: с 7.13.50.0, платежная система (VISA, Mastercard, ...)
  • PrinterT: текст для печати
  • DisplayT: сообщение для отображения
  • ConfPrnT: флаг подтверждения — требуется сообщение с подтверждение печати чека.

GetMenuList: запрос

POST http://127.0.0.1:1220/authcall.xml/getmenulist.xml

<?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: запрос

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

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

CancelPay: запрос

POST http://127.0.0.1:1220/authcall.xml/CancelPay.xml

<?xml version="1.0" encoding="utf-8"?>
<CancelPay version="2">
    <SrcID cashguid="{A776FBF7-F9B3-4E14-946E-AB717BA4884B}" servguid="{C31D76A2-09EC-419F-9EA8-7AB85D7446F8}" restguid="{FC1BBB36-4D7F-4EF9-80C2-33B78ADBDB6A}" fullcode="016470001"/>
</CancelPay>
CODE

CancelPay: ответ

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

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

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. CancelPay.xml запрос: отмена транзакций AuthPay / ConfPay / VoidPay

  • Драйвер отправляет этот отдельный запрос на сервер во время выполнения запроса AutoPay/ConfPay/VoidPay, если оператор нажимает кнопку Отмена.

  • Сервер отвечает на запрос CancelPay ответом CancelPayResponse.
  • Сервер прерывает транзакцию AuthPay, если это возможно. Сервер отправляет ответ AuthPayResponse, содержащий: OpResult не равный «1» и сообщение на экран в параметре DisplayT.
  • Если сервер не может прервать транзакцию AuthPay, то он продолжает ее.
  • Кнопка Отмена на форме Печать по умолчанию скрыта. Чтобы включить ее, необходимо включить копию формы в схему печати, в которой нужно включить флаг видимости для этой кнопки.
  • Если сервер не может выполнить требуемую операцию, он должен вернуть код ошибки HTTP с описанием

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

POST http://127.0.0.1:1220/authcall.xml/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

6. 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

7. 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

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

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