Чеки онлайн и оплата через Сбербанк

атол-онлайн
сбербанк-онлайн
чек

#1

Подскажите, что не так и как поправить? Установил последнюю версию модуля Сбербанк Онлайн(вырезал из свежего дистрибутива). Однако в чеках нет товаров. В Сбербанке(в личном кабинете самого Сбера) настроена интеграция с Атол Онлайн, данные в Атол Онлайн попадают напрямую из Сбербанка. В чеках вместо перечня конкретных товаров при этом значится “Товар” и общая сумма.


#2

@imac Прошу обратить внимание. У вас коммерческий продукт, который уже более месяца не соответствует актуальному законодательству(это обязательно с 1 июля). Однако модуль оплаты не отдает эквайрингу список товаров, соответственно пробиваются неправильные чеки(не смотря на то что эквайринг свою работу выполняет и данные в онлайн-кассу передает, которая в свою очередь отправляет в ОФД некорректные чеки, которые очень рада будет рассмотреть поближе налоговая). Работы тут не много. Поправить надо очень срочно(по-хорошему надо было это сделать очень давно, закон принят в 2017, если не раньше, и новостью не является). При этом в модуле Сбербанка поправить то надо всего несколько строк. В остальных скорее всего так же.


#3

Что значит “вырезали”? Модуль из свежей версии накатили на старую версию? В этом случае нужно делать полный аудит всех используемых хуков, так как то, что используется в новой версии ядра, может отсутствовать в старой версии.


#4

Зачем? Контроллер передающий данные в Сбер в одном файле и там ничего не изменялось сто лет, сверил - одно и то же, в функции отдающей данные Сберу передается лишь общая сумма. Модуль эквайринга Сбера очень простой, в нем даже не зная php понять что к чему не проблема.

    public function register($order_info, $protocol = 'current')
{
    $order_total = $this->convertSum($order_info['total']);
    $order_id = $order_info['order_id'];
    $orderNumber = $order_id . '_' . substr(md5($order_id . TIME), 0, 3);

    $data = array(
        'userName' => $this->_login,
        'password' => $this->_password,
        'orderNumber' => $orderNumber,
        'amount' => $order_total * 100,
        'returnUrl' => fn_url("payment_notification.return?payment=sberbank&ordernumber=$order_id", AREA, $protocol),
        'failUrl' => fn_url("payment_notification.error?payment=sberbank&ordernumber=$order_id", AREA, $protocol),
    );

    $this->_response = Http::post($this->_url . 'register.do', $data);
    $this->_response = json_decode($this->_response, true);

    if (!empty($this->_response['errorCode'])) {
        $this->_error_code = $this->_response['errorCode'];
        $this->_error_text = $this->_response['errorMessage'];
    }

    return $this->_response;
}

#5

Нет решения?