Typically the return URL would be more simple, and then you would be calling GetExpressCheckoutDetails at that point to obtain all the data you need. You could also use session variables or temporary db storage to ensure data you need is available that point. That will work better for you than trying to pass all this data around in URL params.
... View more