The victim, who was working at Cellini Jewelers off the hotel lobby, was taken to Bellevue Hospital, The New York Times reported. Police said his injuries were not life-threatening.
He was identified as Gregory Boyle, 54, who retired as a detective in Brooklyn in 2002.
Witnesses said a man dressed in black entered the store at about 2:30 p.m. and announced a robbery. Boyle grabbed the gunman, pulling out his own weapon, and struggled with him before being hit.
Another employee grabbed the suspect and held him for police with help from security guards who rushed into Cellini's.
The hotel lobby quickly filled with law enforcement personnel, including Secret Service agents who had been protecting Pakistani Prime Minister Asif Ali Zardari at a nearby hotel. They rushed to the Waldorf when they heard gunfire.
The shots caused panic in the hotel lobby.
Jeff Johnstone, a visitor from Raleigh, N.C., said he saw people heading into the bar and trying to hide behind chairs.
"Everybody just started running and I'm like, 'What's going on?'" he told the New York Post. "I just ran behind a column, just like everybody else."