For the presentation layer of the "Add Donation" use case it must be possible to collect the data in a multi-step browser form.
At the moment, the form works like this:
1st form: Set payment options
2nd form: Enter personal data (also dependent on the payment options set, some allow anonymous donations).
3rd form: If payment type is direct debit (Lastschrift), ask for permission, otherwise skip this form.
The posted data is validated and stored between each step, the user can only continue to the next step, if the data is valid. The final processing of the form data (storing the donation, sending mails, contacting the payment provider) happens after all form steps have been completed.
In the old application the "temporary storage" of field values between form steps happens in hidden form fields, which kind of breaks the browser back button: the user gets the "do you want to resend the form values" dialog of the browser when he clicks the browser "Back" button.
In the new application we will use client-side scripting to send parts of the form to validation endpoints and to display and hide the the form steps.