Because your last name is only one syllable, I would tend to pick Zoe out of your three favorites (I'm assuming you'll pronounce it Zo-ee). Haley would be my second choice.
As for middle names, I have no idea what you might be looking for... some people like to go a little wild with middles and some people like to use honor names. Other just use "safe" names like Rose, Marie, and Leigh. Hard to know what to suggest.
I also like Zoe best and agree Haley is probably next best for flow with a one syllable last name. Zoe has much more history as a female first name than Haley or Quinn so you will find most folks on these forums voting for that although Haley and Quinn are both reasonable choices.
With a 2 syllable first name and one syllable last name I'd look for a 3+ syllable middle. Something with other Greek roots might be neat - Zoe Helena "life light" or Zoe Anastasia "life resurrection" if that religious imagery is OK by you.
Agreed that if your last name is one syllable, I'd go with your two-syllable choices, Zoe or Hayley.
Give us more to work from to suggest middle names! What are you going for with a middle name? Honor someone? Something you were too afraid to pick for a first name? I'm thinking that if you go with a two-syllable first name and you have a one-syllable last name, I would go with a three-syllable middle name since that would flow really nicely. E.g. "Hayley Adelaide Smith" sounds better than "Zoe Rose Smith" to me, purely based on the number of syllables (I'm using Smith as an imaginary last name so I can think about how it flows). Although without taking the last name into consideration, I suppose it doesn't matter so much (e.g. Hayley Marie on it's own sounds good, in terms of the syllable flow). And also, I'd say avoid repeating the ending "y" sound of Zoe and Hayley if you do end up choosing one of those.
I can't tell too much about your naming taste based on the three choices you shared, but here are some three syllable MNs that don't end in a "y" sound to consider that might go either with Hayley or Zoe: