Revo + PHP + LiqPay = грабли

Глюк пришёл откуда не ждали: суть - LiqPay хочет, что бы сумму передавали не строкой, а числом! но как только я пишу в коде

$amount = settype($pt, "float"); // или (int) $pt

он вместо преобразования - возвращает нуль!!!

версия PHP-5.4

полный код:

// [[liqpay? &pt=`[[+shk.price]]` &oi=`[[+shk.id]]`]]

$public_key = 'i1687733****';
$private_key = 'dEABQRZsXvHsTjA0Cf6U0ss9WaNBHNdIP****';

$amount = settype($pt, "float");
$order_id = $oi;

$description = 'Оплата в магазине www.austpharma.com.ua';
$data = base64_encode(
          json_encode(
            array('version'     => 3,
                  'public_key'  => $public_key,
                  'private_key' => $private_key,
                  'amount'      => $amount,
                  'currency'    => 'UAH',
                  'description' => $description,
                  'order_id'    => $order_id,
                  'sandbox'     => 0 )
          )
        );
$sig = base64_encode( sha1( $private_key . $data . $private_key, 1) );
echo '
   <form method="POST" action="https://www.liqpay.com/api/checkout"
   accept-charset="utf-8">
     <input type="hidden" name="data" value="'.$data.'" />
     <input type="hidden" name="signature" value="'.$sig.'" />
     <input type="image" src="//static.liqpay.com/buttons/p1ru.radius.png" />
   </form>';

он вместо преобразования - возвращает нуль!!!

Кто "он"? LiqPay или settype?

Я думаю нужна строка, но правильно отформатированная

$amount = number_format($pt, 2, '.');

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.