re
If you want them to interact with your NPCs, then interact with them. Talk to them like a magic item salesman would.
If they say, "I want to buy a magic item".
Say "Ok. You want to do that now?"
Player, "Yes".
You say, "You walk around town. You find Morum's Magic Emporium. It's a simple looking shop with a sign hanging over it with gold lettering."
Player, "Ok. I go in."
You, "You enter. There are no items on the shelves. It looks bare. But you see a few burly guards standing near a door. They perk up and watch you closely as soon as you come in. A gnome is sitting behind a large wooden desk. He looks up when you come in, 'Good afternoon, sir. What brings you to my fine establishment?"
Player, "I'm looking for a magic item."
You, "And what might you be looking for? I have plenty if you have plenty of coin. Come, sit down, let us talk."
If you as a DM take the time to develop a city including NPCs and places, then don't give your players a chance to refuse to talk. Make it interesting for them. Play up your NPCs and the places in the city. Make it fun for them to interact a bit and wander about your city. If they tell you they want to do something in particular, then make a roleplaying encounter of it and get them talking. You the DM have to get the ball rolling, not the player. The player need only tell you what they want to do and it is up to you to make the encounter interesting by interacting with them.
When it finally comes time where they would make a diplomacy check, if they have done enough you say "You succeeded" or maybe only give them a bonus.
As a DM you set the tone and standard for how the players play the game. They don't dicate to you how the game should be played. If you have taken the time to develop a city and feel like playing the NPCs in it, then start every interaction off with a roleplaying scenario. Get used to what your players like to do when in the city and roleplay accordingly.
As a DM I sometimes let my players do as your players do, make a check or sell a magic item quick if they've been doing it for a while. But I also like to build relationships in the world and I do just as I advised above. I talk to my players in character when they want to do something in the city and I give them an NPC with a personality to interact with. If you play the NPC well, most players will have fun interacting with them. It'll get them into the story more.
But you don't have to lay down the law and be a jerk to get your players to interact. Just give them no choice by becoming the NPC they are interacting with, just as you would not give them a choice when they have to fight a combat. But instead of fighting, they have to interact with your NPC that you are now playing the role of.