@@ -65,6 +65,13 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
65
65
*/
66
66
public const TRACK_REQUEST_END_POINT = 'track/v1/trackingnumbers ' ;
67
67
68
+ /**
69
+ * REST end point of Tracking API
70
+ *
71
+ * @var string
72
+ */
73
+ public const AUTHENTICATION_GRANT_TYPE = 'client_credentials ' ;
74
+
68
75
/**
69
76
* Code of the carrier
70
77
*
@@ -153,12 +160,6 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
153
160
*/
154
161
private static $ trackServiceVersion = 10 ;
155
162
156
- /**
157
- * List of TrackReply errors
158
- * @var array
159
- */
160
- private static $ trackingErrors = ['FAILURE ' , 'ERROR ' ];
161
-
162
163
/**
163
164
* @var Json
164
165
*/
@@ -174,11 +175,6 @@ class Carrier extends AbstractCarrierOnline implements \Magento\Shipping\Model\C
174
175
*/
175
176
private $ baseCurrencyRate ;
176
177
177
- /**
178
- * @var DataObject
179
- */
180
- private $ _rawTrackingRequest ;
181
-
182
178
/**
183
179
* @var CurlFactory
184
180
*/
@@ -301,16 +297,6 @@ protected function _createShipSoapClient()
301
297
return $ this ->_createSoapClient ($ this ->_shipServiceWsdl , 1 );
302
298
}
303
299
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
-
314
300
/**
315
301
* Collect and get rates
316
302
*
@@ -1107,12 +1093,10 @@ public function getCurrencyCode()
1107
1093
* Get tracking
1108
1094
*
1109
1095
* @param string|string[] $trackings
1110
- * @return Result|null
1096
+ * @return \Magento\Shipping\Model\Tracking\ Result|null
1111
1097
*/
1112
- public function getTracking ($ trackings )
1098
+ public function getTracking ($ trackings ) : \ Magento \ Shipping \ Model \ Tracking \ Result | null
1113
1099
{
1114
- $ this ->setTrackingReqeust ();
1115
-
1116
1100
if (!is_array ($ trackings )) {
1117
1101
$ trackings = [$ trackings ];
1118
1102
}
@@ -1124,27 +1108,12 @@ public function getTracking($trackings)
1124
1108
return $ this ->_result ;
1125
1109
}
1126
1110
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
-
1142
1111
/**
1143
1112
* Get Base Url for REST API
1144
1113
*
1145
1114
* @return string
1146
1115
*/
1147
- protected function _getBaseUrl ()
1116
+ protected function _getBaseUrl () : string
1148
1117
{
1149
1118
return $ this ->getConfigFlag ('rest_sandbox_mode ' ) ? $ this ->getConfigData ('rest_sandbox_webservices_url ' )
1150
1119
: $ this ->getConfigData ('rest_production_webservices_url ' );
@@ -1155,19 +1124,19 @@ protected function _getBaseUrl()
1155
1124
* @param string $tracking
1156
1125
* @return string|null
1157
1126
*/
1158
- protected function _getAccessToken ($ tracking )
1127
+ protected function _getAccessToken ($ tracking ) : string | null
1159
1128
{
1160
1129
$ apiKey = $ this ->getConfigData ('api_key ' ) ?? null ;
1161
1130
$ secretKey = $ this ->getConfigData ('secret_key ' ) ?? null ;
1162
1131
1163
1132
if (!$ apiKey || !$ secretKey ) {
1164
1133
$ this ->_debug ('Authentication keys are missing. ' );
1165
1134
$ this ->appendTrackingError ($ tracking , __ ('Authentication keys are missing. ' ));
1166
- return ;
1135
+ return null ;
1167
1136
}
1168
1137
1169
1138
$ requestArray = [
1170
- 'grant_type ' => ' client_credentials ' ,
1139
+ 'grant_type ' => self :: AUTHENTICATION_GRANT_TYPE ,
1171
1140
'client_id ' => $ apiKey ,
1172
1141
'client_secret ' => $ secretKey
1173
1142
];
@@ -1176,7 +1145,7 @@ protected function _getAccessToken($tracking)
1176
1145
$ url = $ this ->_getBaseUrl () . self ::OAUTH_REQUEST_END_POINT ;
1177
1146
1178
1147
$ accessToken = null ;
1179
- $ headers = [" Content-Type " => " application/x-www-form-urlencoded " ];
1148
+ $ headers = [' Content-Type ' => ' application/x-www-form-urlencoded ' ];
1180
1149
$ curlClient = $ this ->curlFactory ->create ();
1181
1150
1182
1151
try {
@@ -1194,6 +1163,7 @@ protected function _getAccessToken($tracking)
1194
1163
} catch (\Exception $ e ) {
1195
1164
$ this ->_logger ->critical ($ e );
1196
1165
}
1166
+
1197
1167
return $ accessToken ;
1198
1168
}
1199
1169
/**
@@ -1202,18 +1172,17 @@ protected function _getAccessToken($tracking)
1202
1172
* @param string $tracking
1203
1173
* @return void
1204
1174
*/
1205
- protected function _getTrackingInformation ($ tracking )
1175
+ protected function _getTrackingInformation ($ tracking ) : void
1206
1176
{
1207
- // authentication
1208
1177
$ accessToken = $ this ->_getAccessToken ($ tracking );
1209
1178
if (!empty ($ accessToken )) {
1210
1179
1211
1180
$ trackRequest = [
1212
- " includeDetailedScans " => true ,
1213
- " trackingInfo " => [
1181
+ ' includeDetailedScans ' => true ,
1182
+ ' trackingInfo ' => [
1214
1183
[
1215
- " trackingNumberInfo " => [
1216
- " trackingNumber " => $ tracking
1184
+ ' trackingNumberInfo ' => [
1185
+ ' trackingNumber ' => $ tracking
1217
1186
]
1218
1187
]
1219
1188
]
@@ -1225,17 +1194,18 @@ protected function _getTrackingInformation($tracking)
1225
1194
1226
1195
if ($ response === null ) {
1227
1196
$ 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 ' ,
1231
1200
1232
1201
];
1202
+
1233
1203
$ url = $ this ->_getBaseUrl () . self ::TRACK_REQUEST_END_POINT ;
1234
1204
$ curlClient = $ this ->curlFactory ->create ();
1235
1205
1236
1206
try {
1237
1207
$ curlClient ->setHeaders ($ headers );
1238
- $ curlClient ->setOptions ([CURLOPT_ENCODING => " gzip,deflate,sdch " ]);
1208
+ $ curlClient ->setOptions ([CURLOPT_ENCODING => ' gzip,deflate,sdch ' ]);
1239
1209
$ curlClient ->post ($ url , $ requestString );
1240
1210
$ response = $ curlClient ->getBody ();
1241
1211
$ response = $ this ->serializer ->unserialize ($ response );
@@ -1266,14 +1236,14 @@ protected function _getTrackingInformation($tracking)
1266
1236
* @param array $response
1267
1237
* @return void
1268
1238
*/
1269
- protected function _parseTrackingResponse ($ trackingValue , $ response )
1239
+ protected function _parseTrackingResponse ($ trackingValue , $ response ) : void
1270
1240
{
1271
1241
if (!is_array ($ response ) || empty ($ response ['output ' ])) {
1272
1242
$ this ->_debug ($ response );
1273
1243
$ this ->appendTrackingError ($ trackingValue , __ ('Invalid response from carrier ' ));
1274
1244
return ;
1275
1245
} elseif (empty (reset ($ response ['output ' ]['completeTrackResults ' ])['trackResults ' ])) {
1276
- $ this ->_debug ('No available tracking items. ' );
1246
+ $ this ->_debug ('No available tracking items ' );
1277
1247
$ this ->appendTrackingError ($ trackingValue , __ ('No available tracking items ' ));
1278
1248
return ;
1279
1249
}
@@ -1736,7 +1706,7 @@ protected function filterDebugData($data)
1736
1706
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
1737
1707
* @SuppressWarnings(PHPMD.NPathComplexity)
1738
1708
*/
1739
- private function processTrackingDetails ($ trackInfo )
1709
+ private function processTrackingDetails ($ trackInfo ) : array
1740
1710
{
1741
1711
$ result = [
1742
1712
'shippeddate ' => null ,
@@ -1825,22 +1795,23 @@ private function processTrackingDetails($trackInfo)
1825
1795
* @param array $trackInfo
1826
1796
* @return \Datetime|null
1827
1797
*/
1828
- private function getDeliveryDateTime ($ trackInfo )
1798
+ private function getDeliveryDateTime ($ trackInfo ) : \ Datetime | null
1829
1799
{
1830
1800
$ timestamp = null ;
1831
-
1832
1801
if (!empty ($ trackInfo ['dateAndTimes ' ]) && is_array ($ trackInfo ['dateAndTimes ' ])) {
1833
1802
foreach ($ trackInfo ['dateAndTimes ' ] as $ dateAndTimeInfo ) {
1834
1803
if (!empty ($ dateAndTimeInfo ['type ' ]) &&
1835
1804
($ dateAndTimeInfo ['type ' ] == 'ESTIMATED_DELIVERY ' || $ dateAndTimeInfo ['type ' ] == 'ACTUAL_DELIVERY ' )
1805
+ && !empty ($ dateAndTimeInfo ['dateTime ' ])
1836
1806
) {
1837
1807
$ timestamp = $ dateAndTimeInfo ['dateTime ' ];
1838
1808
break ;
1839
1809
}
1840
1810
}
1841
1811
}
1842
1812
1843
- return $ timestamp ? $ this ->parseDate ($ timestamp ) : null ;
1813
+ $ timestamp = $ timestamp ? $ this ->parseDate ($ timestamp ) : null ;
1814
+ return $ timestamp ?: null ;
1844
1815
}
1845
1816
1846
1817
/**
@@ -1849,7 +1820,7 @@ private function getDeliveryDateTime($trackInfo)
1849
1820
* @param array $address
1850
1821
* @return \Magento\Framework\Phrase|string
1851
1822
*/
1852
- private function getDeliveryAddress ($ address )
1823
+ private function getDeliveryAddress ($ address ) : \ Magento \ Framework \ Phrase | string
1853
1824
{
1854
1825
$ details = [];
1855
1826
@@ -1876,7 +1847,7 @@ private function getDeliveryAddress($address)
1876
1847
* @param array $events
1877
1848
* @return array
1878
1849
*/
1879
- private function processTrackDetailsEvents (array $ events )
1850
+ private function processTrackDetailsEvents (array $ events ) : array
1880
1851
{
1881
1852
$ result = [];
1882
1853
foreach ($ events as $ event ) {
0 commit comments