I only saw your line where you set totalshipping to 0
Basically the only change needed really is those two lines you commented out just make what I have below. Ad amount is left at the price. shipping amount will be passed in quantity amount if there is one and quantity is passed. The template change I noted was more of a beautification thing like alot of your coding did with one small exception. You choose to do your calculations in the php file and alot of them are is different way of wording things. The only core change needed to pass things to the current template to work correctly is this after removing the two lines in buy.php you noted.
Content visible to verified customers only.
The default template works fine with just that one simple change to the buy.php file
But it till brings me back to my thoughts on when we initially coded this with paypal a ways ago it was done the reason it was done for a reason and thats because the shipping did not get passed. Shipping was always 0 when it went to paypal even though if we viewed the contents of our template the amount was in there. Maybe paypal has changed but I seem to remember there was a switch where a user had to elect whether to use shipping or not in there paypal setup. Hense it was coded the way it was so it would work for everyone. If paypal has changed things and shipping works for all then thats great news.