/usr/local/CPAN/Business-OnlinePayment-PPIPayMover/Business/OnlinePayment/PPIPayMover/CountryCodes.pm
package Business::OnlinePayment::PPIPayMover::CountryCodes;
use strict;
use vars qw(@ISA @EXPORT %countryHash);
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(getCountry
getNumericCountryCode
isValidCountryCode
getCCodeFromCName);
# Two Character Country Codes */
%countryHash = ("DZ" => "ALGERIA:012",
"BJ" => "BENIN:204",
"BW" => "BOTSWANA:072",
"BF" => "BURKINA FASO:854",
"BI" => "BURUNDI:108",
"CM" => "CAMEROON:120",
"CV" => "CAPE VERDE:132",
"CF" => "CENTRAL AFRICAN REPUBLIC:140",
"TD" => "CHAD:148",
"KM" => "COMOROS:174",
"CG" => "CONGO:178",
"CI" => "COTE DIVOIRE:384",
"DJ" => "DJIBOUTI:262",
"EG" => "EGYPT:818",
"GQ" => "EQUATORIAL GUINEA:226",
"ER" => "ERITREA:232",
"ET" => "ETHIOPIA:231",
"GA" => "GABON:266",
"GM" => "GAMBIA:270",
"GH" => "GHANA:288",
"GN" => "GUINEA:324",
"GW" => "GUINEA BISSAU:624",
"KE" => "KENYA:404",
"LS" => "LESOTHO:426",
"LR" => "LIBERIA:430",
"MG" => "MADAGASCAR:450",
"MW" => "MALAWI:454",
"ML" => "MALI:466",
"MR" => "MAURITANIA:478",
"YT" => "MAYOTTE:175",
"MA" => "MOROCCO:504",
"MZ" => "MOZAMBIQUE:508",
"NA" => "NAMIBIA:516",
"NE" => "NIGER:562",
"NG" => "NIGERIA:566",
"RE" => "REUNION:638",
"ST" => "SAO TOME AND PRINCIPE:678",
"SN" => "SENEGAL:686",
"SL" => "SIERRA LEONE:694",
"SO" => "SOMALIA:706",
"ZA" => "SOUTH AFRICA:710",
"SH" => "ST HELENA:654",
"SD" => "SUDAN:736",
"SZ" => "SWAZILAND:748",
"TZ" => "TANZANIA:834",
"TG" => "TOGO:768",
"TN" => "TUNISIA:788",
"UG" => "UGANDA:800",
"EH" => "WESTERN SAHARA:732",
"ZR" => "ZAIRE:180",
"ZM" => "ZAMBIA:894",
"ZW" => "ZIMBABWE:716",
# Antartica
"AQ" => "ANTARCTICA:010",
# Asia
"AF" => "AFGHANISTAN:004",
"BD" => "BANGLADESH:050",
"BT" => "BHUTAN:064",
"BN" => "BRUNEI:096",
"KH" => "CAMBODIA:116",
"CN" => "CHINA:156",
"HK" => "HONG KONG:344",
"IN" => "INDIA:356",
"ID" => "INDONESIA:360",
"JP" => "JAPAN:392",
"KZ" => "KAZAKHSTAN:398",
"KG" => "KYRGYZSTAN:417",
"LA" => "LAOS:418",
"MO" => "MACAU:446",
"MY" => "MALAYSIA:458",
"MV" => "MALDIVES:462",
"MN" => "MONGOLIA:496",
"NP" => "NEPAL:524",
"PK" => "PAKISTAN:586",
"PH" => "PHILIPPINES:608",
"KR" => "REPUBLIC OF KOREA:410",
"RU" => "RUSSIA:643",
"SC" => "SEYCHELLES:690",
"SG" => "SINGAPORE:702",
"LK" => "SRI LANKA:144",
"TW" => "TAIWAN:158",
"TJ" => "TAJIKISTAN:762",
"TH" => "THAILAND:764",
"TM" => "TURKMENISTAN:795",
"UZ" => "UZBEKISTAN:860",
"VN" => "VIETNAM:704",
# Australia
"AS" => "AMERICAN SAMOA:016",
"AU" => "AUSTRALIA:036",
"FM" => "FEDERATED STATES OF MICRONESIA:583",
"FJ" => "FIJI:242",
"PF" => "FRENCH POLYNESIA:258",
"GU" => "GUAM:316",
"KI" => "KIRIBATI:296",
"MH" => "MARSHALL ISLANDS:584",
"NR" => "NAURU:520",
"NC" => "NEW CALEDONIA:540",
"NZ" => "NEW ZEALAND:554",
"MP" => "NORTHERN MARIANA ISLANDS:580",
"PW" => "PALAU:585",
"PG" => "PAPUA NEW GUINEA:598",
"PN" => "PITCAIRN:612",
"SB" => "SOLOMON ISLANDS:090",
"TO" => "TONGA:776",
"TV" => "TUVALU:798",
"VU" => "VANUATU:548",
# Caribbean
"AI" => "ANGUILLA:660",
"AG" => "ANTIGUA AND BARBUDA:028",
"AW" => "ARUBA:533",
"BS" => "BAHAMAS:044",
"BB" => "BARBADOS:052",
"BM" => "BERMUDA:060",
"KY" => "CAYMAN ISLANDS:136",
"DM" => "DOMINICA:212",
"DO" => "DOMINICAN REPUBLIC:214",
"GD" => "GRENADA:308",
"GP" => "GUADELOUPE:312",
"HT" => "HAITI:332",
"JM" => "JAMAICA:388",
"MQ" => "MARTINIQUE:474",
"AN" => "NETHERLANDS ANTILLES:530",
"PR" => "PUERTO RICO:630",
"KN" => "ST KITTS AND NEVIS:659",
"LC" => "ST LUCIA:662",
"VC" => "ST VINCENT AND THE GRENADINES:670",
"TT" => "TRINIDAD AND TOBAGO:780",
"TC" => "TURKS AND CAICOS ISLANDS:796",
"VG" => "VIRGIN ISLANDS BRITISH:092",
"VI" => "VIRGIN ISLANDS USA:850",
# Central America
"BZ" => "BELIZE:084",
"CR" => "COSTA RICA:188",
"SV" => "EL SALVADOR:222",
"GT" => "GUATEMALA:320",
"HN" => "HONDURAS:340",
"NI" => "NICARAGUA:558",
"PA" => "PANAMA:591",
# Europe
"AL" => "ALBANIA:008",
"AD" => "ANDORRA:020",
"AM" => "ARMENIA:051",
"AT" => "AUSTRIA:040",
"AZ" => "AZERBAIJAN:031",
"BY" => "BELARUS:112",
"BE" => "BELGIUM:056",
"BG" => "BULGARIA:100",
"HR" => "CROATIA:191",
"CY" => "CYPRUS:196",
"CZ" => "CZECH REPUBLIC:203",
"DK" => "DENMARK:208",
"EE" => "ESTONIA:233",
"FO" => "FAROE ISLANDS:234",
"FI" => "FINLAND:246",
"FR" => "FRANCE:250",
"GE" => "GEORGIA:268",
"DE" => "GERMANY:276",
"GI" => "GIBRALTAR:292",
"GR" => "GREECE:300",
"GL" => "GREENLAND:304",
"HU" => "HUNGARY:348",
"IS" => "ICELAND:352",
"IE" => "IRELAND:372",
"IT" => "ITALY:380",
"LV" => "LATVIA:428",
"LI" => "LIECHTENSTEIN:438",
"LT" => "LITHUANIA:440",
"LU" => "LUXEMBOURG:442",
"MT" => "MALTA:470",
"FX" => "METROPOLITAN FRANCE:249",
"MD" => "MOLDOVA:498",
"NL" => "NETHERLANDS:528",
"NO" => "NORWAY:578",
"PL" => "POLAND:616",
"PT" => "PORTUGAL:620",
"RO" => "ROMANIA:642",
"SK" => "SLOVAKIA:703",
"SI" => "SLOVENIA:705",
"ES" => "SPAIN:724",
"SJ" => "SVALBARD AND JAN MAYEN ISLANDS:744",
"SE" => "SWEDEN:752",
"CH" => "SWITZERLAND:756",
"MK" => "REPUBLIC OF MACEDONIA:807",
"TR" => "TURKEY:792",
"UA" => "UKRAINE:804",
"GB" => "UNITED KINGDOM:826",
"VA" => "VATICAN CITY:336",
"YU" => "YUGOSLAVIA:891",
# Middle East
"IL" => "ISRAEL:376",
"JO" => "JORDAN:400",
"KW" => "KUWAIT:414",
"LB" => "LEBANON:422",
"OM" => "OMAN:512",
"QA" => "QATAR:634",
"SA" => "SAUDI ARABIA:682",
"SY" => "SYRIA:760",
"AE" => "UNITED ARAB EMIRATES:784",
"YE" => "YEMEN:887",
# North America
"CA" => "CANADA:124",
"MX" => "MEXICO:484",
"US" => "UNITED STATES:840",
# South America
"AR" => "ARGENTINA:032",
"BO" => "BOLIVIA:068",
"BR" => "BRAZIL:076",
"CL" => "CHILE:152",
"CO" => "COLOMBIA:170",
"EC" => "EQUADOR:218",
"FK" => "FALKLAND ISLANDS:238",
"GF" => "FRENCH GUIANA:254",
"GY" => "GUYANA:328",
"PY" => "PARAGUAY:600",
"PE" => "PERU:604",
"SR" => "SURINAME:740",
"UY" => "URUGUAY:858",
"VE" => "VENEZUELA:862",
# Others
"BH" => "BAHRAIN:048",
"BV" => "BOUVET ISLANDS:074",
"IO" => "BRITISH INDIAN OCEAN TERRITORY:086",
"CX" => "CHRISTMAS ISLANDS:162",
"CC" => "COCOS KEELING ISLANDS:166",
"CK" => "COOK ISLAND:184",
"TP" => "EAST TIMOR:626",
"TF" => "FRENCH SOUTHERN TERRITORIES:260",
"HM" => "HEARD AND MCDONALD ISLANDS:334",
"MU" => "MAURITIUS:480",
"MC" => "MONACO:492",
"MS" => "MONTSERRAT:500",
"MM" => "MYANMAR:104",
"NU" => "NIUE:570",
"NF" => "NORFOLK ISLAND:574",
"WS" => "SAMOA:882",
"SM" => "SAN MARINO:674",
"PM" => "ST PIERRE AND MIQUELON:666",
"TK" => "TOKELAU:772",
"UM" => "UNITED STATES MINOR OUTLYING ISLANDS:581",
"WF" => "WALLIS AND FUTUNA ISLANDS:876",
"AO" => "ANGOLA:024",
"BA" => "BOSNIA AND HERZEGOWINA:070",
"CU" => "CUBA:192",
"IR" => "ISLAMIC REPUBLIC OF IRAN:364",
"IQ" => "IRAQ:368",
"KP" => "DEMOCRATIC PEOPLES REPUBLIC OF KOREA:408",
"LY" => "LIBYAN ARAB JAMAHIRIYA:434",
"RW" => "RWANDA:646",
"GS" => "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS:39",
"CD" => "DEMOCRATIC REPUBLIC OF THE CONGO:180",
"PS" => "OCCUPIED PALESTINIAN TERRITORY:275"
);
sub getCountry {
my $countryCode = shift; # give country code as an arguement to get country name
if(exists $CountryCodes::countryHash{$countryCode}){
my $countryName;
my $countryNumber;
($countryName, $countryNumber) = split(/:/, $CountryCodes::countryHash{$countryCode});
return $countryName;
}
else { return undef }
}
sub getNumericCountryCode {
my $countryCode = shift; # give country code as an arguement to get numeric country code
if(exists $CountryCodes::countryHash{$countryCode}) {
my $countryName;
my $countryNumber;
($countryName, $countryNumber) = split(/:/, $CountryCodes::countryHash{$countryCode});
return $countryNumber;
}
else {return undef}
}
sub isValidCountryCode {
my $countryCode = shift;
return (exists $CountryCodes::countryHash{$countryCode});
}
sub getCCodeFromCName {
my $country = shift; # give country name as an arguement to get country code
$country = uc($country);
my $key;
my $countryName;
my $countryNumber;
foreach $key (keys(%CountryCodes::countryHash)){
($countryName, $countryNumber) = split(/:/, $CountryCodes::countryHash{$key});
if ($country eq $countryName) { return $key}
}
return undef;
}