Добрый день! При попытке напечатать чек на атол-онлайн выдает ошибку (на скриншоте). Вывел в лог checkData:
Код: 07-24/09:32:47 INFO [http-nio-0.0.0.0-8080-exec-2] MatrixSimpleCheck - checkData: 1.11 112292 0 STRING ООО "МАТРИКС"
CUSTOMEREMAIL a@test.ru
ONLYELCHECK TRUE
PAYMENTTYPE 1
CHECKTYPE PAYMENT
CASHIERNAME Онлайн
CUSTOMTAG 1105;1
07-24/09:32:47 INFO [http-nio-0.0.0.0-8080-exec-2] MatrixSimpleCheck - Lines: [[1.11,112292,0]@636866d2, [null,ООО "МАТРИКС",-1]@6633134a] 07-24/09:32:47 INFO [http-nio-0.0.0.0-8080-exec-2] MatrixSimpleCheck - plines: [1.11, 112292, 0, STRING, ООО "МАТРИКСНЕТ", , CUSTOMEREMAIL, test@test.ru, , ONLYELCHECK, TRUE, , PAYMENTTYPE, 1, , CHECKTYPE, PAYMENT, , CASHIERNAME, Онлайн, , CUSTOMTAG, 1105;1, ]
Конфиг cashcheck:
Код: # pt.9.fr=2 pt.9.pass=01 #pt.9.print=auto ################ fr.2.title=тест-онлайн-платежи fr.2.fiscalizator=atolonlinev4
fr.2.addr=https://testonline.atol.ru/possystem/v4/ fr.2.groupcode=v4-online-atol-ru_xxxx fr.2.login=v4-online-atol-ru fr.2.pass=******
## 1117 Адрес электронной почты отправителя чека fr.2.company.email=test@matrix.info # 1018 ИНН пользователя fr.2.company.inn=1234567890 ## 1187 Место расчетов fr.2.company.payment_address=https://v4.online.atol.ru ##
Скрипт формирования внешнего вида чека:
Код: package ru.smartkom.bgbilling.cashcheck;
import java.math.BigDecimal; import java.sql.Connection; import java.time.LocalDate; import java.time.ZoneId; import java.util.Set;
import org.apache.log4j.Logger;
import ru.bitel.common.DateTimeUtils; // import ru.bitel.bgbilling.common.BGException; import ru.bitel.bgbilling.kernel.module.common.bean.User; import ru.bitel.bgbilling.kernel.module.server.bean.UserManager; import ru.bitel.bgbilling.plugins.cashcheck.common.Payment; import ru.bitel.bgbilling.plugins.cashcheck.common.Printer; import ru.bitel.bgbilling.plugins.cashcheck.server.CheckMaker; import ru.bitel.bgbilling.plugins.cashcheck.server.bean.Check; import ru.bitel.bgbilling.server.util.Setup;
/** * Какой-то простой формат чека для типичного ККМ. * @author dimon */ public class MatrixSimpleCheck extends CheckMaker { private static final Logger logger = Logger.getLogger(MatrixSimpleCheck.class); private static final int NON_CASH_PAY = 1; // Вид оплаты - безналичный private Payment payment; @Override public void init( Setup setup, Connection con, Connection conSlave ) throws BGException { } // https://docs.bitel.ru/pages/viewpage.action?pageId=43386469 @Override public void addPayment( Payment payment, Check check, Printer printer ) throws BGException { this.payment = payment; // один раз должна присутствовать установка платежа addPayment( ), это будет "фискальная" строка, // которая собственно представляет собой продажу check.addPayment( payment.getSumma(), payment.getContractTitle(), 0 ); // #1020 ?
check.addString( "ООО \"МАТРИКС\"" ); //Организация check.setDocumentId(payment.getId()); // Номер документа // check.addString(String.valueOf(payment.getId())); // LocalDate paymentDate = payment.getDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // check.addString( DateTimeUtils.format( paymentDate, "dd.MM.yyyy HH:mm:ss" )); // check.addString( DateTimeUtils.format( paymentDate, "dd.MM.yyyy" )); // check.setDocumentDate(payment.getDate()); // Дата выдачи // check.addString( payment.getContractTitle() ); // check.addString( payment.getContractComment() ); // #1227 - необязательно check.setCustomerEmail("a@test.ru"); // #1008 - Обязательно // check.addString("a@test.ru"); // #1187 Место расчетов. Стр 19 - в конфиге // check.addString("magazin@romashka.ru"); /////////////////////////////////////// // Только для агентских договоров. // check.setTag(1057, "another"); // Признак агента. Стр. 19-20. При этом обязательно #1171 // check.setTag(1171, "+79123456789"); // Телефон поставщика // check.setTag(1222, "another"); // Признак агента. Стр. 26 // check.setTag(1079, payment.getSumma().longValue()); // Цена за ед. предмета расчета // check.addString(payment.getSumma().toPlainString()); // check.setTag(1023, 1L); //Количество предметов расчета //// check.addString("1"); // check.setTag(1043, payment.getSumma().longValue()); // Стоимость предмета расчета // check.addString(payment.getSumma().toPlainString()); // check.setTag(1214, "full_payment"); // Признак способа расчета // check.setTag(1212, "service"); // Признак предмета расчета // check.setTag(1199, "none"); // Ставка НДС: без НДС check.setTag(1105, payment.getSumma().longValue()); // Сумма расчета по чеку без НДС // check.setTag(1020, payment.getSumma().longValue()); check.setTax(-1); check.setPaymentType(NON_CASH_PAY); // Вид оплаты: безналичный. Стр 30. // check.setTag(1081, payment.getSumma().longValue()); // Сумма по чеку безналичными check.setOnlyElCheck(true); // только электронный чек check.setCashierName("Онлайн"); // #1021. Кассир }
@Override public void endCreate( Set<Integer> cids, Check check, Printer printer ) throws BGException { logger.info("checkData: " + check.getCheckData()); logger.info("Lines: " + check.getLines().toString()); logger.info("plines: " + check.getPlines().toString()); check.setTax(-1); check.setPaymentType(NON_CASH_PAY); check.setCustomerEmail("test@test"); }
@Override public void addPaymentRefund( Payment payment, Check check, Printer printer ) throws BGException { check.addPayment( payment.getSumma(), payment.getContractTitle(), 0 ); }
@Override public void endCreateRefund( int cid, Check check, Printer printer ) throws BGException { // check.setTax(1); // check.setPaymentType(1); // check.setCustomerEmail("test@test"); } @Override public void addPaymentAuto(Payment payment, Check check, Printer printer) throws BGException { // обработка автопечатаемых платежей check.addPayment( payment.getSumma(), payment.getContractTitle(), 0 ); check.setTax(-1); check.setPaymentType(NON_CASH_PAY); check.setCustomerEmail("test@test"); } }
Версия биллинга:
Код: Информация о версии:
Клиент: вер. 7.1.202 / 24.06.2019 18:11:12 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_211 Сервер: вер. 7.1.1133 / 30.06.2019 16:52:14 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102
bill: вер. 7.1.301 / 25.06.2019 17:34:34 card: вер. 7.1.199 / 12.02.2019 19:06:33 dialup: вер. 7.1.305 / 06.02.2019 19:09:40 drweb: вер. 7.1.64 / 06.02.2019 19:12:02 email: вер. 7.1.166 / 06.02.2019 19:12:09 inet: вер. 7.1.726 / 01.07.2019 15:38:20 ipn: вер. 7.1.239 / 07.06.2019 15:51:18 mps: вер. 7.1.187 / 22.05.2019 02:44:59 npay: вер. 7.1.177 / 06.02.2019 19:12:46 phone: вер. 7.1.255 / 18.03.2019 21:32:53 rentsoft: вер. 7.1.44 / 17.05.2019 17:47:41 reports: вер. 7.1.206 / 22.04.2019 20:11:57 rscm: вер. 7.1.166 / 06.02.2019 19:13:32 ru.bitel.bgbilling.plugins.cashcheck: вер. 7.1.137 / 30.06.2019 16:52:33 ru.bitel.bgbilling.plugins.cladr: вер. 7.1.106 / 06.02.2019 19:11:59 trayinfo: вер. 7.1.160 / 06.02.2019 19:13:49 tv: вер. 7.1.228 / 28.06.2019 16:25:39 voiceip: вер. 7.1.190 / 18.03.2019 21:32:15
Окружение:
Клиент: os: Linux amd64, 4.4.0-154-generic java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_211 jre home: /usr/lib/java/jdk1.8.0_211/jre memory (use/total/max): 52M/97M/860M default tz: 24.07.2019 09:54 OMST +0600 (Asia/Omsk) user tz: 24.07.2019 09:54 OMST +0600 (Asia/Omsk) locale: ru_RU Сервер: os: Linux amd64, 3.10.0-693.17.1.el7.x86_64 java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_102 jre home: /opt/java/jdk1.8.0_102/jre default tz: 24.07.2019 09:54 OMST +0600 (Asia/Omsk) memory (use/total/max): 158M/219M/2731M db time: master: 24.07.2019 09:54 +06 db charset: connection: utf8(utf8_unicode_ci), database: utf8(utf8_unicode_ci) locale: ru_RU uptime: Started: 05.07.2019 07:36:26 Uptime: 19 d 02:17:36
Третьи стороны:
Fugue Icons. Copyright © 2011 Yusuke Kamiyamane. All rights reserved. http://p.yusukekamiyamane.com/ Silk icon set. Copyright © Mark James. All rights reserved. http://www.famfamfam.com/lab/icons/silk/
В логах биллинга никаких записей нет. С помощью Wireshark - не знаю, откуда взять сессионный ключ.
Подскажите, куда копать?
Вложения: |
Комментарий к файлу: ответ от атол-онлайн
badcheck_2019-07-23_12-42-02.png [ 26 КБ | Просмотров: 3635 ]
|
|