id = 'az_fedex';
$this->method_title = __( 'Configure fedex' ); // Title shown in admin
$this->title = __( 'fedex fedex' );
$this->method_description = __( 'Real Time Rates, Premium Supports Shipping Label.' ); //
$this->enabled = "yes"; // This can be added as an setting but for this example its forced enabled
$this->init();
}
/**
* Init your settings
*
* @access public
* @return void
*/
function init() {
// Load the settings API
$this->init_form_fields(); // This is part of the settings API. Override the method to add your own settings
$this->init_settings(); // This is part of the settings API. Loads settings you previously init.
// Save settings in admin if you have any defined
add_action( 'woocommerce_update_options_shipping_' . $this->id, array( $this, 'process_admin_options' ) );
}
/**
* calculate_shipping function.
*
* @access public
* @param mixed $package
* @return void
*/
public function calculate_shipping( $package = array() ) {
$pack_aft_hook = apply_filters('a2z_fedex_rate_packages', $package);
$value = array();
$_carriers = array(
'FIRST_OVERNIGHT' => 'FedEx First Overnight',
'PRIORITY_OVERNIGHT' => 'FedEx Priority Overnight',
'STANDARD_OVERNIGHT' => 'FedEx Standard Overnight',
'FEDEX_2_DAY_AM' => 'FedEx 2Day A.M',
'FEDEX_2_DAY' => 'FedEx 2Day',
'SAME_DAY' => 'FedEx Same Day',
'SAME_DAY_CITY' => 'FedEx Same Day City',
'SAME_DAY_METRO_AFTERNOON' => 'FedEx Same Day Metro Afternoon',
'SAME_DAY_METRO_MORNING' => 'FedEx Same Day Metro Morning',
'SAME_DAY_METRO_RUSH' => 'FedEx Same Day Metro Rush',
'FEDEX_EXPRESS_SAVER' => 'FedEx Express Saver',
'GROUND_HOME_DELIVERY' => 'FedEx Ground Home Delivery',
'FEDEX_GROUND' => 'FedEx Ground',
'INTERNATIONAL_ECONOMY' => 'FedEx International Economy',
'INTERNATIONAL_ECONOMY_DISTRIBUTION' => 'FedEx International Economy Distribution',
'INTERNATIONAL_FIRST' => 'FedEx International First',
'INTERNATIONAL_GROUND' => 'FedEx International Ground',
'INTERNATIONAL_PRIORITY' => 'FedEx International Priority',
'INTERNATIONAL_PRIORITY_DISTRIBUTION' => 'FedEx International Priority Distribution',
'EUROPE_FIRST_INTERNATIONAL_PRIORITY' => 'FedEx Europe First International Priority',
'INTERNATIONAL_PRIORITY_EXPRESS' => 'FedEx International Priority Express',
'FEDEX_INTERNATIONAL_PRIORITY_PLUS' => 'FedEx First International Priority Plus',
'INTERNATIONAL_DISTRIBUTION_FREIGHT' => 'FedEx International Distribution Fright',
'FEDEX_1_DAY_FREIGHT' => 'FedEx 1 Day Freight',
'FEDEX_2_DAY_FREIGHT' => 'FedEx 2 Day Freight',
'FEDEX_3_DAY_FREIGHT' => 'FedEx 3 Day Freight',
'INTERNATIONAL_ECONOMY_FREIGHT' => 'FedEx Economy Freight',
'INTERNATIONAL_PRIORITY_FREIGHT' => 'FedEx Priority Freight',
'SMART_POST' => 'FedEx Smart Post',
'FEDEX_FIRST_FREIGHT' => 'FedEx First Freight',
'FEDEX_FREIGHT_ECONOMY' => 'FedEx Freight Economy',
'FEDEX_FREIGHT_PRIORITY' => 'FedEx Freight Priority',
'FEDEX_CARGO_AIRPORT_TO_AIRPORT' => 'FedEx CARGO Airport to Airport',
'FEDEX_CARGO_FREIGHT_FORWARDING' => 'FedEx CARGO Freight FOrwarding',
'FEDEX_CARGO_INTERNATIONAL_EXPRESS_FREIGHT' => 'FedEx CARGO International Express Fright',
'FEDEX_CARGO_INTERNATIONAL_PREMIUM' => 'FedEx CARGO International Premium',
'FEDEX_CARGO_MAIL' => 'FedEx CARGO Mail',
'FEDEX_CARGO_REGISTERED_MAIL' => 'FedEx CARGO Registered Mail',
'FEDEX_CARGO_SURFACE_MAIL' => 'FedEx CARGO Surface Mail',
'FEDEX_CUSTOM_CRITICAL_AIR_EXPEDITE_EXCLUSIVE_USE' => 'FedEx Custom Critical Air Expedite Exclusive Use',
'FEDEX_CUSTOM_CRITICAL_AIR_EXPEDITE_NETWORK' => 'FedEx Custom Critical Air Expedite Network',
'FEDEX_CUSTOM_CRITICAL_CHARTER_AIR' => 'FedEx Custom Critical Charter Air',
'FEDEX_CUSTOM_CRITICAL_POINT_TO_POINT' => 'FedEx Custom Critical Point to Point',
'FEDEX_CUSTOM_CRITICAL_SURFACE_EXPEDITE' => 'FedEx Custom Critical Surface Expedite',
'FEDEX_CUSTOM_CRITICAL_SURFACE_EXPEDITE_EXCLUSIVE_USE' => 'FedEx Custom Critical Surface Expedite Exclusive Use',
'FEDEX_CUSTOM_CRITICAL_TEMP_ASSURE_AIR' => 'FedEx Custom Critical Temp Assure Air',
'FEDEX_CUSTOM_CRITICAL_TEMP_ASSURE_VALIDATED_AIR' => 'FedEx Custom Critical Temp Assure Validated Air',
'FEDEX_CUSTOM_CRITICAL_WHITE_GLOVE_SERVICES' => 'FedEx Custom Critical White Glove Services',
'TRANSBORDER_DISTRIBUTION_CONSOLIDATION' => 'Fedex Transborder Distribution Consolidation',
'FEDEX_DISTANCE_DEFERRED' => 'FedEx Distance Deferred',
'FEDEX_NEXT_DAY_EARLY_MORNING' => 'FedEx Next Day Early Morning',
'FEDEX_NEXT_DAY_MID_MORNING' => 'FedEx Next Day Mid Morning',
'FEDEX_NEXT_DAY_AFTERNOON' => 'FedEx Next Day Afternoon',
'FEDEX_NEXT_DAY_END_OF_DAY' => 'FedEx Next Day End of Day',
'FEDEX_NEXT_DAY_FREIGHT' => 'FedEx Next Day Freight',
);
$value['AD'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['AE'] = array('currency' =>'AED', 'weight' => 'KG_CM');
$value['AF'] = array('currency' =>'AFN', 'weight' => 'KG_CM');
$value['AG'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['AI'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['AL'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['AM'] = array('currency' =>'AMD', 'weight' => 'KG_CM');
$value['AN'] = array('currency' =>'ANG', 'weight' => 'KG_CM');
$value['AO'] = array('currency' =>'AOA', 'weight' => 'KG_CM');
$value['AR'] = array('currency' =>'ARS', 'weight' => 'KG_CM');
$value['AS'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['AT'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['AU'] = array('currency' =>'AUD', 'weight' => 'KG_CM');
$value['AW'] = array('currency' =>'AWG', 'weight' => 'LB_IN');
$value['AZ'] = array('currency' =>'AZN', 'weight' => 'KG_CM');
$value['AZ'] = array('currency' =>'AZN', 'weight' => 'KG_CM');
$value['GB'] = array('currency' =>'GBP', 'weight' => 'KG_CM');
$value['BA'] = array('currency' =>'BAM', 'weight' => 'KG_CM');
$value['BB'] = array('currency' =>'BBD', 'weight' => 'LB_IN');
$value['BD'] = array('currency' =>'BDT', 'weight' => 'KG_CM');
$value['BE'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['BF'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['BG'] = array('currency' =>'BGN', 'weight' => 'KG_CM');
$value['BH'] = array('currency' =>'BHD', 'weight' => 'KG_CM');
$value['BI'] = array('currency' =>'BIF', 'weight' => 'KG_CM');
$value['BJ'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['BM'] = array('currency' =>'BMD', 'weight' => 'LB_IN');
$value['BN'] = array('currency' =>'BND', 'weight' => 'KG_CM');
$value['BO'] = array('currency' =>'BOB', 'weight' => 'KG_CM');
$value['BR'] = array('currency' =>'BRL', 'weight' => 'KG_CM');
$value['BS'] = array('currency' =>'BSD', 'weight' => 'LB_IN');
$value['BT'] = array('currency' =>'BTN', 'weight' => 'KG_CM');
$value['BW'] = array('currency' =>'BWP', 'weight' => 'KG_CM');
$value['BY'] = array('currency' =>'BYR', 'weight' => 'KG_CM');
$value['BZ'] = array('currency' =>'BZD', 'weight' => 'KG_CM');
$value['CA'] = array('currency' =>'CAD', 'weight' => 'LB_IN');
$value['CF'] = array('currency' =>'XAF', 'weight' => 'KG_CM');
$value['CG'] = array('currency' =>'XAF', 'weight' => 'KG_CM');
$value['CH'] = array('currency' =>'CHF', 'weight' => 'KG_CM');
$value['CI'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['CK'] = array('currency' =>'NZD', 'weight' => 'KG_CM');
$value['CL'] = array('currency' =>'CLP', 'weight' => 'KG_CM');
$value['CM'] = array('currency' =>'XAF', 'weight' => 'KG_CM');
$value['CN'] = array('currency' =>'CNY', 'weight' => 'KG_CM');
$value['CO'] = array('currency' =>'COP', 'weight' => 'KG_CM');
$value['CR'] = array('currency' =>'CRC', 'weight' => 'KG_CM');
$value['CU'] = array('currency' =>'CUC', 'weight' => 'KG_CM');
$value['CV'] = array('currency' =>'CVE', 'weight' => 'KG_CM');
$value['CY'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['CZ'] = array('currency' =>'CZF', 'weight' => 'KG_CM');
$value['DE'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['DJ'] = array('currency' =>'DJF', 'weight' => 'KG_CM');
$value['DK'] = array('currency' =>'DKK', 'weight' => 'KG_CM');
$value['DM'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['DO'] = array('currency' =>'DOP', 'weight' => 'LB_IN');
$value['DZ'] = array('currency' =>'DZD', 'weight' => 'KG_CM');
$value['EC'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['EE'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['EG'] = array('currency' =>'EGP', 'weight' => 'KG_CM');
$value['ER'] = array('currency' =>'ERN', 'weight' => 'KG_CM');
$value['ES'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['ET'] = array('currency' =>'ETB', 'weight' => 'KG_CM');
$value['FI'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['FJ'] = array('currency' =>'FJD', 'weight' => 'KG_CM');
$value['FK'] = array('currency' =>'GBP', 'weight' => 'KG_CM');
$value['FM'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['FO'] = array('currency' =>'DKK', 'weight' => 'KG_CM');
$value['FR'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['GA'] = array('currency' =>'XAF', 'weight' => 'KG_CM');
$value['GB'] = array('currency' =>'GBP', 'weight' => 'KG_CM');
$value['GD'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['GE'] = array('currency' =>'GEL', 'weight' => 'KG_CM');
$value['GF'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['GG'] = array('currency' =>'GBP', 'weight' => 'KG_CM');
$value['GH'] = array('currency' =>'GBS', 'weight' => 'KG_CM');
$value['GI'] = array('currency' =>'GBP', 'weight' => 'KG_CM');
$value['GL'] = array('currency' =>'DKK', 'weight' => 'KG_CM');
$value['GM'] = array('currency' =>'GMD', 'weight' => 'KG_CM');
$value['GN'] = array('currency' =>'GNF', 'weight' => 'KG_CM');
$value['GP'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['GQ'] = array('currency' =>'XAF', 'weight' => 'KG_CM');
$value['GR'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['GT'] = array('currency' =>'GTQ', 'weight' => 'KG_CM');
$value['GU'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['GW'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['GY'] = array('currency' =>'GYD', 'weight' => 'LB_IN');
$value['HK'] = array('currency' =>'HKD', 'weight' => 'KG_CM');
$value['HN'] = array('currency' =>'HNL', 'weight' => 'KG_CM');
$value['HR'] = array('currency' =>'HRK', 'weight' => 'KG_CM');
$value['HT'] = array('currency' =>'HTG', 'weight' => 'LB_IN');
$value['HU'] = array('currency' =>'HUF', 'weight' => 'KG_CM');
$value['IC'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['ID'] = array('currency' =>'IDR', 'weight' => 'KG_CM');
$value['IE'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['IL'] = array('currency' =>'ILS', 'weight' => 'KG_CM');
$value['IN'] = array('currency' =>'INR', 'weight' => 'KG_CM');
$value['IQ'] = array('currency' =>'IQD', 'weight' => 'KG_CM');
$value['IR'] = array('currency' =>'IRR', 'weight' => 'KG_CM');
$value['IS'] = array('currency' =>'ISK', 'weight' => 'KG_CM');
$value['IT'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['JE'] = array('currency' =>'GBP', 'weight' => 'KG_CM');
$value['JM'] = array('currency' =>'JMD', 'weight' => 'KG_CM');
$value['JO'] = array('currency' =>'JOD', 'weight' => 'KG_CM');
$value['JP'] = array('currency' =>'JPY', 'weight' => 'KG_CM');
$value['KE'] = array('currency' =>'KES', 'weight' => 'KG_CM');
$value['KG'] = array('currency' =>'KGS', 'weight' => 'KG_CM');
$value['KH'] = array('currency' =>'KHR', 'weight' => 'KG_CM');
$value['KI'] = array('currency' =>'AUD', 'weight' => 'KG_CM');
$value['KM'] = array('currency' =>'KMF', 'weight' => 'KG_CM');
$value['KN'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['KP'] = array('currency' =>'KPW', 'weight' => 'LB_IN');
$value['KR'] = array('currency' =>'KRW', 'weight' => 'KG_CM');
$value['KV'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['KW'] = array('currency' =>'KWD', 'weight' => 'KG_CM');
$value['KY'] = array('currency' =>'KYD', 'weight' => 'KG_CM');
$value['KZ'] = array('currency' =>'KZF', 'weight' => 'LB_IN');
$value['LA'] = array('currency' =>'LAK', 'weight' => 'KG_CM');
$value['LB'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['LC'] = array('currency' =>'XCD', 'weight' => 'KG_CM');
$value['LI'] = array('currency' =>'CHF', 'weight' => 'LB_IN');
$value['LK'] = array('currency' =>'LKR', 'weight' => 'KG_CM');
$value['LR'] = array('currency' =>'LRD', 'weight' => 'KG_CM');
$value['LS'] = array('currency' =>'LSL', 'weight' => 'KG_CM');
$value['LT'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['LU'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['LV'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['LY'] = array('currency' =>'LYD', 'weight' => 'KG_CM');
$value['MA'] = array('currency' =>'MAD', 'weight' => 'KG_CM');
$value['MC'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['MD'] = array('currency' =>'MDL', 'weight' => 'KG_CM');
$value['ME'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['MG'] = array('currency' =>'MGA', 'weight' => 'KG_CM');
$value['MH'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['MK'] = array('currency' =>'MKD', 'weight' => 'KG_CM');
$value['ML'] = array('currency' =>'COF', 'weight' => 'KG_CM');
$value['MM'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['MN'] = array('currency' =>'MNT', 'weight' => 'KG_CM');
$value['MO'] = array('currency' =>'MOP', 'weight' => 'KG_CM');
$value['MP'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['MQ'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['MR'] = array('currency' =>'MRO', 'weight' => 'KG_CM');
$value['MS'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['MT'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['MU'] = array('currency' =>'MUR', 'weight' => 'KG_CM');
$value['MV'] = array('currency' =>'MVR', 'weight' => 'KG_CM');
$value['MW'] = array('currency' =>'MWK', 'weight' => 'KG_CM');
$value['MX'] = array('currency' =>'MXN', 'weight' => 'KG_CM');
$value['MY'] = array('currency' =>'MYR', 'weight' => 'KG_CM');
$value['MZ'] = array('currency' =>'MZN', 'weight' => 'KG_CM');
$value['NA'] = array('currency' =>'NAD', 'weight' => 'KG_CM');
$value['NC'] = array('currency' =>'XPF', 'weight' => 'KG_CM');
$value['NE'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['NG'] = array('currency' =>'NGN', 'weight' => 'KG_CM');
$value['NI'] = array('currency' =>'NIO', 'weight' => 'KG_CM');
$value['NL'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['NO'] = array('currency' =>'NOK', 'weight' => 'KG_CM');
$value['NP'] = array('currency' =>'NPR', 'weight' => 'KG_CM');
$value['NR'] = array('currency' =>'AUD', 'weight' => 'KG_CM');
$value['NU'] = array('currency' =>'NZD', 'weight' => 'KG_CM');
$value['NZ'] = array('currency' =>'NZD', 'weight' => 'KG_CM');
$value['OM'] = array('currency' =>'OMR', 'weight' => 'KG_CM');
$value['PA'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['PE'] = array('currency' =>'PEN', 'weight' => 'KG_CM');
$value['PF'] = array('currency' =>'XPF', 'weight' => 'KG_CM');
$value['PG'] = array('currency' =>'PGK', 'weight' => 'KG_CM');
$value['PH'] = array('currency' =>'PHP', 'weight' => 'KG_CM');
$value['PK'] = array('currency' =>'PKR', 'weight' => 'KG_CM');
$value['PL'] = array('currency' =>'PLN', 'weight' => 'KG_CM');
$value['PR'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['PT'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['PW'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['PY'] = array('currency' =>'PYG', 'weight' => 'KG_CM');
$value['QA'] = array('currency' =>'QAR', 'weight' => 'KG_CM');
$value['RE'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['RO'] = array('currency' =>'RON', 'weight' => 'KG_CM');
$value['RS'] = array('currency' =>'RSD', 'weight' => 'KG_CM');
$value['RU'] = array('currency' =>'RUB', 'weight' => 'KG_CM');
$value['RW'] = array('currency' =>'RWF', 'weight' => 'KG_CM');
$value['SA'] = array('currency' =>'SAR', 'weight' => 'KG_CM');
$value['SB'] = array('currency' =>'SBD', 'weight' => 'KG_CM');
$value['SC'] = array('currency' =>'SCR', 'weight' => 'KG_CM');
$value['SD'] = array('currency' =>'SDG', 'weight' => 'KG_CM');
$value['SE'] = array('currency' =>'SEK', 'weight' => 'KG_CM');
$value['SG'] = array('currency' =>'SGD', 'weight' => 'KG_CM');
$value['SH'] = array('currency' =>'SHP', 'weight' => 'KG_CM');
$value['SI'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['SK'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['SL'] = array('currency' =>'SLL', 'weight' => 'KG_CM');
$value['SM'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['SN'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['SO'] = array('currency' =>'SOS', 'weight' => 'KG_CM');
$value['SR'] = array('currency' =>'SRD', 'weight' => 'KG_CM');
$value['SS'] = array('currency' =>'SSP', 'weight' => 'KG_CM');
$value['ST'] = array('currency' =>'STD', 'weight' => 'KG_CM');
$value['SV'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['SY'] = array('currency' =>'SYP', 'weight' => 'KG_CM');
$value['SZ'] = array('currency' =>'SZL', 'weight' => 'KG_CM');
$value['TC'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['TD'] = array('currency' =>'XAF', 'weight' => 'KG_CM');
$value['TG'] = array('currency' =>'XOF', 'weight' => 'KG_CM');
$value['TH'] = array('currency' =>'THB', 'weight' => 'KG_CM');
$value['TJ'] = array('currency' =>'TJS', 'weight' => 'KG_CM');
$value['TL'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['TN'] = array('currency' =>'TND', 'weight' => 'KG_CM');
$value['TO'] = array('currency' =>'TOP', 'weight' => 'KG_CM');
$value['TR'] = array('currency' =>'TRY', 'weight' => 'KG_CM');
$value['TT'] = array('currency' =>'TTD', 'weight' => 'LB_IN');
$value['TV'] = array('currency' =>'AUD', 'weight' => 'KG_CM');
$value['TW'] = array('currency' =>'TWD', 'weight' => 'KG_CM');
$value['TZ'] = array('currency' =>'TZS', 'weight' => 'KG_CM');
$value['UA'] = array('currency' =>'UAH', 'weight' => 'KG_CM');
$value['UG'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$value['US'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['UY'] = array('currency' =>'UYU', 'weight' => 'KG_CM');
$value['UZ'] = array('currency' =>'UZS', 'weight' => 'KG_CM');
$value['VC'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['VE'] = array('currency' =>'VEF', 'weight' => 'KG_CM');
$value['VG'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['VI'] = array('currency' =>'USD', 'weight' => 'LB_IN');
$value['VN'] = array('currency' =>'VND', 'weight' => 'KG_CM');
$value['VU'] = array('currency' =>'VUV', 'weight' => 'KG_CM');
$value['WS'] = array('currency' =>'WST', 'weight' => 'KG_CM');
$value['XB'] = array('currency' =>'EUR', 'weight' => 'LB_IN');
$value['XC'] = array('currency' =>'EUR', 'weight' => 'LB_IN');
$value['XE'] = array('currency' =>'ANG', 'weight' => 'LB_IN');
$value['XM'] = array('currency' =>'EUR', 'weight' => 'LB_IN');
$value['XN'] = array('currency' =>'XCD', 'weight' => 'LB_IN');
$value['XS'] = array('currency' =>'SIS', 'weight' => 'KG_CM');
$value['XY'] = array('currency' =>'ANG', 'weight' => 'LB_IN');
$value['YE'] = array('currency' =>'YER', 'weight' => 'KG_CM');
$value['YT'] = array('currency' =>'EUR', 'weight' => 'KG_CM');
$value['ZA'] = array('currency' =>'ZAR', 'weight' => 'KG_CM');
$value['ZM'] = array('currency' =>'ZMW', 'weight' => 'KG_CM');
$value['ZW'] = array('currency' =>'USD', 'weight' => 'KG_CM');
$general_settings = get_option('a2z_fedex_main_settings');
$general_settings = empty($general_settings) ? array() : $general_settings;
if(isset($general_settings['a2z_fedex_rates']) && $general_settings['a2z_fedex_rates'] == 'yes' && isset($pack_aft_hook['destination']['country']) && !empty($pack_aft_hook['destination']['country']))
{
$weight_unit = $dim_unit = '';
if(!empty($general_settings['a2z_fedex_weight_unit']) && $general_settings['a2z_fedex_weight_unit'] == 'KG_CM')
{
$weight_unit = 'KG';
$dim_unit = 'CM';
}
else
{
$weight_unit = 'LB';
$dim_unit = 'IN';
}
$fedex_selected_curr = '';
if(isset($pack_aft_hook['destination']['country']) && !empty($pack_aft_hook['destination']['country']))
{
$fedex_selected_curr = $value[$general_settings['a2z_fedex_country']]['currency'];
}
$xmlRequest = file_get_contents(dirname(__FILE__).'/xml/rate.xml');
$xmlRequest = str_replace('{key}',$general_settings['a2z_fedex_site_id'],$xmlRequest);
$xmlRequest = str_replace('{pwd}',$general_settings['a2z_fedex_site_pwd'],$xmlRequest);
$xmlRequest = str_replace('{Account_num}',$general_settings['a2z_fedex_acc_no'],$xmlRequest);
$xmlRequest = str_replace('{meter_number}',$general_settings['a2z_fedex_access_key'],$xmlRequest);
$xmlRequest = str_replace('{timestramp}',date( 'c' , strtotime( '+1 Weekday' ) ),$xmlRequest);
$xmlRequest = str_replace('{s_postal}',$general_settings['a2z_fedex_zip'],$xmlRequest);
$xmlRequest = str_replace('{s_countr}',$general_settings['a2z_fedex_country'],$xmlRequest);
if(isset($general_settings['a2z_fedex_res_f']) && $general_settings['a2z_fedex_res_f'] == 'yes')
{
$xmlRequest = str_replace('{r_res}','true',$xmlRequest);
}else
{
$xmlRequest = str_replace('{r_res}','false',$xmlRequest);
}
$a2z_fedex_account_rates = ($general_settings['a2z_fedex_account_rates'] != 'yes') ? 'LIST' : 'NONE';
$xmlRequest = str_replace('{ac_rate}',$a2z_fedex_account_rates,$xmlRequest);
$xmlRequest = str_replace('{r_city}',$pack_aft_hook['destination']['city'],$xmlRequest);
$xmlRequest = str_replace('{r_state}',$pack_aft_hook['destination']['state'],$xmlRequest);
$xmlRequest = str_replace('{r_postal}',$pack_aft_hook['destination']['postcode'],$xmlRequest);
$xmlRequest = str_replace('{r_county}',$pack_aft_hook['destination']['country'],$xmlRequest);
$xmlRequest = str_replace('{currency}',$fedex_selected_curr,$xmlRequest);
$xmlRequest = str_replace('{weightunit}',$weight_unit,$xmlRequest);
$total_xml = '';
$my_par =0;
$total_weight_for_rate =0;
$total_packages = 0;
if ($pack_aft_hook) {
foreach ($pack_aft_hook['contents'] as $parcel) {
$my_par = $my_par +1;
$product = $parcel['data']->get_data();
$total_xml .= '
";
//print_r($general_settings);
// die();
$result = wp_remote_post($request_url, array(
'method' => 'POST',
'timeout' => 70,
'sslverify' => 0,
'body' => $xmlRequest
)
);
$result = str_replace(array(':','-'), '', $result);
libxml_use_internal_errors(true);
if(!empty($result))
{
$xml = simplexml_load_string(utf8_encode($result['body']));
}
if(isset($general_settings['a2z_fedex_developer_rate']) && $general_settings['a2z_fedex_developer_rate'] == 'yes')
{
echo "";
echo " Request
";
print_r($request_url);
print_r(htmlspecialchars($xmlRequest));
echo "
Response
";
print_r($xml);
die();
}
$xml = $xml->SOAPENVBody->RateReply;
if(empty($xml->RateReplyDetails))
{
return false;
}
$carriers_available = isset($general_settings['a2z_fedex_carrier']) && is_array($general_settings['a2z_fedex_carrier']) ? $general_settings['a2z_fedex_carrier'] : array();
foreach($xml->RateReplyDetails as $quote)
{
$rate_code = ((string) $quote->ServiceType);
$rate_cost = 0;
if(array_key_exists($rate_code,$carriers_available))
{
$shipment_details = '';
foreach($quote->RatedShipmentDetails as $shipment_deta)
{
if ( $a2z_fedex_account_rates == "LIST" ) {
if ( strstr( $shipment_deta->ShipmentRateDetail->RateType, 'PAYOR_LIST' ) ) {
$shipment_details = $shipment_deta;
break;
}
}else{
if ( strstr( $shipment_deta->ShipmentRateDetail->RateType, 'PAYOR_ACCOUNT' ) ) {
$shipment_details = $shipment_deta;
break;
}
}
}
if(empty($shipment_details))
{
$shipment_details = $quote->RatedShipmentDetails;
}
if(empty($shipment_details))
{
continue;
}
$rate_cost = (float)((string) $shipment_details->ShipmentRateDetail->TotalNetCharge->Amount);
}
else{
continue;
}
$rate_cost = apply_filters('a2z_fedex_rate_cost',$rate_cost,$rate_code);
if($rate_cost > 0)
{
$rate_name = $_carriers[$rate_code];
$name = isset($carriers_name_available[$rate_code]) && !empty($carriers_name_available[$rate_code]) ? $carriers_name_available[$rate_code] : $rate_name;
$rate = array(
'id' => 'a2z'.$rate_code,
'label' => $name,
'cost' => $rate_cost,
'meta_data' => '');
$this->add_rate( $rate );
}
}
}
}
private function a2z_get_zipcode_or_city($country, $city, $postcode) {
$no_postcode_country = array('AE', 'AF', 'AG', 'AI', 'AL', 'AN', 'AO', 'AW', 'BB', 'BF', 'BH', 'BI', 'BJ', 'BM', 'BO', 'BS', 'BT', 'BW', 'BZ', 'CD', 'CF', 'CG', 'CI', 'CK',
'CL', 'CM', 'CO', 'CR', 'CV', 'DJ', 'DM', 'DO', 'EC', 'EG', 'ER', 'ET', 'FJ', 'FK', 'GA', 'GD', 'GH', 'GI', 'GM', 'GN', 'GQ', 'GT', 'GW', 'GY', 'HK', 'HN', 'HT', 'IE', 'IQ', 'IR',
'JM', 'JO', 'KE', 'KH', 'KI', 'KM', 'KN', 'KP', 'KW', 'KY', 'LA', 'LB', 'LC', 'LK', 'LR', 'LS', 'LY', 'ML', 'MM', 'MO', 'MR', 'MS', 'MT', 'MU', 'MW', 'MZ', 'NA', 'NE', 'NG', 'NI',
'NP', 'NR', 'NU', 'OM', 'PA', 'PE', 'PF', 'PY', 'QA', 'RW', 'SA', 'SB', 'SC', 'SD', 'SL', 'SN', 'SO', 'SR', 'SS', 'ST', 'SV', 'SY', 'TC', 'TD', 'TG', 'TL', 'TO', 'TT', 'TV', 'TZ',
'UG', 'UY', 'VC', 'VE', 'VG', 'VN', 'VU', 'WS', 'XA', 'XB', 'XC', 'XE', 'XL', 'XM', 'XN', 'XS', 'YE', 'ZM', 'ZW');
$postcode_city = !in_array( $country, $no_postcode_country ) ? $postcode_city = "{$postcode} " : '';
if( !empty($city) ){
$postcode_city .= "{$city} ";
}
return $postcode_city;
}
/**
* Initialise Gateway Settings Form Fields
*/
public function init_form_fields() {
$this->form_fields = array('a2z_fedex' => array('type'=>'a2z_fedex'));
}
public function generate_a2z_fedex_html() {
include( 'views/a2z_fedex_settings_view.php' );
}
}
}