<?php // phpcs:ignoreFile /** * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved * * This source code is licensed under the license found in the * LICENSE file in the root directory of this source tree. * * @package FacebookCommerce */ namespace SkyVerge\WooCommerce\Facebook\Utilities; defined( 'ABSPATH' ) or exit; /** * Utility class for shipment functionality. * * @since 2.1.0 */ class Shipment { /** @var mixed key-value array of valid carriers Facebook codes and labels */ protected $valid_carriers; /** @var mixed mapping of carriers from the Shipment Tracking plugin to their Facebook code */ protected $shipment_tracking_carriers; /** * Constructor. * * @since 2.1.0 */ public function __construct() { /** * @see https://developers.facebook.com/docs/commerce-platform/order-management/carrier-codes */ $this->valid_carriers = array( 'AUSTRALIA_POST' => 'Australia Post', 'CANADA_POST' => 'Canada Post', 'DHL' => 'DHL', 'DHL_ECOMMERCE_US' => 'DHL eCommerce US', 'EAGLE' => 'Eagle', 'FEDEX' => 'FedEx', 'FEDEX_UK' => 'FedEx UK', 'NEW_ZEALAND_POST' => 'New Zealand Post', 'ONTRAC' => 'OnTrac', 'POST_DANMARK' => 'Post Danmark', 'PUROLATOR' => 'Purolator', 'ROYAL_MAIL' => 'Royal Mail', 'SPEE_DEE' => 'Spee-Dee', 'TNT' => 'TNT', 'TNT_POST' => 'TNT Post', 'UPS' => 'UPS', 'USPS' => 'USPS', 'OTHER' => 'Other tracking number', 'ABF_FREIGHT' => 'ABF Freight', 'ABX_EXPRESS' => 'ABX Express', 'AB_CUSTOM_GROUP' => 'AB Custom Group', 'ACOMMERCE' => 'aCommerce', 'ACS_COURIER' => 'ACS Courier', 'ACS_WORLDWIDE_EXPRESS' => 'ACS Worldwide Express', 'ADICIONAL_LOGISTICS' => 'Adicional Logistics', 'ADSONE' => 'ADSOne', 'AIR21' => 'AIR21', 'AIRPAK_EXPRESS' => 'Airpak Express', 'AIRSPEED_INTERNATIONAL_CORPORATION' => 'Airspeed International Corporation', 'ALFATREX' => 'AlfaTrex', 'ALLIED_EXPRESS' => 'Allied Express', 'ALLJOY_SUPPLY_CHAIN_CO_LTD' => 'ALLJOY SUPPLY CHAIN CO., LTD', 'ALPHAFAST' => 'alphaFAST', 'AMAZON_FBA_USA' => 'Amazon FBA USA', 'AMAZON_LOGISTICS' => 'Amazon Logistics', 'AN_POST' => 'An Post', 'APC_OVERNIGHT' => 'APC Overnight', 'APC_OVERNIGHT_REFERENCE' => 'APC Overnight Reference', 'APC_POSTAL_LOGISTICS' => 'APC Postal Logistics', 'APRISA_EXPRESS' => 'Aprisa Express', 'ARAMEX' => 'Aramex', 'ARROW_XL' => 'Arrow XL', 'ASENDIA_GERMANY' => 'Asendia Germany', 'ASENDIA_HK' => 'Asendia HK', 'ASENDIA_HK_PREMIUM_SERVICE_LATAM' => 'Asendia HK - Premium Service (LATAM)', 'ASENDIA_UK' => 'Asendia UK', 'ASENDIA_USA' => 'Asendia USA', 'ASM' => 'ASM', 'AUPOST_CHINA' => 'AuPost China', 'AUSTRALIA_POST_SFTP' => 'Australia Post Sftp', 'AUSTRIAN_POST_EXPRESS' => 'Austrian Post (Express)', 'AUSTRIAN_POST_REGISTERED' => 'Austrian Post (Registered)', 'AXL_EXPRESS_LOGISTICS' => 'AXL Express & Logistics', 'A_DUIE_PYLE' => 'A Duie Pyle', 'A_J_EXPRESS' => 'a j express', 'B2C_EUROPE' => 'B2C Europe', 'BELPOST' => 'Belpost', 'BERT_TRANSPORT' => 'Bert Transport', 'BEST_EXPRESS' => 'Best Express', 'BEST_WAY_PARCEL' => 'Best Way Parcel', 'BIRDSYSTEM' => 'BirdSystem', 'BJS_DISTRIBUTION_STORAGE_COURIERS' => 'BJS Distribution, Storage & Couriers', 'BJS_DISTRIBUTION_STORAGE_COURIERS_FTP' => 'BJS Distribution, Storage & Couriers - FTP', 'BLUECARE_EXPRESS_LTD' => 'Bluecare Express Ltd', 'BLUEDART' => 'Bluedart', 'BLUE_STAR' => 'Blue Star', 'BNEED' => 'Bneed', 'BONDS_COURIERS' => 'Bonds Couriers', 'BOXC' => 'BoxC', 'BPOST' => 'Bpost', 'BPOST_INTERNATIONAL' => 'Bpost international', 'BRAZIL_CORREIOS' => 'Brazil Correios', 'BRT_BARTOLINI' => 'BRT Bartolini', 'BRT_BARTOLINI_PARCEL_ID' => 'BRT Bartolini(Parcel ID)', 'BULGARIAN_POSTS' => 'Bulgarian Posts', 'BUYLOGIC' => 'Buylogic', 'CAMBODIA_POST' => 'Cambodia Post', 'CANPAR_COURIER' => 'Canpar Courier', 'CAPITAL_TRANSPORT' => 'Capital Transport', 'CARRIER_007EX' => '007EX', 'CARRIER_17_POST_SERVICE' => '17 Post Service', 'CARRIER_2GO' => '2GO', 'CARRIER_360_LION_EXPRESS' => '360 Lion Express', 'CARRIER_4PX' => '4PX', 'CARRIER_4_72_ENTREGANDO' => '4-72 Entregando', 'CARRIER_ECHO' => 'Echo', 'CBL_LOGISTICS' => 'CBL Logistics', 'CELERITAS_TRANSPORTE_SL' => 'Celeritas Transporte, S.L', 'CESKA_POSTA' => 'Česká Poš', 'CHINA_EMS_EPACKET' => 'China EMS (ePacket)', 'CHINA_POST' => 'China Post', 'CHIT_CHATS' => 'Chit Chats', 'CHRONOPOST_FRANCE' => 'Chronopost France', 'CHRONOPOST_PORTUGAL' => 'Chronopost Portugal', 'CH_ROBINSON_WORLDWIDE_INC' => 'C.H. Robinson Worldwide, Inc.', 'CITY_LINK_EXPRESS' => 'City-Link Express', 'CJ_CENTURY' => 'CJ Century', 'CJ_CENTURY_INTERNATIONAL' => 'CJ Century (International)', 'CJ_GLS' => 'CJ GLS', 'CJ_KOREA_EXPRESS' => 'CJ Korea Express', 'CJ_LOGISTICS_INTERNATIONAL' => 'CJ Logistics International', 'CJ_TRANSNATIONAL_PHILIPPINES' => 'CJ Transnational Philippines', 'CLEVY_LINKS' => 'Clevy Links', 'CLOUDWISH_ASIA' => 'Cloudwish Asia', 'CNE_EXPRESS' => 'CNE Express', 'COLISSIMO' => 'Colissimo', 'COLIS_PRIVE' => 'Colis Privé', 'COLLECTCO' => 'CollectCo', 'COLLECT_PLUS' => 'Collect+', 'CON_WAY_FREIGHT' => 'Con-way Freight', 'COPA_AIRLINES_COURIER' => 'Copa Airlines Courier', 'CORREOS_CHILE' => 'Correos Chile', 'CORREOS_DE_COSTA_RICA' => 'Correos de Costa Rica', 'CORREOS_DE_ESPANA' => 'Correos de España', 'CORREOS_DE_MEXICO' => 'Correos de Mexico', 'CORREOS_EXPRESS' => 'Correos Express', 'CORREO_ARGENTINO' => 'Correo Argentino', 'COSMETICS_NOW' => 'Cosmetics Now', 'COUREX' => 'Courex', 'COURIERPOST' => 'CourierPost', 'COURIERS_PLEASE' => 'Couriers Please', 'COURIER_IT' => 'Courier IT', 'COURIER_PLUS' => 'Courier Plus', 'CPACKET' => 'cPacket', 'CUCKOO_EXPRESS' => 'Cuckoo Express', 'CYPRUS_POST' => 'Cyprus Post', 'DACHSER' => 'DACHSER', 'DAWN_WING' => 'Dawn Wing', 'DAYLIGHT_TRANSPORT_LLC' => 'Daylight Transport, LLC', 'DB_SCHENKER' => 'DB Schenker', 'DB_SCHENKER_SWEDEN' => 'DB Schenker Sweden', 'DD_EXPRESS_COURIER' => 'DD Express Courier', 'DELCART' => 'Delcart', 'DELHIVERY' => 'Delhivery', 'DELIVERYONTIME_LOGISTICS_PVT_LTD' => 'DELIVERYONTIME LOGISTICS PVT LTD', 'DELTEC_COURIER' => 'Deltec Courier', 'DEMANDSHIP' => 'DemandShip', 'DETRACK' => 'Detrack', 'DEUTSCHE_POST_DHL' => 'Deutsche Post DHL', 'DEUTSCHE_POST_MAIL' => 'Deutsche Post Mail', 'DEX_I' => 'DEX-I', 'DHL_2_MANN_HANDLING' => 'DHL 2-Mann-Handling', 'DHL_ACTIVE_TRACING' => 'DHL Active Tracing', 'DHL_BENELUX' => 'DHL Benelux', 'DHL_ECOMMERCE_ASIA' => 'DHL eCommerce Asia', 'DHL_EXPRESS_PIECE_ID' => 'DHL Express (Piece ID)', 'DHL_GLOBAL_FORWARDING' => 'DHL Global Forwarding', 'DHL_HONG_KONG' => 'DHL Hong Kong', 'DHL_NETHERLANDS' => 'DHL Netherlands', 'DHL_PARCEL_NL' => 'DHL Parcel NL', 'DHL_PARCEL_SPAIN' => 'DHL Parcel Spain', 'DHL_POLAND_DOMESTIC' => 'DHL Poland Domestic', 'DHL_SPAIN_DOMESTIC' => 'DHL Spain Domestic', 'DIMERCO_EXPRESS_GROUP' => 'Dimerco Express Group', 'DIRECTLOG' => 'Directlog', 'DIRECT_FREIGHT_EXPRESS' => 'Direct Freight Express', 'DIRECT_LINK' => 'Direct Link', 'DMM_NETWORK' => 'DMM Network', 'DOORA_LOGISTICS' => 'Doora Logistics', 'DOTZOT' => 'Dotzot', 'DPD' => 'DPD', 'DPD_FRANCE' => 'DPD France', 'DPD_GERMANY' => 'DPD Germany', 'DPD_HK' => 'DPD HK', 'DPD_IRELAND' => 'DPD Ireland', 'DPD_LOCAL' => 'DPD Local', 'DPD_LOCAL_REFERENCE' => 'DPD Local reference', 'DPD_POLAND' => 'DPD Poland', 'DPD_ROMANIA' => 'DPD Romania', 'DPD_RUSSIA' => 'DPD Russia', 'DPD_UK' => 'DPD UK', 'DPEX' => 'DPEX', 'DPEX_CHINA' => 'DPEX China', 'DPE_EXPRESS' => 'DPE Express', 'DPE_SOUTH_AFRICA' => 'DPE South Africa', 'DSV' => 'DSV', 'DTDC_AUSTRALIA' => 'DTDC Australia', 'DTDC_EXPRESS_GLOBAL_PTE_LTD' => 'DTDC Express Global PTE LTD', 'DTDC_INDIA' => 'DTDC India', 'DX' => 'DX', 'DX_FREIGHT' => 'DX Freight', 'DYNALOGIC_BENELUX_BV' => 'Dynalogic Benelux BV', 'DYNAMIC_LOGISTICS' => 'Dynamic Logistics', 'EASY_MAIL' => 'Easy Mail', 'ECARGO' => 'Ecargo', 'ECMS_INTERNATIONAL_LOGISTICS_CO_LTD' => 'ECMS International Logistics Co., Ltd.', 'ECOM_EXPRESS' => 'Ecom Express', 'EC_FIRSTCLASS' => 'EC-Firstclass', 'EFS_E_COMMERCE_FULFILLMENT_SERVICE' => 'EFS (E-commerce Fulfillment Service)', 'EKART' => 'Ekart', 'ELTA_HELLENIC_POST' => 'ELTA Hellenic Post', 'EMIRATES_POST' => 'Emirates Post', 'EMPS_EXPRESS' => 'EMPS Express', 'ENSENDA' => 'Ensenda', 'ENVIALIA' => 'Envialia', 'EPARCEL_KOREA' => 'eParcel Korea', 'EP_BOX' => 'EP-Box', 'EQUICK_CHINA' => 'Equick China', 'ESTAFETA' => 'Estafeta', 'ESTES' => 'Estes', 'ETOTAL_SOLUTION_LIMITED' => 'eTotal Solution Limited', 'EURODIS' => 'Eurodis', 'EXPEDITORS' => 'Expeditors', 'EZSHIP' => 'EZship', 'FASTRAK_SERVICES' => 'Fastrak Services', 'FASTWAY_AUSTRALIA' => 'Fastway Australia', 'FASTWAY_IRELAND' => 'Fastway Ireland', 'FASTWAY_NEW_ZEALAND' => 'Fastway New Zealand', 'FASTWAY_SOUTH_AFRICA' => 'Fastway South Africa', 'FEDEX_CROSS_BORDER' => 'Fedex Cross Border', 'FEDEX_FREIGHT' => 'FedEx Freight', 'FEDEX_POLAND_DOMESTIC' => 'FedEx Poland Domestic', 'FERCAM_LOGISTICS_TRANSPORT' => 'FERCAM Logistics & Transport', 'FIRST_FLIGHT_COURIERS' => 'First Flight Couriers', 'FIRST_LOGISTICS' => 'First Logistics', 'FLYT_EXPRESS' => 'Flyt Express', 'GATI_KWE' => 'Gati-KWE', 'GDEX' => 'GDEX', 'GENIKI_TAXYDROMIKI' => 'Geniki Taxydromiki', 'GEODIS_E_SPACE' => 'Geodis E-space', 'GEODIS_DISTRIBUTION_EXPRESS' => 'GEODIS - Distribution & Express', 'GIAO_HANG_NHANH' => 'Giao hàng nhanh', 'GLOBEGISTICS_INC' => 'Globegistics Inc.', 'GLS' => 'GLS', 'GLS_CZECH_REPUBLIC' => 'GLS Czech Republic', 'GLS_ITALY' => 'GLS Italy', 'GLS_NETHERLANDS' => 'GLS Netherlands', 'GOFLY' => 'GoFly', 'GOJAVAS' => 'GoJavas', 'GREYHOUND' => 'Greyhound', 'GSI_EXPRESS' => 'GSI EXPRESS', 'HERMESWORLD' => 'Hermesworld', 'HERMES_GERMANY' => 'Hermes Germany', 'HERMES_ITALY' => 'Hermes Italy', 'HOLISOL' => 'Holisol', 'HOMEDIRECT_LOGISTICS' => 'Homedirect Logistics', 'HONG_KONG_POST' => 'Hong Kong Post', 'HRVATSKA_POSTA' => 'Hrvatska Pošta', 'HUA_HAN_LOGISTICS' => 'Hua Han Logistics', 'HUNTER_EXPRESS' => 'Hunter Express', 'ICELAND_POST' => 'Iceland Post', 'IDEX' => 'IDEX', 'IMEX_GLOBAL_SOLUTIONS' => 'IMEX Global Solutions', 'IMX_MAIL' => 'IMX Mail', 'INDIA_POST_DOMESTIC' => 'India Post Domestic', 'INDIA_POST_INTERNATIONAL' => 'India Post International', 'INPOST_PACZKOMATY' => 'InPost Paczkomaty', 'INSTANT_TIONG_NAM_EBIZ_EXPRESS_SDN_BHD' => 'INSTANT (Tiong Nam Ebiz Express Sdn Bhd)', 'INTERNATIONAL_SEUR' => 'International Seur', 'INTERNET_EXPRESS' => 'Internet Express', 'ISRAEL_POST' => 'Israel Post', 'ISRAEL_POST_DOMESTIC' => 'Israel Post Domestic', 'ITALY_SDA' => 'Italy SDA', 'I_PARCEL' => 'i-parcel', 'J_T_EXPRESS' => 'J&T EXPRESS', 'JAM_EXPRESS' => 'Jam Express', 'JANCO_ECOMMERCE' => 'Janco Ecommerce', 'JAPAN_POST' => 'Japan Post', 'JAYON_EXPRESS_JEX' => 'Jayon Express (JEX)', 'JCEX' => 'JCEX', 'JERSEY_POST' => 'Jersey Post', 'JET_SHIP_WORLDWIDE' => 'Jet-Ship Worldwide', 'JINSUNG_TRADING' => 'JINSUNG TRADING', 'JNE' => 'JNE', 'JOCOM' => 'Jocom', 'JP_BH_POSTA' => 'JP BH Pošta', 'JX' => 'JX', 'J_NET' => 'J-Net', 'K1_EXPRESS' => 'K1 Express', 'KANGAROO_WORLDWIDE_EXPRESS' => 'Kangaroo Worldwide Express', 'KERRY_EXPRESS_HONG_KONG' => 'Kerry Express Hong Kong', 'KERRY_EXPRESS_THAILAND' => 'Kerry Express Thailand', 'KERRY_EXPRESS_VIETNAM_CO_LTD' => 'Kerry Express (Vietnam) Co Ltd', 'KGM_HUB' => 'KGM Hub', 'KIALA' => 'Kiala', 'KOREA_POST' => 'Korea Post', 'KOREA_POST_EMS' => 'Korea Post EMS', 'KRONOS_EXPRESS' => 'Kronos Express', 'KUEHNE_NAGEL' => 'Kuehne + Nagel', 'LANDMARK_GLOBAL' => 'Landmark Global', 'LAO_POST' => 'Lao Post', 'LASERSHIP' => 'LaserShip', 'LA_POSTE' => 'La Poste', 'LBC_EXPRESS' => 'LBC Express', 'LHT_EXPRESS' => 'LHT Express', 'LIETUVOS_PASTAS' => 'Lietuvos Paštas', 'LINE_CLEAR_EXPRESS_LOGISTICS_SDN_BHD' => 'Line Clear Express & Logistics Sdn Bhd', 'LINK_BRIDGE_BEIJING_INTERNATIONAL_LOGISTICS_COLTD' => 'Link Bridge(BeiJing)international logistics co.,ltd', 'LION_PARCEL' => 'Lion Parcel', 'LOGISTIC_WORLDWIDE_EXPRESS' => 'Logistic Worldwide Express', 'LOGWIN_LOGISTICS' => 'Logwin Logistics', 'LONE_STAR_OVERNIGHT' => 'Lone Star Overnight', 'MAGYAR_POSTA' => 'Magyar Posta', 'MAILAMERICAS' => 'MailAmericas', 'MAILPLUS' => 'MailPlus', 'MAINFREIGHT' => 'Mainfreight', 'MALAYSIA_POST_EMS_POS_LAJU' => 'Malaysia Post EMS / Pos Laju', 'MALAYSIA_POST_REGISTERED' => 'Malaysia Post - Registered', 'MARA_XPRESS' => 'Mara Xpress', 'MATDESPATCH' => 'Matdespatch', 'MATKAHUOLTO' => 'Matkahuolto', 'MDS_COLLIVERY_PTY_LTD' => 'MDS Collivery Pty (Ltd)', 'MEGASAVE' => 'Megasave', 'MEXICO_AEROFLASH' => 'Mexico AeroFlash', 'MEXICO_REDPACK' => 'Mexico Redpack', 'MEXICO_SENDA_EXPRESS' => 'Mexico Senda Express', 'MIKROPAKKET' => 'Mikropakket', 'MONDIAL_RELAY' => 'Mondial Relay', 'MRW' => 'MRW', 'MUDITA' => 'MUDITA', 'MXE_EXPRESS' => 'MXE Express', 'MYHERMES_UK' => 'myHermes UK', 'MYPOSTONLINE' => 'Mypostonline', 'M_XPRESS_SDN_BHD' => 'M Xpress Sdn Bhd', 'NACEX_SPAIN' => 'NACEX Spain', 'NANJING_WOYUAN' => 'Nanjing Woyuan', 'NATIONAL_SAMEDAY' => 'National Sameday', 'NATIONWIDE_EXPRESS' => 'Nationwide Express', 'NEWGISTICS' => 'Newgistics', 'NEWGISTICS_API' => 'Newgistics API', 'NEXIVE_TNT_POST_ITALY' => 'Nexive (TNT Post Italy)', 'NHANS_SOLUTIONS' => 'Nhans Solutions', 'NIGHTLINE' => 'Nightline', 'NIM_EXPRESS' => 'Nim Express', 'NINJA_VAN' => 'Ninja Van', 'NINJA_VAN_INDONESIA' => 'Ninja Van Indonesia', 'NINJA_VAN_MALAYSIA' => 'Ninja Van Malaysia', 'NINJA_VAN_PHILIPPINES' => 'Ninja Van Philippines', 'NINJA_VAN_THAILAND' => 'Ninja Van Thailand', 'NIPOST' => 'NiPost', 'NORSK_GLOBAL' => 'Norsk Global', 'NOVA_POSHTA' => 'Nova Poshta', 'NOVA_POSHTA_INTERNATIONAL' => 'Nova Poshta (International)', 'OCA_ARGENTINA' => 'OCA Argentina', 'OLD_DOMINION_FREIGHT_LINE' => 'Old Dominion Freight Line', 'OMNIVA' => 'Omniva', 'OMNI_PARCEL' => 'Omni Parcel', 'ONE_WORLD_EXPRESS' => 'One World Express', 'PACKLINK' => 'Packlink', 'PAL_EXPRESS_LIMITED' => 'PAL Express Limited', 'PANDU_LOGISTICS' => 'Pandu Logistics', 'PANTHER' => 'Panther', 'PANTHER_ORDER_NUMBER' => 'Panther Order Number', 'PANTHER_REFERENCE' => 'Panther Reference', 'PAQUETEXPRESS' => 'Paquetexpress', 'PARCELLEDIN' => 'Parcelled.in', 'PARCELPOINT_PTY_LTD' => 'ParcelPoint Pty Ltd', 'PARCEL_FORCE' => 'Parcel Force', 'PARCEL_POST_SINGAPORE' => 'Parcel Post Singapore', 'PAYPAL_PACKAGE' => 'PayPal Package', 'PFC_EXPRESS' => 'PFC Express', 'PICKUPP' => 'Pickupp', 'PICK_UPP_MYS_SGP' => 'PICK UPP', 'PILOT_FREIGHT_SERVICES' => 'Pilot Freight Services', 'PITNEY_BOWES' => 'Pitney Bowes', 'PIXSELL_LOGISTICS' => 'PIXSELL LOGISTICS', 'POCZTA_POLSKA' => 'Poczta Polska', 'PORTUGAL_CTT' => 'Portugal CTT', 'PORTUGAL_SEUR' => 'Portugal Seur', 'POST56' => 'Post56', 'POSTEN_NORGE_BRING' => 'Posten Norge / Bring', 'POSTE_ITALIANE' => 'Poste Italiane', 'POSTE_ITALIANE_PACCOCELERE' => 'Poste Italiane Paccocelere', 'POSTI' => 'Posti', 'POSTNL_DOMESTIC' => 'PostNL Domestic', 'POSTNL_INTERNATIONAL' => 'PostNL International', 'POSTNL_INTERNATIONAL_3S' => 'PostNL International 3S', 'POSTNORD_DENMARK' => 'PostNord Denmark', 'POSTNORD_LOGISTICS' => 'PostNord Logistics', 'POSTNORD_SWEDEN' => 'PostNord Sweden', 'POST_OF_SLOVENIA' => 'Post of Slovenia', 'POST_SERBIA' => 'Post Serbia', 'POS_INDONESIA_DOMESTIC' => 'Pos Indonesia Domestic', 'POS_INDONESIA_INTL' => "Pos Indonesia Int'l", 'POSTA_ROMANA' => 'Poșta Română', 'PROFESSIONAL_COURIERS' => 'Professional Couriers', 'PTT_POSTA' => 'PTT Posta', 'QUALITYPOST' => 'QualityPost', 'QUANTIUM' => 'Quantium', 'QXPRESS' => 'Qxpress', 'RABEN_GROUP' => 'Raben Group', 'RAF_PHILIPPINES' => 'RAF Philippines', 'RAIDEREX' => 'RaidereX', 'RAM' => 'RAM', 'REDUR_SPAIN' => 'Redur Spain', 'RED_CARPET_LOGISTICS' => 'Red Carpet Logistics', 'RINCOS' => 'Rincos', 'RL_CARRIERS' => 'RL Carriers', 'ROADBULL_LOGISTICS' => 'Roadbull Logistics', 'ROCKET_PARCEL_INTERNATIONAL' => 'Rocket Parcel International', 'RPD2MAN_DELIVERIES' => 'RPD2man Deliveries', 'RPX_INDONESIA' => 'RPX Indonesia', 'RPX_ONLINE' => 'RPX Online', 'RRD_INTERNATIONAL_LOGISTICS_USA' => 'RRD International Logistics U.S.A', 'RUSSIAN_POST' => 'Russian Post', 'RUSTON' => 'Ruston', 'RZY_EXPRESS' => 'RZY Express', 'SAFEXPRESS' => 'Safexpress', 'SAGAWA' => 'Sagawa', 'SAIA_LTL_FREIGHT' => 'Saia LTL Freight', 'SAILPOST' => 'SAILPOST', 'SAP_EXPRESS' => 'SAP EXPRESS', 'SAUDI_POST' => 'Saudi Post', 'SCUDEX_EXPRESS' => 'Scudex Express', 'SEINO' => 'Seino', 'SEKO_LOGISTICS' => 'SEKO Logistics', 'SENDING_TRANSPORTE_URGENTE_Y_COMUNICACION_SAU' => 'Sending Transporte Urgente y Comunicacion, S.A.U', 'SENDIT' => 'Sendit', 'SENDLE' => 'Sendle', 'SFC_SERVICE' => 'SFC Service', 'SF_EXPRESS' => 'S.F. Express', 'SF_INTERNATIONAL' => 'S.F International', 'SGT_CORRIERE_ESPRESSO' => 'SGT Corriere Espresso', 'SHANGHAI_WISE_SUPPLY_CHAIN_MANAGEMENT_CO_LTD' => '上海万色供应链管理有限公司(原:上海万色速递有限公司) Shanghai Wise Supply Chain Management Co., Ltd', 'SHENZHEN_JINGHUADA_LOGISTICS_CO_LTD' => 'Shenzhen Jinghuada Logistics Co., Ltd', 'SHIPPIT' => 'Shippit', 'SHIPTOR' => 'Shiptor', 'SHOPFANSRU_LLC' => 'ShopfansRU LLC', 'SHREE_MARUTI_COURIER_SERVICES_PVT_LTD' => 'Shree Maruti Courier Services Pvt Ltd', 'SHREE_TIRUPATI_COURIER_SERVICES_PVT_LTD' => 'SHREE TIRUPATI COURIER SERVICES PVT. LTD.', 'SHUNYOU_POST' => 'Shunyou Post', 'SIMPLYPOST' => 'SimplyPost', 'SINGAPORE_POST' => 'Singapore Post', 'SINGAPORE_SPEEDPOST' => 'Singapore Speedpost', 'SIODEMKA' => 'Siodemka', 'SKYBOX' => 'SKYBOX', 'SKYNET_MALAYSIA' => 'SkyNet Malaysia', 'SKYNET_WORLDWIDE_EXPRESS' => 'SkyNet Worldwide Express', 'SKYNET_WORLDWIDE_EXPRESS_UAE' => 'SkyNet Worldwide Express UAE', 'SKYNET_WORLDWIDE_EXPRESS_UK' => 'Skynet Worldwide Express UK', 'SKYNET_WORLD_WIDE_EXPRESS_SOUTH_AFRICA' => 'Skynet World Wide Express South Africa', 'SKYPOSTAL' => 'SkyPostal', 'SMOOTH_COURIERS' => 'Smooth Couriers', 'SMSA_EXPRESS' => 'SMSA Express', 'SOUTH_AFRICAN_POST_OFFICE' => 'South African Post Office', 'SPANISH_SEUR' => 'Spanish Seur', 'SPECIALISED_FREIGHT' => 'Specialised Freight', 'SPEEDEX_COURIER' => 'Speedex Courier', 'SPEED_COURIERS' => 'Speed Couriers', 'SPOTON_LOGISTICS_PVT_LTD' => 'SPOTON Logistics Pvt Ltd', 'SRE_KOREA' => 'SRE Korea', 'STARTRACK' => 'StarTrack', 'STAR_TRACK_COURIER' => 'Star Track Courier', 'STAR_TRACK_EXPRESS' => 'Star Track Express', 'STO_EXPRESS' => 'STO Express', 'SWISS_POST' => 'Swiss Post', 'TAIWAN_POST' => 'Taiwan Post', 'TAQBIN_HONG_KONG' => 'TAQBIN Hong Kong', 'TAQBIN_MALAYSIA' => 'TAQBIN Malaysia', 'TAQBIN_SINGAPORE' => 'TAQBIN Singapore', 'TCS' => 'TCS', 'TELIWAY_SIC_EXPRESS' => 'Teliway SIC Express', 'THAILAND_THAI_POST' => 'Thailand Thai Post', 'THE_COURIER_GUY' => 'The Courier Guy', 'TIKI' => 'Tiki', 'TIPSA' => 'TIPSA', 'TNT_AUSTRALIA' => 'TNT Australia', 'TNT_CLICK_ITALY' => 'TNT-Click Italy', 'TNT_FRANCE' => 'TNT France', 'TNT_ITALY' => 'TNT Italy', 'TNT_REFERENCE' => 'TNT Reference', 'TNT_UK_REFERENCE' => 'TNT UK Reference', 'TOLL_IPEC' => 'Toll IPEC', 'TOLL_PRIORITY' => 'Toll Priority', 'TOLOS' => 'Tolos', 'TRAKPAK' => 'TrakPak', 'TRANSMISSION' => 'TransMission', 'TRANS_KARGO_INTERNASIONAL' => 'Trans Kargo Internasional', 'TUFFNELLS_PARCELS_EXPRESS' => 'Tuffnells Parcels Express', 'UBI_SMART_PARCEL' => 'UBI Smart Parcel', 'UKRPOSHTA' => 'UkrPoshta', 'UK_MAIL' => 'UK Mail', 'UNITED_DELIVERY_SERVICE_LTD' => 'United Delivery Service, Ltd', 'UPS_FREIGHT' => 'UPS Freight', 'UPS_MAIL_INNOVATIONS' => 'UPS Mail Innovations', 'VIETNAM_POST' => 'Vietnam Post', 'VIETNAM_POST_EMS' => 'Vietnam Post EMS', 'VIETTELPOST' => 'ViettelPost', 'WAHANA' => 'Wahana', 'WANBEXPRESS' => 'WanbExpress', 'WEDO_LOGISTICS' => 'WeDo Logistics', 'WEPOST_LOGISTICS' => 'WePost Logistics', 'WHISTL' => 'Whistl', 'WISELOADS' => 'Wiseloads', 'WISE_EXPRESS' => 'Wise Express', 'WISHPOST' => 'WishPost', 'WNDIRECT' => 'wnDirect', 'XDP_EXPRESS' => 'XDP Express', 'XDP_EXPRESS_REFERENCE' => 'XDP Express Reference', 'XEND_EXPRESS' => 'Xend Express', 'XL_EXPRESS' => 'XL Express', 'XPOSTPH' => 'Xpost.ph', 'XPRESSBEES' => 'XpressBees', 'XQ_EXPRESS' => 'XQ Express', 'YAKIT' => 'Yakit', 'YAMATO_JAPAN' => 'Yamato Japan', 'YANWEN' => 'Yanwen', 'YODEL_DOMESTIC' => 'Yodel Domestic', 'YODEL_INTERNATIONAL' => 'Yodel International', 'YRC' => 'YRC', 'YTO_EXPRESS' => 'YTO Express', 'YUNDA_EXPRESS' => 'Yunda Express', 'YUN_EXPRESS' => 'Yun Express', 'ZEPTOEXPRESS' => 'ZeptoExpress', 'ZINC' => 'Zinc', 'ZJS_INTERNATIONAL' => 'ZJS International', 'ZTO_EXPRESS' => 'ZTO Express', 'ZYLLEM' => 'Zyllem', ); /** * @see https://docs.woocommerce.com/document/shipment-tracking/#section-5 */ $this->shipment_tracking_carriers = array( // Australia 'Australia Post' => 'AUSTRALIA_POST', 'Fastway Couriers' => 'FASTWAY_AUSTRALIA', // Austria 'post.at' => 'OTHER', 'dhl.at' => 'DHL', 'DPD.at' => 'DPD', // TODO: may be DPD_GERMANY (because the example URL contains "tracking.dpd.de") // Brazil 'Correios' => 'BRAZIL_CORREIOS', // Belgium 'bpost' => 'BPOST', // TODO: may be BPOST_INTERNATIONAL // Canada 'Canada Post' => 'CANADA_POST', // Czech Republic 'PPL.cz' => 'OTHER', 'Česká pošta' => 'CESKA_POSTA', 'DHL.cz' => 'DHL', 'DPD.cz' => 'DPD', // TODO: may be DPD_GERMANY (because the example URL contains "tracking.dpd.de") // Finland 'Itella' => 'OTHER', // France 'Colissimo' => 'COLISSIMO', // Germany 'DHL Intraship (DE)' => 'DHL', 'Hermes' => 'HERMES_GERMANY', 'Deutsche Post DHL' => 'DEUTSCHE_POST_DHL', 'UPS Germany' => 'UPS', 'DPD.de' => 'DPD_GERMANY', // Ireland 'DPD.ie' => 'DPD_IRELAND', 'An Post' => 'AN_POST', // Italy 'BRT (Bartolini)' => 'BRT_BARTOLINI', // TODO: may be BRT_BARTOLINI_PARCEL_ID 'DHL Express' => 'DHL_EXPRESS_PIECE_ID', // India 'DTDC' => 'DTDC_INDIA', // Netherlands 'PostNL' => 'POSTNL_DOMESTIC', // TODO: may be POSTNL_INTERNATIONAL or POSTNL_INTERNATIONAL_3S 'DPD.NL' => 'DPD', 'UPS Netherlands' => 'UPS', // New Zealand 'Courier Post' => 'COURIERPOST', 'NZ Post' => 'NEW_ZEALAND_POST', 'Fastways' => 'FASTWAY_NEW_ZEALAND', 'PBT Couriers' => 'OTHER', // Poland 'InPost' => 'INPOST_PACZKOMATY', 'DPD.PL' => 'DPD_POLAND', 'Poczta Polska' => 'POCZTA_POLSKA', // Romania 'Fan Courier' => 'OTHER', 'DPD Romania' => 'DPD_ROMANIA', 'Urgent Cargus' => 'OTHER', // South Africa 'SAPO' => 'SOUTH_AFRICAN_POST_OFFICE', 'Fastway' => 'FASTWAY_SOUTH_AFRICA', // Sweden 'PostNord Sverige AB' => 'POSTNORD_SWEDEN', 'DHL.se' => 'DHL', 'Bring.se' => 'POSTEN_NORGE_BRING', 'UPS.se' => 'UPS', 'DB Schenker' => 'DB_SCHENKER_SWEDEN', // United Kingdom 'DHL' => 'DHL', 'DPD.co.uk' => 'DPD_UK', 'InterLink' => 'OTHER', 'ParcelForce' => 'PARCEL_FORCE', 'Royal Mail' => 'ROYAL_MAIL', 'TNT Express (consignment)' => 'TNT_UK_REFERENCE', 'TNT Express (reference)' => 'TNT_UK_REFERENCE', 'DHL Parcel UK' => 'DHL', // United States 'Fedex' => 'FEDEX', 'FedEx Sameday' => 'FEDEX', 'OnTrac' => 'ONTRAC', 'UPS' => 'UPS', 'USPS' => 'USPS', 'DHL US' => 'DHL_ECOMMERCE_US', // TODO: may be DHL ); } /** * Gets the valid carriers. * * @since 2.1.0 * * @return array key-value array with carrier codes and their labels */ public function get_carrier_options() { return $this->valid_carriers; } /** * Determines whether the given carrier is one of the valid carrier options. * * @since 2.1.0 * * @param string $carrier * @return bool */ public function is_valid_carrier( $carrier ) { return array_key_exists( $carrier, $this->get_carrier_options() ); } /** * Finds the proper Facebook carrier code, given a Shipment Tracking carrier. * * @since 2.1.0 * * @param string $carrier Shipment Tracking carrier * @return string */ public function convert_shipment_tracking_carrier_code( $carrier ) { if ( isset( $this->shipment_tracking_carriers[ $carrier ] ) ) { $carrier_code = $this->shipment_tracking_carriers[ $carrier ]; } elseif ( in_array( $carrier, $this->get_carrier_options(), true ) ) { $carrier_code = array_search( $carrier, $this->get_carrier_options(), true ); } elseif ( array_key_exists( $carrier, $this->get_carrier_options() ) ) { $carrier_code = $carrier; } else { $carrier_code = 'OTHER'; } return $carrier_code; } }