... {toc:maxLevel=2} h1. Подготовка Заключите договор с онлайн-кассой и получите доступ в личный кабинет. Получите у подержки сервиса все необходимые данные для интеграции с биллингом. h1. Настройка на стороне биллинга h2. У каждого оператора свои настройки интеграции онлайн-кассы, их нужно задать В биллинге может быть заведено [несколько операторов связи|Агентские схемы и ведение филиалов], если это разные юридические лица, то данные в налоговую тоже должны идти по разным юридическим лицам. # Сначала нужно подготовить настройки для всех операторов меню "Настройки" \-> "Настройки фискализации". Нажмите "*Добавить*" \\ \\ !Настройки фискализации asr_billing.png|border=0,width=700! \\ \\ # Заведите нужные настройки интеграции с кассой и сохраните. Настройки выбираются в зависимости от используемой кассы: #* [CarbonBilling:АТОЛ Онлайн] #* [CarbonBilling:E-COM kassa] #* [CarbonBilling:Бизнес.ру Онлайн-Чеки]\\ #* [Другая онлайн-касса (протокол АТОЛ версии 4)] \\ # Добавив все нужные наборы настроек, назначьте их операторам в разделе "Настройки биллинга" \-> "Настройки Онлайн-кассы" \\ \\ !Настройки онлайн-кассы оператора связи.png|border=0,width=700! h3. Когда настройки заданы - отправка чеков включается автоматический. Выбрав "пустой" вариант, отправка отключится. После настройки фискализации в биллинге, подождите 10 минут чтобы они синхронизировались с модулем интеграции платёжных систем asr_fiscal. {info}Чеки по платежам, совершенным пока настройки синхронизируются, отправлены не будут.{info} Чтобы отключить отправку чеков - вернитесь в настройки оператора и выберите "пустой" вариант, сохраните настройки. В течение 10 минут биллинг и asr_fiscal синхроинируются, чеки перестанут создаваться. h3. А что если по каким-то операторам не нужно слать чеки? Если по абонентам кого-то из операторов Вы не хотите отправлять чеки - просто не выбирайте ему ни какие настройки h2. Еще важные настройки: чеки из Веб-кассы и адрес callback В интерфейсе настройки интеграции с [платёжными системами|https://docs.carbonsoft.ru/49087105] есть еще две важные настройки. Рассмотрим каждую подробно. !atol_asr_fiscal_config.png|border=0,width=700! При включении отправки чеков, настройки модуля платежных систем и биллинга синхронизируются не сразу, а в течение 10 минут. Чеки по платежам совершенным в этот промежуток времени не будут отправлены. h3. В веб-кассе создавать чек по умолчанию При включении, опция "Создать чек в АТОЛ-Онлайн" будет включена по-умолчанию при добавлении платежа в веб-кассе h3. Внешний адрес для callback *Внешний адрес для callback* \- укажите здесь IP-адрес или доменное имя биллинга, по которому он доступен из интернета, онлайн-касса будет отправлять биллингу информацию о регистрации чеков именно по этому адресу. h3. Дайте онлайн-кассе доступ к адресу callback По статье "[CarbonBilling:Настройка сети для платежных систем]" укажите адреса онлайн-кассы (их необходимо запросить у поддержки сервиса) в списке разрешенных для доступа к платежным системам. По-умолчанию мы ожидаем ответа онлайн кассы на порт +1444+, но защищенные порты (1443 и 2443) так же будут для неё доступны. h2. Товар, услуга и тд: настройте как услуги будут отражены в чеке Настройте соответствующие типы в *[услугах|CarbonBilling:Услуги]* в поле "*Признак предмета расчета*" на вкладке "*Дополнительно*", чтобы они правильно фискализировались. Например, [в услуге продажи роутера|CarbonBilling:Аренда оборудования] лучше указать тип "товар", а в [услуге доступа к сети интернет|CarbonBilling:Услуги. Трафик (интернет)] лучше указать "услуга". {info}По-умолчанию используется признак "услуга"{info} !atol_service_fiscal_type.png|border=0,width=370! {anchor:what_to_send} h1. Как, когда и какие чеки отправляются Carbon Billing 5 отправляет чеки по следующим операциям: * *Пополнение счета* \- при регистрации прихода денежных средств ** Если +бух.баланс больше или равен 0+ с единственной позицией "Пополнение лицевого счета \{номер лицевого счета\}" ** Погашение кредита если +бух.баланс меньше 0+ с единственной позицией "Платеж в счет погашения постоплаты по акту \{номер акта\}" ** Если баланс меньше 0, а сумма прихода больше кредита, формируется два чека на соответствующие суммы, например баланс \-100, пополнение счета на 500р, будет отправлено два чека: на 100 в счет погашения кредита и 400 в счета аванса * *Сторнирование прихода* ** В случае если приход был на погашение кредита и пополнение баланса - сторнируются оба чека * *Продажа* \- при выставлении актов ** Если все позиции в чеке были оплачены (баланс в конце месяца более или равен 0) - позиции товаров и услуг будут иметь признак способа расчета "Полная оплата", все платежи с типом "Предварительная оплата (зачет аванса и (или) предыдущих платежей)" ** Если не все позиции в чеке были оплачены (баланс в конце месяца менее 0) - позиции товаров и услуг будут иметь признак способа расчета "Частичный расчет", на сумму отрицательного баланса будет будет добавлен пункт платежа с типом "постоплата (кредит)" * *Сторнирование продажи* \- при сторнировании актов Чеки можно отправлять при проведении любых видов платежей, а именно: * Через веб-кассу (опционально) * Платежи через платежные системы (во всех случаях для всех платежных систем, автоматический) * [Платежи через выгрузку банка|CarbonBilling:Автоматическая выгрузка платежей из CSV] (аналогично платежным системам, всегда) * Заведение вручную в администраторской панели (опционально) * API (аналогично платежам в администраторской панели, опционально) Чеки по выставленной реализации (по актам) отправляются всегда. Чеки отправляются только для операторов, у которых настроены параметры фискализации. При отправке чека, в метаданных передаётся информация об адресе callback - адрес, на который биллинг ожидает ответа сервера онлайн кассы о результате проведения операции. Если ответ не поступает в течение 5 минут, биллинг самостоятельно опрашивает онлайн-кассу о статусе чека. Биллинг будет пытаться отправить чек пока не зарегистрирует егов онлайн-кассе. Если в отчете от кассы получена ошибка таймаута (чек не успел обработаться вовремя, например если несколько чеков было отправлено слишком быстро и касса не успела их напечатать), через некоторое время чек отправляется заново.
|
За одну итерацию биллинг отправляет до 25 чеков. При возникновении каких-либо технических проблем, например у биллинга не было доступа к интернету, или сменились данные доступа в кассу, или у сервиса проводятся техработы, может накопиться какое-то количество чеков. Они будут отправляться постепенно.
|
h2. Почему именно такая схема? Закон ФЗ-54 описывает процесс выдачи чека только в общих чертах. Он не описывает, что услуги связи всегда учитываются как аванс или как-то ещё. Такой конкретики там нет. Текущая реализация ФЗ-54 в системе сделана исходя из того, как работает ядро биллинга - платежи поступают не в счёт уплаты за конкретные услуги, они поступают на лицевой счёт абонента, с которого потом происходит списание за услуги согласно их настройкам (обычно 1-го числа, но может двигаться). То есть в момент оплаты, ядро биллинга не знает, за что именно абонент платит, и поэтому все платежи являются авансом. Например, абонент может пополнить баланс 25 января, а 26 января запланировать смену тарифа с 1 числа. Так же абонент может и не менять тариф, просто оплатить заранее. Точно мы будем знать, за что заплатил абонент, только в момент списания. Поэтому мы использовали схему с авансом и зачётом авансов. В [письме Минфина от 28 апреля 2017 года № 03-01-15/26352|https://www.v2b.ru/documents/pismo-minfina-rossii-ot-28-04-2017-n-03-01-15-26352/], есть разъяснения как учитывать аванс: {quote}... согласно информации, полученной от ФНС России, в случае если объем и список товаров, работ, услуг невозможно определить в момент оплаты (при получении предоплаты и (или) рассрочке платежа), на кассовом чеке (бланке строгой отчетности) указываются аванс и фактически полученные денежные средства.{quote} И далее про зачёт аванса: {quote}При конечном расчете с учетом ранее предоставленного аванса на кассовом чеке указываются обязательные реквизиты, предусмотренные статьей 4.7 Федерального закона N 54-ФЗ ...{quote} В [ФЗ-54|http://www.consultant.ru/document/cons_doc_LAW_42359/d2fc933bc5ec367e9a8713330510af5d9e1a3fe4/] необходимость отправлять чеки по зачёту авансу отмечена в пункте 2.1 статьи 1.2. Там же указано, что чек можно формировать за период не превышающий месяца - что и делает биллинг, формируя такой чек закрывая очередной месяц. Конкретные указания по формату обмена данных содержатся в прочих документах от налоговой и министерства финансов. В частности, согласно [табл. 28 приложения № 2 к приказу ФНС № ММВ-7-20/229@|https://www.nalog.ru/html/sites/www.new.nalog.ru/doc/pril2_fns229_210317.docx], существует несколько вариантов предоплаты с соответствующими признаками способа расчёта: "*предоплата 100%*" и "*предоплата*" для предоплаты +за товары+, а так же "*аванс*", +без указания+ на форму товаров/услуг. На [сайте налоговой|https://kkt-online.nalog.ru/materials/] есть методические рекомендации с разъяснением некоторых кейсов. В том числе есть пример как регистрировать аванс за товары и как направлять чек по зачёту аванса (Раздел *Материалы* -> *Методические указания для ФФД 1.05 и 1.1*, документ "*Получение предварительной оплаты за собственный товар, последующий зачет предварительной оплаты за товар и предоставление займа для оплаты товара, а также погашение займа для оплаты товара*", [прямая ссылка|https://kkt-online.nalog.ru/html/sites/www.usn-online.nalog.ru/materials/3_ed420_2929.pdf]. [Вот он|http://www.consultant.ru/document/cons_doc_LAW_321176/] на сайте Консультанта с [пояснительной запиской|http://www.consultant.ru/document/cons_doc_LAW_321176/96c60c11ee5b73882df84a7de3c4fb18f1a01961/] Пример не 100% подходящий под ситцуацию предоплаты за услуги связи, но даёт общее представление.
|
h2. Отправка чеков по платежам через [платёжные системы|CarbonBilling:Платёжные системы]
|
... При указании оператору связи настроек фискализации, чеки будут автоматический отправляться по всем платежным системам, включая экваиринг и ОСМП (OSMP) и выгрузки банка. h2. Отправка чеков по платежам в [веб-кассе|CarbonBilling:Веб-интерфейс кассира] При заведении платежей в веб-кассе автоматический будет установлен флаг "*Создать чек в АТОЛ-онлайн*", таким образом чек будет отправлен. !atol_online_webcash.png|border=0,width=500! Если опцию отключить, чек по операции не будет отправлен, отправить его в последствии будет не возможно, в таком случае потребуется отменить операцию прихода в биллинге и завести платеж заново в веб-кассе с отправкой чека. h2. Отправка чеков по платежам в [администраторской панели|CarbonBilling:Финансовые операции. Учет НДС] !atol_online_admin_panel.png|border=0,width=600! При заведении операции прихода денежных средств Вы можете отправлять или не отправлять чек, за это отвечает опция "*Не создавать онлайн-чек*". По-умолчанию она включена и чек не отправляется. Если опцию отключить при заведении операции - чек будет отправлен. Если создать операцию прихода и потом её отредактировав, сняв опцию - чек отправлен не будет. {info}Чек отправляется только при создании операции.{info} h2. Отправка чеков по [выставленной реализации|CarbonBilling:Финансовые операции. Учет НДС] Чеки по выставленной реализации (по актам) отправляются всегда в автоматическом режиме. При сторнировании актов так же всегда и автоматический отправляются чеки сторнирования продажи. h3. Позиции товаров/услуг в чеках. По всем позициям (товары, услуги) в чеке передаются: * Наименование * Стоимость * Количество {note}Количество - всегда 1. Стоимость - сумму по услуге с точностью до 1 копейки.{note} h1. Какие чеки не отправляются * По платежам с [карт оплаты|CarbonBilling:Карты оплаты]
|
* Любым платежам [выгруженным из 1С|CarbonBilling:Интеграция с 1С] * Платежам юридических лиц
|
{info}Чтобы отправлялись, включите опцию "*Слать чеки по платежам юрлиц*" в настройках фискализации{info}
|
* Платежам [операторов связи|CarbonBilling:Разграничение объектов по операторам связи.]
|
* При [переводе средств между абонентами|CarbonBilling:Перевод денег другу]
|
... h2. Чек коррекции Чек коррекции не формируется биллингом автоматический, так как в большинстве случае достаточно сторнирования. При необходимости, чек коррекции Вы можете провести вручную в онлайн-кассе или личном кабинете вашего ОФД. {info}Если Вам часто требуется проводить чеки коррекции, пожалуйста напишите нам об этом. Если функция окажется востребована в массе пользователей Carbon Billing, мы обязательно автоматизируем процесс{info}
|
h2. Моя платёжка сама отправляет чеки в налоговую, как не слать их через онлан-кассу?
|
Если используемая Вами платёжная система сама формирует чеки по платежам, сообщите нам об этом технической поддержке этом, составив обращение на портале [HelpDesk|https://helpdesk.carbonsoft.ru/login.php] и приложите описание протокола обмена данными с платёжкой, мы доработаем для неё исключение.
|
h1. Уведомление для абонентов
|
... Уведомления со ссылками на чеки у ОФД отправляет онлайн-касса, Carbon Billing 5 только передаёт на сторону онлайн-кассы реквизиты абонента.
|
Исходя из документации к онлайн кассе, если переданы оба реквизита - уведомление будет отправлено только на почту. Выдержка из [документации к описанию протокола АТОЛ|https://online.atol.ru/files/API_atol_online_v4.pdf], страница №17: {quote}В запросе обязательно должно быть заполнено хотя бы одно из полей: email или phone. Если заполнены оба поля, ОФД отправит электронный чек только на email.{quote}
|
{info}Актуальную документацию можно найти по [ссылке|https://online.atol.ru/lib/], "API: Описание протокола АТОЛ Онлайн"{info}
|
h1. Можно как-то отправлять чек только 1 раз - по платежу?
|
... Да, но учтите что эта настройка общая для всех операторов заведённых в биллинг. Включатеся так: # Откройте конфигурационный файл asr_fiscal */app/asr_fiscal/cfg/config* # Добавьте туда параметр atol_online\['use_old_scheme'\] равный "1": {code}atol_online['use_old_scheme']='1'{code} # Исправьте парамтер atol_online\['cabinet'\] - добавьте туда опцию "use_old_scheme". Должно получиться примерно так: {code}atol_online['cabinet']='enable default_email use_old_scheme'{code} # Выполните скрипты синхронизации параметров между контейнерами: {code} chroot /app/asr_billing python2.7 /usr/local/bin/get_fiscal_config.py
|
chroot /app/asr_cabinet python2.6 /usr/local/bin/get_fiscal_config.py {code}
|
При включении старой схемы возникнут следующие события:
|
|
1. Чек с товарной позицией "Пополнение лицевого счета %ACCOUNT_ID%" 2. Признак способа расчёта full_payment 3. При отправке чека при выставлении акта ничего не будет обрабатываться, в логе будет запись "включена старая схема, отменяю чек по %OP_ID%".
|
h1. Отладка
|
Результаты обмена данными с онлайн-кассой можно посмотреть в логе: {code}tail /app/asr_fiscal/var/log/paysystems/ATOL_Online_v4.log {code} {info}Ранее /app/asr_fiscal/var/log/ATOL_Online_v4.log{info}
|
Схема отправки чеков: !paysystems01.png!
|
|
Журнал обмена данными по операциям для передачи онлайн-кассе между биллингом и модулем платежных систем: {code}tail /app/asr_billing/var/log/paysystemsd.log{code}
|
# Начните отладку с контейнера *asr_billing*. Журнал службы *paysystemsd*: {code}/app/asr_billing/var/log/paysystemsd.log{code} # Обмен данными с онлайн-кассой происходит в контейнере *asr_fiscal*. Результат можно посмотреть в логе: {code}/app/asr_fiscal/var/log/paysystems/ATOL_Online_v4.log {code} # Дополнительная информация, в случае проблем при взаимодействии {code}/app/asr_fiscal/var/log/httpd/error_log{code}
|
h2. Биллинг внезапно отправил очень много чеков. Почему так?
|
... Вероятней всего у Вас произошло выставление актов - автоматическое или Вы воспользовались функцией [массового формирования|CarbonBilling:Массовое формирование счетов и актов]. Информацию о том какие чеки, когда и почему отправляются Вы можете найти под заголовком [Как, когда и какие чеки отправляются|#what_to_send] h2. Ошибки при отправке чеков по платежам из [веб-кассы|CarbonBilling:Веб-интерфейс кассира] При ошибках отправки чека Вы увидите подобную страницу. На странице описано в какой части кода произошла ошибка, *суть ошибки - в красном баннере внизу*. !atol_online_error.png|border=1,width=600! h3. Ошибочные поля : PropertyRequired: #/login; PropertyRequired: #/pass {code}Ошибка АТОЛ-Онлайн: [32] Ошибка валидации входящего чека. Ошибочные поля : PropertyRequired: #/login; PropertyRequired: #/pass{code} Убедитесь, что "*Логин*", "*Пароль*" и "*Место расчетов*" указаны верные. h3. Email and Phone empty {code}Email and Phone empty{code} Для передачи чека в онлайн-кассу, в карточке абонента должны быть заведены "*Email для оповещений*" или "*Номер SMS для оповещений*" Согласно законодательству такие чеки все равно требуется передавать, абонент при необходимости может запросить информацию о них в налоговой, однако онлайн-кассы требуют передачи хотя бы одного из этих реквизитов и не регистрирует чек если ни какие контактные данные абонента не переданы. Для решения проблемы, запросите контактные данные у абонента или укажите *E-Mail чека по умолчанию* в настройках фискализации оператора связи. h2. Передана некорректная ставка налога. С 01.04.2019 ставки НДС 18 и 18/118 не могут использоваться в чеках Ошибка в логе */app/asr_fiscal/var/log/ATOL_Online_v4.log* {code} 2020-11-26 10:20:27 ATOL REPLY: '{"status":"fail","error":{"code":32,"error_id":"111a1111-1111-1111-aaa1-1a111a111a11","text":"Ошибка валидации входящего чека. Ошибочные поля : AdditionalPropertiesNotValid:#/receipt.items[0].vat.type - Передана некорректная ставка налога. С 01.04.2019 ставки НДС 18 и 18/118 не могут использоваться в чеках sell (приход) и buy (расход)","type":"system"},"timestamp":"26.11.2020 10:20:26"}' {code} Ошибка в логе */app/asr_billing/var/log/paysystemsd.log* {code} 2020-11-26 10:20:26,003 - worker - common - CRITICAL - unhandled exception Exception ERROR: Ошибка АТОЛ-Онлайн: [32] Ошибка валидации входящего чека. Ошибочные поля : AdditionalPropertiesNotValid:#/receipt.items[0].vat.type - Передана некорректная ставка налога. С 01.04.2019 ставки НДС 18 и 18/118 не могут использоваться в чеках sell (приход) и buy (расход) (id bb22b22b-2bbb-2b22-bb22-2222b22b22bb)) Traceback (most recent call last): File "//usr/lib/python2.7/site-packages/carbon_paysystems/paysystems_lib.py", line 275, in _create_atol_online_payment_checks File "//usr/lib/python2.7/site-packages/carbon_paysystems/paysystems_lib.py", line 182, in _communicate_with_atol_fiscal Exception: ERROR: Ошибка АТОЛ-Онлайн: [32] Ошибка валидации входящего чека. Ошибочные поля : AdditionalPropertiesNotValid:#/receipt.items[0].vat.type - Передана некорректная ставка налога. С 01.04.2019 ставки НДС 18 и 18/118 не могут использоваться в чеках sell (приход) и buy (расход) (id bb22b22b-2bbb-2b22-bb22-2222b22b22bb)) {code} h3. Решение Укажите правильную налоговую ставку в настройках кассы на строне биллинга: 20 или 20/120 h2. Чеки не уходят: неверный логин или пароль В логе ошибка: {code:title=Команда}grep -i err /app/asr_fiscal/var/log/paysystems/ATOL_Online_v4.log | sed 's|\\\\|\\|g'{code} {code:title=Вывод}... 2021-06-02 11:14:31 BUSINESS REPLY: '{"error":{"error_id":"b46b1f70-c393-11eb-807d-b308f061d33a","code":12,"text":"\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u043b\u043e\u0433\u0438\u043d \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c","type":"system"},"status":"fail","timestamp":"02.06.2021 11:14:31"}' {code} Перевести код ошибки в понятные символы можно [конвертором|https://www.branah.com/unicode-converter]: !Онлайн-кассы, ошибка логина и пароля в логах, перевод на понятный язык.png|border=0,width=400! h4. Для инженеров, проверка с CURL Можно проверить с помощью CURL. Например: * Интегарция с кассой: Бизнес.Ру Онлайн-чеки * Тестовый логин интеграции: 6671234567 * Тестовый неправильный пароль: 1111111 {code:title=Запрос} curl -ss -XPOST -H "Content-type: application/json; charset=utf-8" "https://check.business.ru/api-carbonbilling/v4/getToken" -d '{"login":"6671234567","pass":"1111111"}' | jq . {code} {code:title=Ответ} { "timestamp": "02.06.2021 12:14:27", "status": "fail", "error": { "type": "system", "text": "Неверный логин или пароль", "code": 12, "error_id": "13cd9720-c39c-11eb-a851-e50342198749" } } {code} h3. Решение Укажите правильные логин и пароль в [настройках фискализации|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=186287928#Общаяинформацияпонастройкеонлайн-касс-Укаждогооператорасвоинастройкиинтеграциионлайнкассы%2Cихнужнозадать] h4. Для инженеров, проверка с CURL Проверить так же можно проверить с помощью CURL, например: * Тестовый логин интеграции: 6671234567 * Тестовый правильный пароль: 4444444 {code:title=Запрос} curl -ss -XPOST -H "Content-type: application/json; charset=utf-8" "https://check.business.ru/api-carbonbilling/v4/getToken" -d '{"login":"6671234567","pass":"4444444"}' | jq . {code} {code:title=Ответ} { "timestamp": "02.06.2021 12:16:48", "token": "1d93d732-1111-22a2-33b3-22dd6677e777", "error": }
|
} {code}
|
h2. После выполнения настроек возникает ошибка "Что-то пошло не так при обработке url для онлайн-кассы" {code:title=Пример лога /app/asr_fiscal/var/log/paysystems/ATOL_Online_v4.log} 2022-01-28 12:53:03 create_check_ex: from=169.254.14.44 json=OK data_raw={"is_cash": false, "op_id": "864501_sell_0", "payments": null, "timestamp": "1643290825", "phone": "+7918955.... "config": {"kassa_url": "https://kassa-rent.initpro.ru", ......} 2022-01-28 12:53:03 Что-то пошло не так при обработке url для онлайн-кассы 2022-01-28 12:53:03 Переданный url: 2022-01-28 12:53:03 REQUEST: POST getToken data='{"login":"xxx","pass":"uuu"}' 2022-01-28 12:53:03 REPLY: false {code} Проблема возникла из-за некоррктного адреса сервера онлайн-кассы, отсутствовал */* в конце адреса. Необходимо проверять в документации сторонних систем адреса их серверов и указывать в соответствии с требованиями.
|