initial import
[Business-OnlinePayment-PPIPayMover.git] / lib / Business / OnlinePayment / PPIPayMover / CountryCodes.pm
1 package Business::OnlinePayment::PPIPayMover::CountryCodes;\r
2 \r
3 use strict;\r
4 use vars qw(@ISA @EXPORT %countryHash);\r
5 use Exporter;\r
6 \r
7 @ISA = qw(Exporter);\r
8 @EXPORT = qw(getCountry\r
9   getNumericCountryCode\r
10   isValidCountryCode\r
11 getCCodeFromCName);\r
12 \r
13 # Two Character Country Codes */\r
14 %countryHash = ("DZ" => "ALGERIA:012",\r
15   "BJ" => "BENIN:204",\r
16   "BW" => "BOTSWANA:072",\r
17   "BF" => "BURKINA FASO:854",\r
18   "BI" => "BURUNDI:108",\r
19   "CM" => "CAMEROON:120",\r
20   "CV" => "CAPE VERDE:132",\r
21   "CF" => "CENTRAL AFRICAN REPUBLIC:140",\r
22   "TD" => "CHAD:148",\r
23   "KM" => "COMOROS:174",\r
24   "CG" => "CONGO:178",\r
25   "CI" => "COTE DIVOIRE:384",\r
26   "DJ" => "DJIBOUTI:262",\r
27   "EG" => "EGYPT:818",\r
28   "GQ" => "EQUATORIAL GUINEA:226",\r
29   "ER" => "ERITREA:232",\r
30   "ET" => "ETHIOPIA:231",\r
31   "GA" => "GABON:266",\r
32   "GM" => "GAMBIA:270",\r
33   "GH" => "GHANA:288",\r
34   "GN" => "GUINEA:324",\r
35   "GW" => "GUINEA BISSAU:624",\r
36   "KE" => "KENYA:404",\r
37   "LS" => "LESOTHO:426",\r
38   "LR" => "LIBERIA:430",\r
39   "MG" => "MADAGASCAR:450",\r
40   "MW" => "MALAWI:454",\r
41   "ML" => "MALI:466",\r
42   "MR" => "MAURITANIA:478",\r
43   "YT" => "MAYOTTE:175",\r
44   "MA" => "MOROCCO:504",\r
45   "MZ" => "MOZAMBIQUE:508",\r
46   "NA" => "NAMIBIA:516",\r
47   "NE" => "NIGER:562",\r
48   "NG" => "NIGERIA:566",\r
49   "RE" => "REUNION:638",\r
50   "ST" => "SAO TOME AND PRINCIPE:678",\r
51   "SN" => "SENEGAL:686",\r
52   "SL" => "SIERRA LEONE:694",\r
53   "SO" => "SOMALIA:706",\r
54   "ZA" => "SOUTH AFRICA:710",\r
55   "SH" => "ST HELENA:654",\r
56   "SD" => "SUDAN:736",\r
57   "SZ" => "SWAZILAND:748",\r
58   "TZ" => "TANZANIA:834",\r
59   "TG" => "TOGO:768",\r
60   "TN" => "TUNISIA:788",\r
61   "UG" => "UGANDA:800",\r
62   "EH" => "WESTERN SAHARA:732",\r
63   "ZR" => "ZAIRE:180",\r
64   "ZM" => "ZAMBIA:894",\r
65   "ZW" => "ZIMBABWE:716",\r
66   \r
67 # Antartica\r
68   "AQ" => "ANTARCTICA:010",\r
69   \r
70 # Asia\r
71   "AF" => "AFGHANISTAN:004",\r
72   "BD" => "BANGLADESH:050",\r
73   "BT" => "BHUTAN:064",\r
74   "BN" => "BRUNEI:096",\r
75   "KH" => "CAMBODIA:116",\r
76   "CN" => "CHINA:156",\r
77   "HK" => "HONG KONG:344",\r
78   "IN" => "INDIA:356",\r
79   "ID" => "INDONESIA:360",\r
80   "JP" => "JAPAN:392",\r
81   "KZ" => "KAZAKHSTAN:398",\r
82   "KG" => "KYRGYZSTAN:417",\r
83   "LA" => "LAOS:418",\r
84   "MO" => "MACAU:446",\r
85   "MY" => "MALAYSIA:458",\r
86   "MV" => "MALDIVES:462",\r
87   "MN" => "MONGOLIA:496",\r
88   "NP" => "NEPAL:524",\r
89   "PK" => "PAKISTAN:586",\r
90   "PH" => "PHILIPPINES:608",\r
91   "KR" => "REPUBLIC OF KOREA:410",\r
92   "RU" => "RUSSIA:643",\r
93   "SC" => "SEYCHELLES:690",\r
94   "SG" => "SINGAPORE:702",\r
95   "LK" => "SRI LANKA:144",\r
96   "TW" => "TAIWAN:158",\r
97   "TJ" => "TAJIKISTAN:762",\r
98   "TH" => "THAILAND:764",\r
99   "TM" => "TURKMENISTAN:795",\r
100   "UZ" => "UZBEKISTAN:860",\r
101   "VN" => "VIETNAM:704",\r
102   \r
103 # Australia\r
104   "AS" => "AMERICAN SAMOA:016",\r
105   "AU" => "AUSTRALIA:036",\r
106   "FM" => "FEDERATED STATES OF MICRONESIA:583",\r
107   "FJ" => "FIJI:242",\r
108   "PF" => "FRENCH POLYNESIA:258",\r
109   "GU" => "GUAM:316",\r
110   "KI" => "KIRIBATI:296",\r
111   "MH" => "MARSHALL ISLANDS:584",\r
112   "NR" => "NAURU:520",\r
113   "NC" => "NEW CALEDONIA:540",\r
114   "NZ" => "NEW ZEALAND:554",\r
115   "MP" => "NORTHERN MARIANA ISLANDS:580",\r
116   "PW" => "PALAU:585",\r
117   "PG" => "PAPUA NEW GUINEA:598",\r
118   "PN" => "PITCAIRN:612",\r
119   "SB" => "SOLOMON ISLANDS:090",\r
120   "TO" => "TONGA:776",\r
121   "TV" => "TUVALU:798",\r
122   "VU" => "VANUATU:548",\r
123   \r
124 # Caribbean\r
125   "AI" => "ANGUILLA:660",\r
126   "AG" => "ANTIGUA AND BARBUDA:028",\r
127   "AW" => "ARUBA:533",\r
128   "BS" => "BAHAMAS:044",\r
129   "BB" => "BARBADOS:052",\r
130   "BM" => "BERMUDA:060",\r
131   "KY" => "CAYMAN ISLANDS:136",\r
132   "DM" => "DOMINICA:212",\r
133   "DO" => "DOMINICAN REPUBLIC:214",\r
134   "GD" => "GRENADA:308",\r
135   "GP" => "GUADELOUPE:312",\r
136   "HT" => "HAITI:332",\r
137   "JM" => "JAMAICA:388",\r
138   "MQ" => "MARTINIQUE:474",\r
139   "AN" => "NETHERLANDS ANTILLES:530",\r
140   "PR" => "PUERTO RICO:630",\r
141   "KN" => "ST KITTS AND NEVIS:659",\r
142   "LC" => "ST LUCIA:662",\r
143   "VC" => "ST VINCENT AND THE GRENADINES:670",\r
144   "TT" => "TRINIDAD AND TOBAGO:780",\r
145   "TC" => "TURKS AND CAICOS ISLANDS:796",\r
146   "VG" => "VIRGIN ISLANDS BRITISH:092",\r
147   "VI" => "VIRGIN ISLANDS USA:850",\r
148   \r
149 # Central America\r
150   "BZ" => "BELIZE:084",\r
151   "CR" => "COSTA RICA:188",\r
152   "SV" => "EL SALVADOR:222",\r
153   "GT" => "GUATEMALA:320",\r
154   "HN" => "HONDURAS:340",\r
155   "NI" => "NICARAGUA:558",\r
156   "PA" => "PANAMA:591",\r
157   \r
158 #  Europe\r
159   "AL" => "ALBANIA:008",\r
160   "AD" => "ANDORRA:020",\r
161   "AM" => "ARMENIA:051",\r
162   "AT" => "AUSTRIA:040",\r
163   "AZ" => "AZERBAIJAN:031",\r
164   "BY" => "BELARUS:112",\r
165   "BE" => "BELGIUM:056",\r
166   "BG" => "BULGARIA:100",\r
167   "HR" => "CROATIA:191",\r
168   "CY" => "CYPRUS:196",\r
169   "CZ" => "CZECH REPUBLIC:203",\r
170   "DK" => "DENMARK:208",\r
171   "EE" => "ESTONIA:233",\r
172   "FO" => "FAROE ISLANDS:234",\r
173   "FI" => "FINLAND:246",\r
174   "FR" => "FRANCE:250",\r
175   "GE" => "GEORGIA:268",\r
176   "DE" => "GERMANY:276",\r
177   "GI" => "GIBRALTAR:292",\r
178   "GR" => "GREECE:300",\r
179   "GL" => "GREENLAND:304",\r
180   "HU" => "HUNGARY:348",\r
181   "IS" => "ICELAND:352",\r
182   "IE" => "IRELAND:372",\r
183   "IT" => "ITALY:380",\r
184   "LV" => "LATVIA:428",\r
185   "LI" => "LIECHTENSTEIN:438",\r
186   "LT" => "LITHUANIA:440",\r
187   "LU" => "LUXEMBOURG:442",\r
188   "MT" => "MALTA:470",\r
189   "FX" => "METROPOLITAN FRANCE:249",\r
190   "MD" => "MOLDOVA:498",\r
191   "NL" => "NETHERLANDS:528",\r
192   "NO" => "NORWAY:578",\r
193   "PL" => "POLAND:616",\r
194   "PT" => "PORTUGAL:620",\r
195   "RO" => "ROMANIA:642",\r
196   "SK" => "SLOVAKIA:703",\r
197   "SI" => "SLOVENIA:705",\r
198   "ES" => "SPAIN:724",\r
199   "SJ" => "SVALBARD AND JAN MAYEN ISLANDS:744",\r
200   "SE" => "SWEDEN:752",\r
201   "CH" => "SWITZERLAND:756",\r
202   "MK" => "REPUBLIC OF MACEDONIA:807",\r
203   "TR" => "TURKEY:792",\r
204   "UA" => "UKRAINE:804",\r
205   "GB" => "UNITED KINGDOM:826",\r
206   "VA" => "VATICAN CITY:336",\r
207   "YU" => "YUGOSLAVIA:891",\r
208   \r
209 # Middle East\r
210   "IL" => "ISRAEL:376",\r
211   "JO" => "JORDAN:400",\r
212   "KW" => "KUWAIT:414",\r
213   "LB" => "LEBANON:422",\r
214   "OM" => "OMAN:512",\r
215   "QA" => "QATAR:634",\r
216   "SA" => "SAUDI ARABIA:682",\r
217   "SY" => "SYRIA:760",\r
218   "AE" => "UNITED ARAB EMIRATES:784",\r
219   "YE" => "YEMEN:887",\r
220   \r
221 # North America\r
222   "CA" => "CANADA:124",\r
223   "MX" => "MEXICO:484",\r
224   "US" => "UNITED STATES:840",\r
225   \r
226 # South America\r
227   "AR" => "ARGENTINA:032",\r
228   "BO" => "BOLIVIA:068",\r
229   "BR" => "BRAZIL:076",\r
230   "CL" => "CHILE:152",\r
231   "CO" => "COLOMBIA:170",\r
232   "EC" => "EQUADOR:218",\r
233   "FK" => "FALKLAND ISLANDS:238",\r
234   "GF" => "FRENCH GUIANA:254",\r
235   "GY" => "GUYANA:328",\r
236   "PY" => "PARAGUAY:600",\r
237   "PE" => "PERU:604",\r
238   "SR" => "SURINAME:740",\r
239   "UY" => "URUGUAY:858",\r
240   "VE" => "VENEZUELA:862",\r
241   \r
242 # Others\r
243   "BH" => "BAHRAIN:048",\r
244   "BV" => "BOUVET ISLANDS:074",\r
245   "IO" => "BRITISH INDIAN OCEAN TERRITORY:086",\r
246   "CX" => "CHRISTMAS ISLANDS:162",\r
247   "CC" => "COCOS KEELING ISLANDS:166",\r
248   "CK" => "COOK ISLAND:184",\r
249   "TP" => "EAST TIMOR:626",\r
250   "TF" => "FRENCH SOUTHERN TERRITORIES:260",\r
251   "HM" => "HEARD AND MCDONALD ISLANDS:334",\r
252   "MU" => "MAURITIUS:480",\r
253   "MC" => "MONACO:492",\r
254   "MS" => "MONTSERRAT:500",\r
255   "MM" => "MYANMAR:104",\r
256   "NU" => "NIUE:570",\r
257   "NF" => "NORFOLK ISLAND:574",\r
258   "WS" => "SAMOA:882",\r
259   "SM" => "SAN MARINO:674",\r
260   "PM" => "ST PIERRE AND MIQUELON:666",\r
261   "TK" => "TOKELAU:772",\r
262   "UM" => "UNITED STATES MINOR OUTLYING ISLANDS:581",\r
263   "WF" => "WALLIS AND FUTUNA ISLANDS:876",\r
264   \r
265   "AO" => "ANGOLA:024",\r
266   "BA" => "BOSNIA AND HERZEGOWINA:070",\r
267   "CU" => "CUBA:192",\r
268   "IR" => "ISLAMIC REPUBLIC OF IRAN:364",\r
269   "IQ" => "IRAQ:368",\r
270   "KP" => "DEMOCRATIC PEOPLES REPUBLIC OF KOREA:408",\r
271   "LY" => "LIBYAN ARAB JAMAHIRIYA:434",\r
272   "RW" => "RWANDA:646",\r
273   "GS" => "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS:39",\r
274   "CD" => "DEMOCRATIC REPUBLIC OF THE CONGO:180",\r
275   "PS" => "OCCUPIED PALESTINIAN TERRITORY:275"\r
276 );\r
277 \r
278 \r
279 sub getCountry {\r
280   my $countryCode = shift; # give country code as an arguement to get country name\r
281   if(exists $CountryCodes::countryHash{$countryCode}){\r
282     my $countryName;\r
283     my $countryNumber;\r
284     ($countryName, $countryNumber) = split(/:/, $CountryCodes::countryHash{$countryCode});\r
285     return $countryName;\r
286   }\r
287   else { return undef }\r
288 }\r
289 \r
290 sub getNumericCountryCode {\r
291   my $countryCode = shift; # give country code as an arguement to get numeric country code\r
292   if(exists $CountryCodes::countryHash{$countryCode}) {\r
293     my $countryName;\r
294     my $countryNumber;\r
295     ($countryName, $countryNumber) = split(/:/, $CountryCodes::countryHash{$countryCode});\r
296     return $countryNumber;\r
297   }\r
298   else {return undef}\r
299 }\r
300 \r
301 \r
302 sub isValidCountryCode {\r
303   my $countryCode = shift;\r
304   return (exists $CountryCodes::countryHash{$countryCode});\r
305 }\r
306 \r
307 sub getCCodeFromCName {\r
308   my $country = shift; # give country name as an arguement to get country code\r
309   $country = uc($country);\r
310   my $key;\r
311   my $countryName;\r
312   my $countryNumber;\r
313   foreach $key (keys(%CountryCodes::countryHash)){\r
314     ($countryName, $countryNumber) = split(/:/, $CountryCodes::countryHash{$key});\r
315     if ($country  eq  $countryName) { return $key}\r
316   }\r
317   return undef;\r
318 }\r