I don't know the regulation and I am not affected by it. But in general I agree with @Yabber how it should be handled. A clean/standardized process, that is triggred by a button. Afterwards I would check if the order involves multiple products. If yes, I would ask the customer, if he wants to cancel the whole order or only some products.
A contact form might work as the oldfashioned solution, but imo it has only drawbacks (for merchant and customer).
I would only disagree with @Yabber, that cancellation and refund are totally different things. From a coding perspective, they are pretty strongly related. In both processes you have questions like:
Needs the current_state (order) be changed?
Is there a money refund involved?
Is the whole order involved or only some products?
In both cases restock might be needed.
So in short I would say, cancellation is a simple case of returns.