mdreed,
Alternatively, you could house the SP's on a separate server that has a connection to the target DB and the SP's would, in effect, be using a separate connection string to get to the actual data. However, at some point, the target database's data has to be access to some extent, otherwise, what's the point of the exercise.
If you take the Dev/Prod approach, the 3rd party developer doesn't know anything about the connections to the Prod database, even though they might know something about the Dev database connections.
For the specific example you cited, you can either house the basic merchandise information or the SP's to access that data (from the secured database) on a less secure database and still do the authentication (using the SP trick) from the main, secured database.