Example #1
0
 public function track($trackingNumber)
 {
     if (!isset($trackingNumber)) {
         return false;
     }
     //The WSDL is not included with the sample code.
     //Please include and reference in $path_to_wsdl variable.
     $path_to_wsdl = __DIR__ . DIRECTORY_SEPARATOR . 'TrackService_v9.wsdl';
     ini_set("soap.wsdl_cache_enabled", "0");
     $client = new \SoapClient($path_to_wsdl, array('trace' => 1));
     // Refer to http://us3.php.net/manual/en/ref.soap.php for more information
     $request['WebAuthenticationDetail'] = array('UserCredential' => array('Key' => $this->authKey, 'Password' => $this->authPassword));
     $request['ClientDetail'] = array('AccountNumber' => $this->authAccountNumber, 'MeterNumber' => $this->authMeterNumber);
     $request['TransactionDetail'] = array('CustomerTransactionId' => '*** Track Request using PHP ***');
     $request['Version'] = array('ServiceId' => 'trck', 'Major' => '9', 'Intermediate' => '1', 'Minor' => '0');
     $request['SelectionDetails'] = array('PackageIdentifier' => array('Type' => 'TRACKING_NUMBER_OR_DOORTAG', 'Value' => $trackingNumber));
     try {
         if ($this->setEndpoint('changeEndpoint')) {
             $newLocation = $client->__setLocation(setEndpoint('endpoint'));
         }
         $response = $client->track($request);
         $this->responseToArray($response);
         return $response;
     } catch (SoapFault $exception) {
         $this->printFault($exception, $client);
     }
 }
Example #2
0
	'PackageIdentifier' => array(
		
		'Type' => 'CUSTOMER_REFERENCE',
		'Value' => getProperty('customerreference') // Replace with a valid customer reference
	),
	'ShipmentAccountNumber' => getProperty('trackaccount') // Replace with account used for shipment
);



