Opencart Tinkoff и купоны, ошибка division by zero

Недавно разбирались с Opencart модулем эквайринга от Тинкофф-банка, суть — модуль периодически вываливал ошибку «Division by zero: запрос к платёжному сервису был отправлен некорректно»


UPD: Я отправил все доработки сотрудникам Тинькофф Банка, так что, вероятно в ближайшем обновлении их модуля это уже будет исправлено!


 

Проблема в том, что по какой-то причине их модуль не умеет работать с покупкой подарочных сертификатов и просто всячески отбрыкивается от корректной работы.

Вот лечение — в файле model/extension/payment/tinkoff.php в методе getReceipt после цикла обработки товаров добавляем ещё один цикл вида:

foreach ($this->session->data['vouchers'] as $voucher) {
    $receiptItems[] = array(
        'Name' => mb_substr($voucher['description'], 0, 64),
        'Price' => $voucher['amount'] * 100,
        'Quantity' => 1,
        'Amount' => $voucher['amount'] * 100,
        'Tax' => 'none'
    );
}

здесь мы готовим данные для формирования чека, затем нужно добавить в методе getRealAmount следующий код (опять же, до или после цикла с обработкой товаров):

foreach ($this->session->data['vouchers'] as $voucher) {
    $price = $voucher['amount'];
    $realAmount += $price;
}

Таким вот нехитрым способом мы добавили поддержку подарочных сертификатов к оплате через тинькофф банк.

Комментарии

comments powered by Disqus
Яндекс.Метрика