This is less of a WordPress question and more of a styling questions but here is some feedback anyway.
You could create a class and use your themes style.css or for examples below, inline CSS. You can either use the word-spacing property or left/right padding on some span elements to get the desired spacing.
<?php
echo do_shortcode('[su_button url="http://google.com/checkout/" target="self" background="#2D89EF" color="#FFFFFF" size="3" wide="no" center="no" radius="auto" icon="icon: shopping-cart" icon_color="#FFFFFF" text_shadow="none" desc="" onclick="" class=""]<span style="word-spacing: 30px;">Buy now $149</span>[/su_button]');
?>
Or…
<?php
echo do_shortcode('[su_button url="http://google.com/checkout/" target="self" background="#2D89EF" color="#FFFFFF" size="3" wide="no" center="no" radius="auto" icon="icon: shopping-cart" icon_color="#FFFFFF" text_shadow="none" desc="" onclick="" class=""]<span style="padding-right:40px;">Buy now </span>$149[/su_button]');
?>