Добрый день!
При попытке напечатать чек на атол-онлайн выдает ошибку (
на скриншоте).
Вывел в лог 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 - не знаю, откуда взять сессионный ключ.
Подскажите, куда копать?