Модуль Приват24 и отображение символа валюты в корзине
В сети доступно две бесплатных версий модуля оплаты через Приват24. Одна более старая, вторая — более новая, лучше адаптирована под Api Приват24 и жестко привязанная к гривне при оплате. Обе версии модуля работают на всех версиях Prestashop до 1.6.1.1 (протестировано), и при работе с обеими был замечен одинаковый баг:
Если у вас настроен заказ в одну страницу, то при изменении количества товара (+ / — ) в корзине пропадает символы валюты и дробная часть суммы, причем это происходит только если клиент вошел в систему (Это и помогло локализовать баг, ведь логично что то методы оплаты подключаются только при объявленном клиенте).
Причина бага — то что при инициализации модуля в smarty передается массив, одна из переменных которого, а именно ‘currency‘, переопределяет ранее объявленную переменную в шаблоне.
Решение простое и очевидное — переименовать эту переменную в модуле.
Открываем файл privat24.php , ищем следующий код:
1 2 3 |
$smarty->assign(array( 'privat24Url' => 'https://api.privatbank.ua:9083/p24api/ishop', 'currency' => 'UAH', |
или если у вас другая версия модуля:
1 2 3 |
$smarty->assign(array( 'privat24Url' => 'https://api.privatbank.ua:9083/p24api/ishop', 'currency' => $currency->iso_code, |
и переименовываем ‘currency‘ например в ‘currency1‘:
1 2 3 |
$smarty->assign(array( 'privat24Url' => 'https://api.privatbank.ua:9083/p24api/ishop', 'currency1' => 'UAH', |
или если у вас другая версия модуля:
1 2 3 |
$smarty->assign(array( 'privat24Url' => 'https://api.privatbank.ua:9083/p24api/ishop', 'currency1' => $currency->iso_code, |
Ту же операцию следует провести в файле шаблона privat24.tpl куда передается данный массив.
Было:
1 2 3 |
<form id="privat24_form" action="{$privat24Url}" method="POST"> <input type="hidden" name="amt" value="{$amount}"/> <input type="hidden" name="ccy" value="{$currency}" /> |
Стало:
1 2 3 |
<form id="privat24_form" action="{$privat24Url}" method="POST"> <input type="hidden" name="amt" value="{$amount}"/> <input type="hidden" name="ccy" value="{$currency1}" /> |
Проблема решена 🙂
Добавить комментарий