Here's one approach which may work for you.
In the option list, (on the cart page or wherever), give the free shipping a value of 0, the paid shipping a value of 1.
set the session variable to be the value of the list option
In the shipping tab for the eCart object, create a new shipping rule, and test for the existence of the session variable you created.
set the calculation to be flat rate, $_SESSION['testshipping'] * 8.
in the case where the free shipping is selected 0 * 8 will give you 0, but the other option will give you 1 * 8
the screenshot for the eCart object is attached, the code block in the cart_PHP.php page looks like this...
//eCart Rule
function WAEC_rainbowcart_test() {
$totalShipping = 0;
if (true && ((isset($_SESSION['testshipping'])))) {
$totalShipping += $_SESSION['testshipping'] * 8;//Result
}
return WA_eCart_FormatNumber($totalShipping, $this->ForceDecimalsC, $this->DecimalPlacesC);
}
//eCart Rule