Исправляется таким хаком:
uc_checkout_tweaks.pages.inc: uc_checkout_tweaks_uc_payment_get_totals()
// fix problem with update of totals when multibyte(russian) strings:
echo strlen('héllö'); // 7
echo strlen('wörld'); // 6
function mb_unserialize_for_uc_checkout_tweaks_uc_payment_get_totals($string) { // HACK see http://stackoverflow.com/questions/2853454/php-unserialize-fails-with-no...
$string = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $string);
return unserialize($string);
}
function uc_checkout_tweaks_uc_payment_get_totals() {
$output = '';
if (is_array($_POST)) {
$order = mb_unserialize_for_uc_checkout_tweaks_uc_payment_get_totals($_POST['order']);
}