@Kverty

Как программно отправить чек онлайн-кассой Эвотор?

Пишу своё приложение для онлайн-кассы Эвотор 5 (работает на Андроиде).
Нужно сделать функцию формирования и отправки чека. Точнее функция-то написана, но почему-то не работает.
Конкретная проблема: при выполнении PrintSellReceiptCommand выдаётся ошибка "Delivery option isn't paid". Что она значит - непонятно.
Документация API Эвотор либо неполная, либо просто мне не понятна. Сложность в том, что оборудование и библиотека Эвотор специфические, информации о них практически ноль.
Буду рад любой помощи в решении проблемы, в том числе платной. На Фрилансе тоже опубликовал задачу, но это скорее всё же вопрос, чем задание.
Вот имеющийся код формирования и отправки чека. Привожу его полностью, потому что непонятно, что именно вызывает ошибку.
List<Position> positions = new ArrayList<>();
positions.add(
        Position.Builder.newInstance(
                UUID.randomUUID().toString(),
                null,
                "Тестовый товар",
                "шт",
                0,
                new BigDecimal(1),
                new BigDecimal(3)
        ).build()
);

Map<Payment, BigDecimal> payments = new HashMap<Payment, BigDecimal>();
payments.put(new Payment(
        UUID.randomUUID().toString(),
        new BigDecimal(sum),
        null, // Deprecated
        new PaymentPerformer(
                new PaymentSystem(PaymentType.ELECTRON, "Bank", "Cashless"),
                null,
                null,
                null,
                null
        ),
        null,
        null,
        null,
        null
),new BigDecimal(sum));

PrintGroup printGroup = new PrintGroup(UUID.randomUUID().toString(),
        PrintGroup.Type.CASH_RECEIPT, null, null, null, null, false);
Receipt.PrintReceipt printReceipt = new Receipt.PrintReceipt(
        printGroup,
        positions,
        payments,
        new HashMap<Payment, BigDecimal>(), new HashMap<String, BigDecimal>()
);
ArrayList<Receipt.PrintReceipt> printReceipts = new ArrayList<>();
printReceipts.add(printReceipt);

PrintSellReceiptCommand command = new PrintSellReceiptCommand(printReceipts,null,null,email,new BigDecimal(0),address,place,null);

command.process(MainActivity.this, new IntegrationManagerCallback() {
    @Override
    public void run(IntegrationManagerFuture future) {
        IntegrationManagerFuture.Result result2 = null;
        try {
            result2 = future.getResult();
            switch (result2.getType()) {
                case OK:
                    // ...
                    break;
                case ERROR:
                    Error error = result2.getError(); // здесь выдаётся ошибка Delivery option isn't paid
                    break;
            }
        } catch (IntegrationException e) {
            e.printStackTrace();
        }
    }
});
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы