@@ -65,6 +65,13 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
6565 */
6666 public const TRACK_REQUEST_END_POINT = 'track/v1/trackingnumbers ' ;
6767
68+ /**
69+ * REST end point of Tracking API
70+ *
71+ * @var string
72+ */
73+ public const AUTHENTICATION_GRANT_TYPE = 'client_credentials ' ;
74+
6875 /**
6976 * Code of the carrier
7077 *
@@ -153,12 +160,6 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
153160 */
154161 private static $ trackServiceVersion = 10 ;
155162
156- /**
157- * List of TrackReply errors
158- * @var array
159- */
160- private static $ trackingErrors = ['FAILURE ' , 'ERROR ' ];
161-
162163 /**
163164 * @var Json
164165 */
@@ -174,11 +175,6 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
174175 */
175176 private $ baseCurrencyRate ;
176177
177- /**
178- * @var DataObject
179- */
180- private $ _rawTrackingRequest ;
181-
182178 /**
183179 * @var CurlFactory
184180 */
@@ -301,16 +297,6 @@ protected function _createShipSoapClient()
301297 return $ this ->_createSoapClient ($ this ->_shipServiceWsdl , 1 );
302298 }
303299
304- /**
305- * Create track soap client
306- *
307- * @return \SoapClient
308- */
309- protected function _createTrackSoapClient ()
310- {
311- return $ this ->_createSoapClient ($ this ->_trackServiceWsdl , 1 );
312- }
313-
314300 /**
315301 * Collect and get rates
316302 *
@@ -1107,12 +1093,10 @@ public function getCurrencyCode()
11071093 * Get tracking
11081094 *
11091095 * @param string|string[] $trackings
1110- * @return Result|null
1096+ * @return \Magento\Shipping\Model\Tracking\ Result|null
11111097 */
1112- public function getTracking ($ trackings )
1098+ public function getTracking ($ trackings ) : \ Magento \ Shipping \ Model \ Tracking \ Result | null
11131099 {
1114- $ this ->setTrackingReqeust ();
1115-
11161100 if (!is_array ($ trackings )) {
11171101 $ trackings = [$ trackings ];
11181102 }
@@ -1124,27 +1108,12 @@ public function getTracking($trackings)
11241108 return $ this ->_result ;
11251109 }
11261110
1127- /**
1128- * Set tracking request
1129- *
1130- * @return void
1131- */
1132- protected function setTrackingReqeust ()
1133- {
1134- $ r = new \Magento \Framework \DataObject ();
1135-
1136- $ account = $ this ->getConfigData ('account ' );
1137- $ r ->setAccount ($ account );
1138-
1139- $ this ->_rawTrackingRequest = $ r ;
1140- }
1141-
11421111 /**
11431112 * Get Base Url for REST API
11441113 *
11451114 * @return string
11461115 */
1147- protected function _getBaseUrl ()
1116+ protected function _getBaseUrl () : string
11481117 {
11491118 return $ this ->getConfigFlag ('rest_sandbox_mode ' ) ? $ this ->getConfigData ('rest_sandbox_webservices_url ' )
11501119 : $ this ->getConfigData ('rest_production_webservices_url ' );
@@ -1155,19 +1124,19 @@ protected function _getBaseUrl()
11551124 * @param string $tracking
11561125 * @return string|null
11571126 */
1158- protected function _getAccessToken ($ tracking )
1127+ protected function _getAccessToken ($ tracking ) : string | null
11591128 {
11601129 $ apiKey = $ this ->getConfigData ('api_key ' ) ?? null ;
11611130 $ secretKey = $ this ->getConfigData ('secret_key ' ) ?? null ;
11621131
11631132 if (!$ apiKey || !$ secretKey ) {
11641133 $ this ->_debug ('Authentication keys are missing. ' );
11651134 $ this ->appendTrackingError ($ tracking , __ ('Authentication keys are missing. ' ));
1166- return ;
1135+ return null ;
11671136 }
11681137
11691138 $ requestArray = [
1170- 'grant_type ' => ' client_credentials ' ,
1139+ 'grant_type ' => self :: AUTHENTICATION_GRANT_TYPE ,
11711140 'client_id ' => $ apiKey ,
11721141 'client_secret ' => $ secretKey
11731142 ];
@@ -1176,7 +1145,7 @@ protected function _getAccessToken($tracking)
11761145 $ url = $ this ->_getBaseUrl () . self ::OAUTH_REQUEST_END_POINT ;
11771146
11781147 $ accessToken = null ;
1179- $ headers = [" Content-Type " => " application/x-www-form-urlencoded " ];
1148+ $ headers = [' Content-Type ' => ' application/x-www-form-urlencoded ' ];
11801149 $ curlClient = $ this ->curlFactory ->create ();
11811150
11821151 try {
@@ -1194,6 +1163,7 @@ protected function _getAccessToken($tracking)
11941163 } catch (\Exception $ e ) {
11951164 $ this ->_logger ->critical ($ e );
11961165 }
1166+
11971167 return $ accessToken ;
11981168 }
11991169 /**
@@ -1202,18 +1172,17 @@ protected function _getAccessToken($tracking)
12021172 * @param string $tracking
12031173 * @return void
12041174 */
1205- protected function _getTrackingInformation ($ tracking )
1175+ protected function _getTrackingInformation ($ tracking ) : void
12061176 {
1207- // authentication
12081177 $ accessToken = $ this ->_getAccessToken ($ tracking );
12091178 if (!empty ($ accessToken )) {
12101179
12111180 $ trackRequest = [
1212- " includeDetailedScans " => true ,
1213- " trackingInfo " => [
1181+ ' includeDetailedScans ' => true ,
1182+ ' trackingInfo ' => [
12141183 [
1215- " trackingNumberInfo " => [
1216- " trackingNumber " => $ tracking
1184+ ' trackingNumberInfo ' => [
1185+ ' trackingNumber ' => $ tracking
12171186 ]
12181187 ]
12191188 ]
@@ -1225,17 +1194,18 @@ protected function _getTrackingInformation($tracking)
12251194
12261195 if ($ response === null ) {
12271196 $ headers = [
1228- " Content-Type " => " application/json " ,
1229- " Authorization " => " Bearer " .$ accessToken ,
1230- " X-locale " => " en_US " ,
1197+ ' Content-Type ' => ' application/json ' ,
1198+ ' Authorization ' => ' Bearer ' .$ accessToken ,
1199+ ' X-locale ' => ' en_US ' ,
12311200
12321201 ];
1202+
12331203 $ url = $ this ->_getBaseUrl () . self ::TRACK_REQUEST_END_POINT ;
12341204 $ curlClient = $ this ->curlFactory ->create ();
12351205
12361206 try {
12371207 $ curlClient ->setHeaders ($ headers );
1238- $ curlClient ->setOptions ([CURLOPT_ENCODING => " gzip,deflate,sdch " ]);
1208+ $ curlClient ->setOptions ([CURLOPT_ENCODING => ' gzip,deflate,sdch ' ]);
12391209 $ curlClient ->post ($ url , $ requestString );
12401210 $ response = $ curlClient ->getBody ();
12411211 $ response = $ this ->serializer ->unserialize ($ response );
@@ -1266,14 +1236,14 @@ protected function _getTrackingInformation($tracking)
12661236 * @param array $response
12671237 * @return void
12681238 */
1269- protected function _parseTrackingResponse ($ trackingValue , $ response )
1239+ protected function _parseTrackingResponse ($ trackingValue , $ response ) : void
12701240 {
12711241 if (!is_array ($ response ) || empty ($ response ['output ' ])) {
12721242 $ this ->_debug ($ response );
12731243 $ this ->appendTrackingError ($ trackingValue , __ ('Invalid response from carrier ' ));
12741244 return ;
12751245 } elseif (empty (reset ($ response ['output ' ]['completeTrackResults ' ])['trackResults ' ])) {
1276- $ this ->_debug ('No available tracking items. ' );
1246+ $ this ->_debug ('No available tracking items ' );
12771247 $ this ->appendTrackingError ($ trackingValue , __ ('No available tracking items ' ));
12781248 return ;
12791249 }
@@ -1736,7 +1706,7 @@ protected function filterDebugData($data)
17361706 * @SuppressWarnings(PHPMD.CyclomaticComplexity)
17371707 * @SuppressWarnings(PHPMD.NPathComplexity)
17381708 */
1739- private function processTrackingDetails ($ trackInfo )
1709+ private function processTrackingDetails ($ trackInfo ) : array
17401710 {
17411711 $ result = [
17421712 'shippeddate ' => null ,
@@ -1825,22 +1795,23 @@ private function processTrackingDetails($trackInfo)
18251795 * @param array $trackInfo
18261796 * @return \Datetime|null
18271797 */
1828- private function getDeliveryDateTime ($ trackInfo )
1798+ private function getDeliveryDateTime ($ trackInfo ) : \ Datetime | null
18291799 {
18301800 $ timestamp = null ;
1831-
18321801 if (!empty ($ trackInfo ['dateAndTimes ' ]) && is_array ($ trackInfo ['dateAndTimes ' ])) {
18331802 foreach ($ trackInfo ['dateAndTimes ' ] as $ dateAndTimeInfo ) {
18341803 if (!empty ($ dateAndTimeInfo ['type ' ]) &&
18351804 ($ dateAndTimeInfo ['type ' ] == 'ESTIMATED_DELIVERY ' || $ dateAndTimeInfo ['type ' ] == 'ACTUAL_DELIVERY ' )
1805+ && !empty ($ dateAndTimeInfo ['dateTime ' ])
18361806 ) {
18371807 $ timestamp = $ dateAndTimeInfo ['dateTime ' ];
18381808 break ;
18391809 }
18401810 }
18411811 }
18421812
1843- return $ timestamp ? $ this ->parseDate ($ timestamp ) : null ;
1813+ $ timestamp = $ timestamp ? $ this ->parseDate ($ timestamp ) : null ;
1814+ return $ timestamp ?: null ;
18441815 }
18451816
18461817 /**
@@ -1849,7 +1820,7 @@ private function getDeliveryDateTime($trackInfo)
18491820 * @param array $address
18501821 * @return \Magento\Framework\Phrase|string
18511822 */
1852- private function getDeliveryAddress ($ address )
1823+ private function getDeliveryAddress ($ address ) : \ Magento \ Framework \ Phrase | string
18531824 {
18541825 $ details = [];
18551826
@@ -1876,7 +1847,7 @@ private function getDeliveryAddress($address)
18761847 * @param array $events
18771848 * @return array
18781849 */
1879- private function processTrackDetailsEvents (array $ events )
1850+ private function processTrackDetailsEvents (array $ events ) : array
18801851 {
18811852 $ result = [];
18821853 foreach ($ events as $ event ) {
0 commit comments