We did this by running with a third party API that did all the Geo stuff with a call to the service on page load (stored locally after first load). We would simply blocks of API calls and pass the cost onto the customer.
The reason why I don't name the vendor is because they shut down and left our site with no geo branching, which is quite dangerous in our case. We quickly moved to a server with GeoIP installed and regulary updated. There really is no substitute and definately no more stable method of doing it.
That said, I'm surprised the ecommerce module *requires* it. There are a ton of PHP ecommerce solutions out there, and none require a server dependancy like that as far as I know.