on the subject of QR codes, you could just print a separate code above each item in the vending machine, then all a customer has to do is scan the code and push 'confirm' and the machine will vend whenever it receives a payment on the particular account.
Of course this means if you ever change prices you need to re-print codes with the correct payment value on it, but it does mean that no codes need to be entered into the machine at all.
Will