The holdup happened around 9:30 a.m. in the 200 block of Fayetteville Street.

An eyewitness installing blinds in a nearby office window noticed smoke coming from the robber's backpack after a dye pack inside exploded.

A witness said a dye pack in the bag of money exploded and the robber stopped to pick through the cash before leaving the scene (image courtesy Mark McCormick)

"He set stuff on the bench and started going through the backpack trying to dig out the money, you know, that didn't have the red dye on it," said eyewitness Mark McCormick. "And (he) set his hoodie down, tried to change a little bit and just casually walked off."

According to arrest warrants made public Monday, police also accuse Johnson of threatening a teen with a handgun at a McDonald's restaurant on Blue Ridge Road Sunday and taking $160 from her.

Johnson is charged with common law robbery, robbery with a dangerous weapon, and second-degree kidnapping.

Police said he was taken into custody without incident and taken to the Wake County Detention Center.