create a shoppingCart object
call its add_cart() method to put the donation product (with associated attributes) into the cart
create/populate the order object
Why fuss with a shopping cart object??
Create the form as you posted where they can adjust the donation
You will have to hook to what ever payment processor you are using to process the payment
The Thank you can be just a html page with a link back to your shop

Processors usually have examples of html code to trigger collection

So no php code should be required

So no php code required