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 .= ''. $my_par .''.$my_par.''. $my_par .''.$weight_unit.''.$product['weight'].''; if( !empty($product['height']) && !empty($product['length']) && !empty($product['width']) ){ { $total_xml .=''.$product['length'] .''. $product['width'].''. $product['height'].''.$dim_unit.''; } $total_xml .=''; //$total_packages = $my_par; $total_weight =(string) $product['weight']; $total_weight = str_replace(',','.',$total_weight); if($total_weight<0.001){ $total_weight = 0.001; }else{ $total_weight = round((float)$total_weight,3); } $total_weight_for_rate += $total_weight; } } } $xmlRequest = str_replace('{totalweight}',$total_weight_for_rate,$xmlRequest); $xmlRequest = str_replace('{package_count}',$my_par,$xmlRequest); $xmlRequest = str_replace('{line_items}',$total_xml,$xmlRequest); $request_url = (isset($general_settings['a2z_fedex_test']) && $general_settings['a2z_fedex_test'] == 'yes') ? 'https://wsbeta.fedex.com:443/web-services/rate' : 'https://ws.fedex.com:443/web-services/rate'; //echo "
";
				//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' ); } } }