Request["SERVER_PORT"] will of course put in 443 because the BuyNow module is set to use SSL. We have a page setup called Marketplace, and in that we put the BuyNow module, and in the page "Other Settings" area, we have "Secure" checked, which means the buynow module will use the SSL certificate all the way through. For it to not to, PayPal would have to be isolated from SSL as a separate module, which cannot be done because it is all existing in the original BuyNow module. Or you just put in an override setting option, which would be used instead of building the server url with the port option. With that, you simply ignore the code you posted above, and just use the setting! Then all is solved!
I can't imagine I am the only one facing this... unless I have setup SSL wrong with the page the BuyNow module is on.
Note: you may not get many complaints because Internet Explorer wll partly register the return to the site, but the page will not be fully displayed. We first found out about this from a customer. Firefox completely freezes and does not return. So some sales are registered correctly in IE, but they are not in Firefox. Plus, the incomplete page does not look good. Users are presented with the browser warning about insecure items, etc., and some items are not displayed correctly.
Steve