Чек в заказе
Чек передается в авторизационном запросе . Для этого необходимо в запросе передать дополнительный параметр ChequeItems, в котором передаётся структура в формате JSON, как в следующем примере.
Пример структуры чека в параметре ChequeItems:
{"items":[ {"id": 1, "name": "Первый товар", "price": 201.45, "quantity": 42.345, "amount": 8530.40, "tax": "vat10", "subjtype": 1, "fpmode": 1}, {"id": 2, "name": "Второй товар", "price": 15301.01, "quantity": 0.128, "amount": 1958.53, "tax": "vat20", "fpmode": 1} ]}
В структуре передаются следующие параметры позиций чека:
Название | Обязательное поле | Тип значения | Описание |
id | Да | int | Позиция в чеке (уникальное число для чека) |
name | Да | string(128) | Наименование товара |
price | Да | float(10.2) | Стоимость единицы товара (услуги) |
quantity | Да | float | Количество/объем товара/услуги в единицах измерения товара (может быть дробным числом) |
measure | Нет1 | string(25) | |
amount | Да | float(15.2) | Стоимость позиции price*quantity |
tax | Да2 | string(10) | |
eancode | Нет3 | string(14) | EAN-8/UPC-E, EAN-13/UPC-A, ITF-14 код маркировки товара |
gs1code | Нет3 | string(120) | GS1 DataMatrix/"Честный Знак" код маркировки товара |
furcode | Нет3 | string(20) | Код маркировки мехового изделия в формате СС-DDDDDD-СССССССССС (C-символ, D-цифра) |
uncode | Нет3 | string(30) | Неопознанный код маркировки товара |
productmarkinguuid | Да/Нет4 | string(255) | Идентификатор запроса, полученный предприятием от системы маркировки «Честный знак» во время проверки товара. |
productmarkingtimestamp | Да/Нет4 | int | Время запроса, полученное предприятием от системы маркировки «Честный знак». |
productmarkingfoiv | Да/Нет4 | string(3) | Идентификатор ФОИВ |
productmarkingdocdate | Да/Нет4 | string(DD.MM.YYYY) | Дата документа основания |
productmarkingdocid | Да/Нет4 | string(32) | Номер документа основания |
subjtype | Нет5 | int | Признак предмета расчета |
fpmode | Нет2 | int | |
AgentMode | Нет | int | Признак агента по предмету расчета |
TransferOperatorPhone | Нет | string(19) | Телефон оператора перевода |
TransferOperatorName | Нет | string(64) | Наименование оператора перевода |
TransferOperatorAddress | Нет | string(256) | Адрес оператора перевода |
TransferOperatorINN | Нет | string(12) | ИНН оператора перевода |
PaymentReceiverOperatorPhone | Нет | string(19) | Телефон оператора по приёму платежей |
PaymentAgentOperation | Нет | string(24) | Операция платёжного агента |
PaymentAgentPhone | Нет | string(19) | Телефон платёжного агента |
SupplierPhone | Нет | string(19) | Телефон поставщика |
SupplierName | Нет | string(64) | Наименование поставщика |
SupplierINN | Нет | string(12) | ИНН поставщика |
Excise | Нет | number(15,2) | Акциз |
CountryOfOrigin | Нет | string(3) | Код страны происхождения товара |
NumberOfCustomsDeclaration | Нет | string(32) | Номер таможенной декларации |
LineAttribute | Нет | string(64) | Дополнительный реквизит предмета расчета |
Discount | Нет | string(25) | Размер скидки по позиции (для информирования покупателя) |
1Параметр может заполняться только для ФФД 1.2.
2Параметры tax и fpmode не передаются в запросе на отмену или возврат средств.
3Только один из этих кодов маркировки товара может быть передан в позиции чека, передача нескольких кодов недопустима. Внимание! Для формата фискальных данных версии 1.2 не разрешается передавать неопознанный код маркировки товара uncode, следует использовать только один из распознаваемых кодов маркировки (eancode, gs1code или furcode).
4Параметр обязателен для маркированных товаров, подлежащих обязательной проверке перед продажей. Для обсуждения возможности использования параметра следует обратиться в службу поддержки support@assist.ru.
5Параметр является обязательным для формата фискальных данных версии 1.2
Значения параметров price и amount всех позиций в чеке должны быть в одной валюте, и эта валюта должна совпадать с валютой заказа (параметр OrderCurrency в авторизационном запросе).
Сумма всех позиций чека (по параметру amount) должна быть равна сумме заказа (параметр OrderAmount в авторизационном запросе).
Если указанные выше условия не соблюдаются, чек признается неверным и происходит ошибка авторизационного запроса.
Пример структуры чека в случае наличия в заказе маркированных товаров, подлежащих обязательной проверке перед продажей
{"items":[ {"id": 1, "name": "Первый товар", "price": 201.45, "quantity": 42.345, "amount": 8530.40, "gs1code": "<код маркировки GS1 DataMatrix/"Честный Знак">", "productmarkinguuid": "<идентификатор запроса>", "productmarkingtimestamp": "1692691702065" "tax": "vat10", "subjtype": 1, "fpmode": 1}, {"id": 2, "name": "Второй товар", "price": 15301.01, "quantity": 0.128, "amount": 1958.53, "tax": "vat20", "fpmode": 1} ]}
Чек при подтверждении
При двустадийном механизме работы финансовое подтверждение интернет-магазин может осуществить в течение 4 дней в Личном кабинете либо с помощью веб-сервиса.
Для подтверждения оплаты нужно отправить запрос на сервер АПК Ассист методом HTTP POST или SOAP (в кодировке UTF-8).
URL запроса для передачи финансового подтверждения и список параметров запроса подтверждения оплаты совпадают с указанными здесь. Для передачи чека подтверждения в запросе HTTP POST добавляется лишь дополнительный параметр ChequeItems, в котором передаётся структура в формате JSON, как в следующем примере.
Пример структуры чека в параметре ChequeItems:
{"items":[ {"id": 1, "name": "Первый товар", "price": 201.45, "quantity": 21.12, "amount": 8530.40, "tax": "vat10", "fpmode": 1} {"id": 2, "name": "Второй товар", "price": 15301.01, "quantity": 0.064, "amount": 979.26, "tax": "vat20", "fpmode": 1} ]}
Для передачи чека подтверждения в SOAP запросе добавляется лишь дополнительная повторяющаяся структура ChequeItem, в которой передаются позиции чека, как в следующем примере.
Пример структуры позиций чека ChequeItem:
<chequeitem> <id>1</id> <name>Первый товар</name> <price>201.45</price> <quantity>21.12</quantity> <amount>8530.40</amount> <tax>vat10</tax> <fpmode>1</fpmode> </chequeitem> <chequeitem> <id>2</id> <name>Первый товар</name> <price>15301.01</price> <quantity>0.064</quantity> <amount>979.26</amount> <tax>vat20</tax> <fpmode>1</fpmode> </chequeitem>
Подтверждение может быть проведено как на всю сумму оплаты, так и на часть суммы. Допускается совершение частичного подтверждения на сумму, не превышающую суммы оплаты, если операция оплаты по кредитной карте была совершена через процессинг, имеющий соответствующие настройки.
Чек подтверждения может содержать все или часть позиций, которые присутствовали в чеке оплаты.
Для каждой позиции чека подтверждения параметры id, name, price должны быть безусловно эквивалентны этим параметрам соответствующей позиции чека оплаты.
Сумма параметров amount всех позиций чека подтверждения должна быть равна сумме подтверждения из поля Amount запроса на подтверждение.
В случае подтверждения на полную сумму не обязательно передавать набор структур ChequeItem соответствующий всему чеку, переданному в заказе. Для подтверждения на полную сумму чек не является обязательным.
Чек в отмене
Отмена отдельных позиций чека может быть выполнена оператором в личном кабинете или посредством обращения к веб-сервису cancel (в формате POST) или wscancel (в формате SOAP).
Для отмены оплаты по отдельным позициям чека через веб-сервис нужно выполнить запрос (в кодировке UTF-8) к серверу АПК Ассист.
URL запроса для отмены или возврата средств и список параметров запроса отмены оплаты совпадают с указанными здесь значениями . Для передачи чека отмены добавляется лишь повторяющаяся структура ChequeItem, в которой передаются позиции чека, как в следующем примере.
Пример структуры позиции чека ChequeItem:
<chequeitem> <id>1</id> <name>Первый товар</name> <price>201.45</price> <quantity>21.12</quantity> <amount>8530.40</amount> <tax>vat20</tax> </chequeitem>
В случае проведения отмены на полную сумму не обязательно передавать набор структур ChequeItem соответствующий всему чеку, переданному в заказе. Для отмены на полную сумму чек не является обязательным.
Чек отмены может содержать все или часть позиций, которые присутствовали в чеке оплаты или в чеке подтверждения при двустадийном механизме работы.
Для каждой позиции чека отмены параметры id, name, price должны быть безусловно эквивалентны этим параметрам соответствующей позиции чека оплаты или чека подтверждения при двустадийном механизме работы.
Сумма параметров amount всех позиций чека отмены должна быть равна сумме отмены из поля Amount запроса на отмену.
Для каждой позиции чека отмены значения параметров quantity и amount не должны быть больше, чем значения соответствующих параметров quantity и amount чека оплаты или чека подтверждения (при двустадийном механизме работы) с учетом значений параметров quantity и amount по этой позиции из уже проведенных ранее отмен.
Значения параметров price и amount всех позиций в чеке должны быть в одной валюте, и эта валюта должна совпадать с валютой запроса (параметр Currency в запросе).
Если указанные выше условия не соблюдаются, чек признается неверным и происходит ошибка запроса.
Чек в рекуррентных платежах
Для инициации рекуррентного платежа необходимо в первоначальном запросе на авторизацию передать значение параметра RecurringIndicator=1 и значения параметров, задающих диапазон сумм последующих рекуррентных платежей, периодичность оплат (в днях) и дату окончания подписки.
Затем с указанной периодичностью предприятие инициирует платеж, задавая сумму, а необходимая платежная информация (данные кредитной карты) берется из первоначальной оплаты.
URL запроса для рекуррентного платежа и список параметров запроса совпадают с указанными здесь значениями .
Для передачи чека рекуррентного платежа в запросе HTTP POST добавляется лишь дополнительный параметр ChequeItems, в котором передаётся структура в формате JSON, как в следующем примере.
Пример структуры чека в параметре ChequeItems:
{"items":[ {"id": 1, "name": "Первый товар", "price": 201.45, "quantity": 21.12, "amount": 8530.40, "tax": "vat10", "fpmode": 1} {"id": 2, "name": "Второй товар", "price": 15301.01, "quantity": 0.064, "amount": 979.26, "tax": "vat20", "fpmode": 1} ]}
Для передачи чека рекуррентного платежа в SOAP запросе добавляется лишь повторяющаяся структура ChequeItem, в которой передаются позиции чека, как в следующем примере.
Пример структуры позиций чека ChequeItem:
<chequeitem> <id>1</id> <name>Первый товар</name> <price>201.45</price> <quantity>21.12</quantity> <amount>8530.40</amount> <tax>vat10</tax> <fpmode>1</fpmode> </chequeitem> <chequeitem> <id>2</id> <name>Первый товар</name> <price>15301.01</price> <quantity>0.064</quantity> <amount>979.26</amount> <tax>vat20</tax> <fpmode>1</fpmode> </chequeitem>