try {
	if(setEndpoint('changeEndpoint')){
		$newLocation = $client->__setLocation(setEndpoint('endpoint'));
	}
	
	$response = $client ->track($request);

    if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR'){
		if($response->HighestSeverity != 'SUCCESS'){
			echo '<table border="1">';
			echo '<tr><th>Track Reply</th><th>&nbsp;</th></tr>';
			trackDetails($response->Notifications, '');
			echo '</table>';
		}else{
	    	if ($response->CompletedTrackDetails->HighestSeverity != 'SUCCESS'){
				echo '<table border="1">';
			    echo '<tr><th>Shipment Level Tracking Details</th><th>&nbsp;</th></tr>';
			    trackDetails($response->CompletedTrackDetails, '');
				echo '</table>';
			}else{
				echo '<table border="1">';
 /**
  * Sends the TrackRequest and returns the response
  *
  * @param ComplexType\TrackRequest $trackRequest 
  * @return stdClass
  */
 public function getTrackReply(ComplexType\TrackRequest $trackRequest)
 {
     return $this->_soapClient->track($trackRequest->toArray());
 }
Example #4
0
 public function trackFedexShippment()
 {
     //****************
     /* @Description: To get FEDEX tracking detials
     			/* @parameter:   
     			/* @return :  
     			****************/
     global $G_fedexcredentials;
     $fedex_track_no = trim($_REQUEST['trackno']);
     $track_userid = trim($_REQUEST['userid']);
     if (!empty($G_fedexcredentials['key']) && !empty($G_fedexcredentials['password']) && !empty($G_fedexcredentials['shipaccount']) && !empty($G_fedexcredentials['meter'])) {
         $path_to_wsdl = "fedex/TrackService_v9.wsdl";
         $client = new SoapClient($path_to_wsdl, array('trace' => 1));
         $request['WebAuthenticationDetail'] = array('UserCredential' => array('Key' => $G_fedexcredentials['key'], 'Password' => $G_fedexcredentials['password']));
         $request['ClientDetail'] = array('AccountNumber' => $G_fedexcredentials['shipaccount'], 'MeterNumber' => $G_fedexcredentials['meter']);
         //$request['TransactionDetail'] = array('CustomerTransactionId' => 'Track By Number_v9');
         $request['Version'] = array('ServiceId' => 'trck', 'Major' => '9', 'Intermediate' => '1', 'Minor' => '0');
         $request['SelectionDetails'] = array('PackageIdentifier' => 'FDXE', 'PackageIdentifier' => array('Type' => 'TRACKING_NUMBER_OR_DOORTAG', 'Value' => trim($_REQUEST['trackno'])));
         try {
             $response = $client->track($request);
             // print_r($response);
             if ($response->HighestSeverity != 'FAILURE' && $response->HighestSeverity != 'ERROR') {
                 if (!empty($response->CompletedTrackDetails->TrackDetails->StatusDetail)) {
                     if ($response->CompletedTrackDetails->TrackDetails->Notification->Severity == 'SUCCESS') {
                         $return_arr['error_code'] = 0;
                         $track_data['userid'] = trim($_REQUEST['userid']);
                         $description = $response->CompletedTrackDetails->TrackDetails->StatusDetail->Description;
                         $desitnation_address = $response->CompletedTrackDetails->TrackDetails->DestinationAddress;
                         $delivery_address = $response->CompletedTrackDetails->TrackDetails->ActualDeliveryAddress;
                         $track_data['trackno'] = $response->CompletedTrackDetails->TrackDetails->TrackingNumber;
                         $service = $response->CompletedTrackDetails->TrackDetails->Service->Description;
                         if (!empty($response->CompletedTrackDetails->TrackDetails->PackageWeight->Value)) {
                             $package_weight = sprintf('%s %s', $response->CompletedTrackDetails->TrackDetails->PackageWeight->Value, $response->CompletedTrackDetails->TrackDetails->PackageWeight->Units);
                         } else {
                             $package_weight = 'N/A';
                         }
                         if (!empty($response->CompletedTrackDetails->TrackDetails->PackageDimensions->Length)) {
                             $package_dimensions = sprintf('L=%s, W=%s, H=%s(%s)', $response->CompletedTrackDetails->TrackDetails->PackageDimensions->Length, $response->CompletedTrackDetails->TrackDetails->PackageDimensions->Width, $response->CompletedTrackDetails->TrackDetails->PackageDimensions->Height, $response->CompletedTrackDetails->TrackDetails->PackageDimensions->Units);
                         } else {
                             $package_dimensions = 'N/A';
                         }
                         $track_data['package_weight'] = $package_weight;
                         $track_data['package_dimensions'] = $package_dimensions;
                         $track_data['type'] = 'fedex';
                         if ($description != "") {
                             $record_status = $description;
                         } else {
                             $record_status = "pending";
                         }
                         $track_data['status'] = $record_status;
                         $track_data['service'] = $service;
                         $currentlocation = $response->CompletedTrackDetails->TrackDetails->StatusDetail->Location;
                         $track_data['arrtime'] = date('M j, Y H:i:s', strtotime($response->CompletedTrackDetails->TrackDetails->ActualDeliveryTimestamp));
                         $track_data['deptime'] = date('M j, Y H:i:s', strtotime($response->CompletedTrackDetails->TrackDetails->ShipTimestamp));
                         $final_llocatoin = $final_destadd = $final_add = '';
                         foreach ($delivery_address as $key => $address) {
                             if (!empty($address)) {
                                 $final_add .= sprintf('%s: %s, ', $key, $address);
                             }
                         }
                         foreach ($desitnation_address as $dkey => $dest) {
                             if (!empty($dest)) {
                                 $final_destadd .= sprintf('%s: %s, ', $dkey, $dest);
                             }
                         }
                         foreach ($currentlocation as $lkey => $laddress) {
                             if (!empty($laddress)) {
                                 $final_llocatoin .= sprintf('%s: %s, ', $lkey, $laddress);
                             }
                         }
                         $track_data['destination'] = trim($final_destadd, ', ');
                         $track_data['devlivery'] = trim($final_add, ', ');
                         $track_data['lastlocation'] = trim($final_llocatoin, ', ');
                         $track_update_id = $this->checkTrackExists();
                         if ($track_update_id === false) {
                             $track_ins_id = $this->insertTrackStatus($track_data);
                             if ($track_ins_id !== false) {
                                 $track_data['trackid'] = $track_ins_id;
                                 $this->emailPushNotification($track_userid, $fedex_track_no, $record_status);
                             }
                         } else {
                             $track_package_name = $this->updateTrackStatus($track_data, $track_update_id);
                             $track_data['trackid'] = $track_update_id;
                             $track_data['packagename'] = $track_package_name;
                             $this->emailPushNotification($track_userid, $fedex_track_no, $record_status, $track_update_id);
                         }
                         $track_data['trackhistory'] = array();
                         $return_arr['tracklist'][] = $track_data;
                     } else {
                         $return_arr['error_code'] = 1;
                         $return_arr['error_msg'] = $response->CompletedTrackDetails->TrackDetails->Notification->Message;
                     }
                 }
             } else {
                 $return_arr['error_code'] = 1;
                 $return_arr['error_msg'] = 'FEDEX API error';
             }
         } catch (SoapFault $exception) {
             $return_arr['error_code'] = 1;
             $return_arr['error_msg'] = 'FEDEX SOAP exception arised';
         }
     } else {
         $return_arr['error_code'] = 1;
         $return_arr['error_msg'] = 'Missing FEDEX configuration';
     }
     $this->printErrorMessage($return_arr);
 }
Example #5
0
 function trackPackages($track_date = '0000-00-00', $log_id = false)
 {
     global $db, $messageStack;
     $result = array();
     if (MODULE_SHIPPING_FEDEX_V7_TEST_MODE == 'Test') {
         $messageStack->add('Tracking only works on the FedEx production server!', 'error');
         return false;
     } else {
         $client = new SoapClient(PATH_TO_TRACK_WSDL, array('trace' => 1));
     }
     if ($log_id) {
         $shipments = $db->Execute("select id, ref_id, deliver_date, actual_date, tracking_id, notes \n\t\t\t\tfrom " . TABLE_SHIPPING_LOG . " \n\t\t\t\twhere carrier = '" . $this->code . "' and id = '" . $log_id . "'");
     } else {
         $start_date = $track_date;
         $end_date = gen_specific_date($track_date, $day_offset = 1);
         $shipments = $db->Execute("select id, ref_id, deliver_date, actual_date, tracking_id, notes \n\t\t\t\tfrom " . TABLE_SHIPPING_LOG . " \n\t\t\t\twhere carrier = '" . $this->code . "' \n\t\t\t\t\tand ship_date >= '" . $start_date . "' and ship_date < '" . $end_date . "'");
     }
     while (!$shipments->EOF) {
         $tracking_number = $shipments->fields['tracking_id'];
         if ($shipments->fields['actual_date'] != '0000-00-00 00:00:00') {
             // skip if already tracked
             $shipments->MoveNext();
             continue;
         }
         $request = $this->FormatFedExTrackRequest($shipments->fields['tracking_id']);
         if (!$request) {
             continue;
         }
         //echo 'request = '; print_r($request); echo '<br />';
         try {
             $response = $client->track($request);
             //echo 'Request <pre>' . htmlspecialchars($client->__getLastRequest()) . '</pre>';
             //echo 'Response <pre>' . htmlspecialchars($client->__getLastResponse()) . '</pre>';
             if ($response->HighestSeverity != 'FAILURE' && $response->HighestSeverity != 'ERROR') {
                 $actual_date = str_replace('T', ' ', $response->TrackDetails->ActualDeliveryTimestamp);
                 $actual_date = substr($actual_date, 0, -6);
                 // see if the package was late, flag if so
                 $late = '0';
                 // no data
                 if ($shipments->fields['deliver_date'] < $actual_date) {
                     $late = 'L';
                     //					  $messageStack->add(SHIPPING_FEDEX_V7_TRACK_FAIL . $shipments->fields['ref_id'], 'error');
                 } elseif ($response->TrackDetails->StatusCode != 'DL') {
                     $late = 'T';
                     $messageStack->add(sprintf(SHIPPING_FEDEX_V7_TRACK_STATUS, $shipments->fields['ref_id'], $response->TrackDetails->StatusCode, $response->TrackDetails->StatusDescription), 'caution');
                 }
                 // update the log file with the actual delivery timestamp, append notes
                 $db->Execute("update " . TABLE_SHIPPING_LOG . " \n\t\t\t\t\t  set actual_date = '" . $actual_date . "', deliver_late = '" . $late . "' where id = " . $shipments->fields['id']);
                 //					$messageStack->add(SHIPPING_FEDEX_V7_TRACK_SUCCESS . $response->TrackDetails->ActualDeliveryTimestamp, 'success');
             } else {
                 foreach ($response->Notifications as $notification) {
                     if (is_object($notification)) {
                         $message .= ' (' . $notification->Severity . ') ' . $notification->Message;
                     } else {
                         $message .= ' ' . $notification;
                     }
                 }
                 $messageStack->add(SHIPPING_FEDEX_V7_TRACK_ERROR . $message, 'error');
                 return false;
             }
         } catch (SoapFault $exception) {
             //echo 'Error Request <pre>' . htmlspecialchars($client->__getLastRequest()) . '</pre>';
             //echo 'Error Response <pre>' . htmlspecialchars($client->__getLastResponse()) . '</pre>';
             $message = " ({$exception->faultcode}) {$exception->faultstring}";
             $messageStack->add(SHIPPING_FEDEX_CURL_ERROR . $message, 'error');
             return false;
         }
         $shipments->MoveNext();
     }
     return true;
 }