Код виджета собирает конструктор, и руками его писать не нужно. Этот справочник — для случаев, когда код правят: подставляют номер заказа из своей системы, меняют состав на лету или разбираются, почему форма ведёт себя не так. Звёздочкой отмечено то, что в коде есть всегда.
Параметры init
Всё, что виджет знает о заказе, лежит в объекте, который передаётся в InvoiceBoxWidget…init({…}).
Параметр
Что задаёт
widget_id *
Идентификатор экземпляра виджета: время сборки и случайная цифра. Тот же идентификатор стоит в `id` контейнера
Покупатель выбирает одну позицию из списка вместо оплаты всего состава
widget_css_external
Адрес своего файла стилей для формы виджета
widget_target_blank
Открывать форму в новой вкладке
itransfer_language_id
Язык формы
itransfer_participant_id *
Идентификатор магазина из личного кабинета
itransfer_person_name *
Имя плательщика, если оно известно заранее. Пустая строка — покупатель введёт сам
itransfer_person_email *
Электронная почта плательщика, если известна заранее
itransfer_person_phone *
Телефон плательщика, если известен заранее
itransfer_order_id *
Ваш номер заказа: по нему вы узнаете платёж в своей системе
itransfer_participant_ident *
Региональный код магазина из личного кабинета
itransfer_url_return
Куда вернуть покупателя после оплаты — успешной или нет
itransfer_url_returnsuccess
Куда вернуть покупателя только после успешной оплаты
Аргументы вызова
Аргумент
Что задаёт
параметры
Объект из таблицы выше
ширина
Ширина кадра в пикселях. Конструктор и сервер отдают 600
высота
Всегда `auto`: кадр подстраивается под содержимое
контейнер
Идентификатор элемента `div`, в который встанет виджет
Состав заказа
Позиции складываются в массив, сериализуются в JSON, сжимаются алгоритмом deflate и кодируются base64 — результат и есть значение widget_goods. Порядок полей в позиции важен: его ждёт принимающая сторона.
Поле позиции
Что задаёт
type *
`service` — услуга, `commodity` — товар
name *
Название позиции, его увидит покупатель и бухгалтерия
measure *
Единица измерения: шт, усл, кг
quantity *
Количество
price *
Цена за единицу, строкой с двумя знаками после точки
Состав приходит из браузера покупателя и не подписан — его можно изменить до отправки. Получив уведомление об оплате, сверяйте сумму с той, которую ожидали: Безопасность виджета.
Надпись на кнопке — widget_button_type
Значение
Что означает
1
Оплатить
2
Купить
3
Пополнить
4
Пожертвовать
Название оплачиваемого — widget_order_type
Значение
Что означает
1
Заказ
2
Договор
3
Бронирование
4
Счёт
Тип плательщика — widget_person_type
Значение
Что означает
1
Физическое лицо
2
Организация или ИП
3
Клиент выбирает сам
Поля покупателя — widget_addfields
Значение
Что означает
person_name
Имя плательщика
person_email
Электронная почта
person_phone
Телефон
participant_order_id
Номер заказа
quantity
Количество
Ставка НДС — vat в позиции состава
Значение
Что означает
12
22 %
4
10 %
10
7 %
9
5 %
5
0 %
6
Не облагается
Ссылка QR-режима
Тот же заказ можно передать не кодом на странице, а ссылкой — например, показать её QR-кодом на кассе. Адрес начинается с https://widget.invoicebox.ru/?smpspg=qr, дальше идут параметры.
Параметр
Что задаёт
g *
Состав заказа — та же упаковка, что и в `widget_goods`
Некоторые конструкторы сайтов не принимают многострочный код. Для них тот же код отдаётся одной строкой: переносы убраны, повторяющиеся пробелы сжаты — на поведение это не влияет. Где и как вставлять — в инструкции по вставке.
Идентификатор магазина и региональный код берутся в личном кабинете. Если сумму и состав определяет только ваш сервер, надёжнее создавать заказы через API — виджет и API работают с одним и тем же магазином.