Use a custom keypad on your prompt to show just a numberpad.
At a guess you could add a second rule to on order added to check if price = 0 and cancel however this may disrupt other flows depending on your setup.
I would maybe look at having an execute automation command action after the update price action with prompt and set it to be backgroud (ie it waits for all other events to finnish - the prompt in this case) then use that to trigger the seccond rule which checks the price and cancels if 0 so that it only happens on items which have had the price set in this way.
I dont think you can tap into a prompt cancel in that way.
Forget the execute automation command method, I can see what your doing now.
Make another order added rule constrained to the same menu item names.
Make sure its after that rule you screenshot.
Add an extra constraint for price = 0 and put a cancel order action in it, so it cancels any order of that product if the price = 0