I once had to implement an international shipping component for an ecommerce site. If at first glance, you claimed that this was neither hard nor interesting, you’d be half right. Shipping is a well understood concept, at least from a user point of view: You pay some one to transport stuff from point A to point B and all you have to do is make sure it is well packaged. This is mostly true and fairly easy for domestic U.S. shipping. However, as soon as you start shipping to foreign countries, quite a lot changes.
First, there are many varied address formats, some of which can be validated and some of which cannot. Second, some addresses are just unexpected. Finally, there are many rules and regulations one needs to be aware of.
Here is my recipe for doing this successfully:
Read the USPS international shipping manual closely and distill it into a database design that accounts for shipping zones, customs requirements, embargoed countries, along with the vagaries and accidents of history and geography.
Write data management scripts and add a user interface so someone else can manage it and then you can ship to Albania, Zimbabwe and the 188 other countries the USPS delivers to! Just don’t try to send vicuna pelts to Argentina or melatonin to Germany. Both are illegal.