У меня есть неприятный баг с платежами в Magento
, Paybox
и SOAP
веб-служб, идея заключается в следующем:Как изменить цену заказа Magento в центах?
- Оплата производится в центах $ 36,37 = 3637cents (
Paybox
- API) Что я пытаясь сделать это, чтобы превратить свою цену заказа в центах следующим образом:
$cents = $order->getBaseGrandTotal() * 100;
Также у меня есть мы b сервис SOAP (строгие типы), который
respond
этот$cents
сумма, но он подтверждает это(int)
, то иногда магия происходит, а конвертированная сумма не является ожидаемой, конвертированный результат меньше, чем в процентах, в моем случае это может быть3736
.$prices = array(39.8699, 12.3299, 11.3211); foreach ($prices as $price) { $stuff = round($price, 2) * 100; echo $stuff . PHP_EOL; } echo "After int conversion" . PHP_EOL; foreach ($prices as $price) { $stuff = (int) (round($price, 2) * 100); echo $stuff . PHP_EOL; }
В результате получается следующее:
3987
1233
1132
After int conversion
3986
1233
1132
Вопрос Есть ли способ, чтобы исправить эту ошибку, это кажется PHP ошибка?
Подсказка: 'ini_set ('precision', 20); var_dump ($ цены); '. Не ошибка PHP: так работают компьютеры. –
Это не ошибка в php, это ошибка в вашей логике. Вам придется иметь дело с четвертой и пятой цифрами. Очевидным ответом будет округление более 50 (4-я и 5-я цифры). И не делайте ничего меньше 50 (4-й и 5-й цифры). – Andrew