205 lines
4.3 KiB
PHP
205 lines
4.3 KiB
PHP
<?php namespace ZN\Payment;
|
|
|
|
class Currency
|
|
{
|
|
/**
|
|
* Currency short code list.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected static $list =
|
|
[
|
|
'USN' => 997,
|
|
'XSU' => 994,
|
|
'CLF' => 990,
|
|
'BRL' => 986,
|
|
'PLN' => 985,
|
|
'BOV' => 984,
|
|
'GEL' => 981,
|
|
'UAH' => 980,
|
|
'MXV' => 979,
|
|
'EUR' => 978,
|
|
'BAM' => 977,
|
|
'CDF' => 976,
|
|
'BGN' => 975,
|
|
'BYR' => 974,
|
|
'AOA' => 973,
|
|
'TJS' => 972,
|
|
'AFN' => 971,
|
|
'COU' => 970,
|
|
'MGA' => 969,
|
|
'SRD' => 968,
|
|
'ZMW' => 967,
|
|
'XUA' => 965,
|
|
'XDR' => 960,
|
|
'XPF' => 953,
|
|
'XOF' => 952,
|
|
'XCD' => 951,
|
|
'XAF' => 950,
|
|
'TRY' => 949,
|
|
'CHW' => 948,
|
|
'CHE' => 947,
|
|
'RON' => 946,
|
|
'AZN' => 944,
|
|
'MZN' => 943,
|
|
'RSD' => 941,
|
|
'UYI' => 940,
|
|
'SDG' => 938,
|
|
'VEF' => 937,
|
|
'GHS' => 936,
|
|
'TMT' => 934,
|
|
'ZWL' => 932,
|
|
'CUC' => 931,
|
|
'TWD' => 901,
|
|
'YER' => 886,
|
|
'WST' => 882,
|
|
'UZS' => 860,
|
|
'UYU' => 858,
|
|
'USD' => 840,
|
|
'TZS' => 834,
|
|
'GBP' => 826,
|
|
'EGP' => 818,
|
|
'MKD' => 807,
|
|
'UGX' => 800,
|
|
'TND' => 788,
|
|
'AED' => 784,
|
|
'TTD' => 780,
|
|
'TOP' => 776,
|
|
'THB' => 764,
|
|
'SYP' => 760,
|
|
'CHF' => 756,
|
|
'SEK' => 752,
|
|
'SZL' => 748,
|
|
'SSP' => 728,
|
|
'ZAR' => 710,
|
|
'SOS' => 706,
|
|
'VND' => 704,
|
|
'SGD' => 702,
|
|
'SLL' => 694,
|
|
'SCR' => 690,
|
|
'SAR' => 682,
|
|
'STN' => 678,
|
|
'SHP' => 654,
|
|
'RWF' => 646,
|
|
'RUB' => 643,
|
|
'QAR' => 634,
|
|
'PHP' => 608,
|
|
'PEN' => 604,
|
|
'PYG' => 600,
|
|
'PGK' => 598,
|
|
'PAB' => 590,
|
|
'PKR' => 586,
|
|
'NOK' => 578,
|
|
'NGN' => 566,
|
|
'NIO' => 558,
|
|
'NZD' => 554,
|
|
'VUV' => 548,
|
|
'AWG' => 533,
|
|
'ANG' => 532,
|
|
'NPR' => 524,
|
|
'NAD' => 516,
|
|
'OMR' => 512,
|
|
'MAD' => 504,
|
|
'MDL' => 498,
|
|
'MNT' => 496,
|
|
'MXN' => 484,
|
|
'MUR' => 480,
|
|
'MRU' => 478,
|
|
'MVR' => 462,
|
|
'MYR' => 458,
|
|
'MWK' => 454,
|
|
'MOP' => 446,
|
|
'LYD' => 434,
|
|
'LRD' => 430,
|
|
'LSL' => 426,
|
|
'LBP' => 422,
|
|
'LAK' => 418,
|
|
'KGS' => 417,
|
|
'KWD' => 414,
|
|
'KRW' => 410,
|
|
'KPW' => 408,
|
|
'KES' => 404,
|
|
'JOD' => 400,
|
|
'KZT' => 398,
|
|
'JPY' => 392,
|
|
'JMD' => 388,
|
|
'ILS' => 376,
|
|
'IQD' => 368,
|
|
'IRR' => 364,
|
|
'IDR' => 360,
|
|
'INR' => 356,
|
|
'ISK' => 352,
|
|
'HUF' => 348,
|
|
'HKD' => 344,
|
|
'HNL' => 340,
|
|
'HTG' => 332,
|
|
'GYD' => 328,
|
|
'GNF' => 324,
|
|
'GTQ' => 320,
|
|
'GIP' => 292,
|
|
'GMD' => 270,
|
|
'DJF' => 262,
|
|
'FJD' => 242,
|
|
'FKP' => 238,
|
|
'ERN' => 232,
|
|
'ETB' => 230,
|
|
'SVC' => 222,
|
|
'DOP' => 214,
|
|
'DKK' => 208,
|
|
'CZK' => 203,
|
|
'CUP' => 192,
|
|
'HRK' => 191,
|
|
'CRC' => 188,
|
|
'KMF' => 174,
|
|
'COP' => 170,
|
|
'CNY' => 156,
|
|
'CLP' => 152,
|
|
'LKR' => 144,
|
|
'KYD' => 136,
|
|
'CVE' => 132,
|
|
'CAD' => 124,
|
|
'KHR' => 116,
|
|
'BIF' => 108,
|
|
'MMK' => 104,
|
|
'BND' => 96,
|
|
'SBD' => 90,
|
|
'BZD' => 84,
|
|
'BWP' => 72,
|
|
'BOB' => 68,
|
|
'BTN' => 64,
|
|
'BMD' => 60,
|
|
'BBD' => 52,
|
|
'AMD' => 51,
|
|
'BDT' => 50,
|
|
'BHD' => 48,
|
|
'BSD' => 44,
|
|
'AUD' => 36,
|
|
'ARS' => 32,
|
|
'DZD' => 12,
|
|
'ALL' => 8
|
|
];
|
|
|
|
/**
|
|
* Get currency
|
|
*
|
|
* @param string|int $short
|
|
* @param string &key = NULL
|
|
*
|
|
* @return
|
|
*/
|
|
public static function get($short, &$code = NULL)
|
|
{
|
|
if( is_numeric($short) && in_array($short, self::$list) )
|
|
{
|
|
$code = array_flip(self::$list)[$short];
|
|
|
|
return $short;
|
|
}
|
|
elseif( $currency = (self::$list[$code = strtoupper($short)] ?? NULL) )
|
|
{
|
|
return $currency;
|
|
}
|
|
|
|
throw new Exception\InvalidCurrencyInformationException(NULL, $short);
|
|
}
|
|
} |