Τελικά σημεία UPS API και δείγμα κώδικα δοκιμής PHP

ups api endpoints php δοκιμής κώδικας επικύρωση διεύθυνσης

Δουλεύουμε με ένα WooCommerce πελάτη αυτή τη στιγμή του οποίου Αποστολή UPS Η επικύρωση διεύθυνσης και οι υπολογισμοί του κόστους αποστολής σταμάτησαν να λειτουργούν. Το πρώτο πρόβλημα που εντοπίσαμε ήταν η προσθήκη αποστολής UPS που είχαν ήταν ξεπερασμένη και ο βασικός τομέας για την εταιρεία που το ανέπτυξε είχε κακόβουλο λογισμικό… αυτό δεν είναι ποτέ καλό σημάδι. Έτσι, αγοράσαμε το Πρόσθετο WooCommerce UPS αφού υποστηρίζεται καλά από τους προγραμματιστές του Woocommerce.

Καθώς ο ιστότοπος δεν επικυρώνει διευθύνσεις ούτε ενσωματώνει αποστολή, το πρώτο μας βήμα ήταν να επαληθεύσουμε ότι η διεπαφή προγραμματισμού της εφαρμογής UPS (API) ήταν σε λειτουργία και λειτουργούσε. Η UPS έχει μια ωραία τοποθεσία για τον έλεγχο κατάσταση του API του.

Δεδομένου ότι το API δεν φαινόταν να έχει ολοκληρωθεί, το επόμενο βήμα μας ήταν να διορθώσουμε το πρόβλημα τοπικά. Είναι αρκετά ενδιαφέρον ότι κανένα πρόσθετο δεν είχε καταγραφή ή δοκιμή για να δει εάν η ενσωμάτωση αποστολής UPS λειτούργησε πράγματι. Ακόμη και η ρύθμιση εντοπισμού σφαλμάτων δεν παρείχε σχόλια, ούτε και τα αρχεία καταγραφής μας. Έτσι, για να δοκιμάσω το API, έπρεπε να προγραμματίσω ένα σενάριο για να δοκιμάσω πραγματικά το API.

Έχω κατεβάσει το UPS API Developer Kit… το οποίο περιελάμβανε δείγματα κώδικα… και ήταν μπερδεμένο όπως πάντα. Η τεκμηρίωση είναι περιορισμένη, τα τελικά σημεία για το API δεν αναφέρονται καν και τα δείγματα κώδικα δεν είναι καλά τεκμηριωμένα.

Κατεβάστε το UPS API Developer Kit

Ως αποτέλεσμα, έπρεπε να ψάξω… το πρώτο ήταν να προσδιορίσω τα τελικά σημεία για το API τους. Βρήκα τεκμηριωμένα τελικά σημεία δοκιμών, έγραψα τον κώδικά μου και τον δοκίμασα… χωρίς επιτυχία. Λίγο ακόμα σκάψιμο και ανακάλυψα ότι τα τελικά σημεία δοκιμών ήταν βασικά άχρηστα. Ουφ.

Τελικά σημεία UPS API

Κατάφερα να βρω ένα νήμα σε έναν ιστότοπο ανάπτυξης που περιείχε το Καταληκτικά σημεία παραγωγής UPS API:

  • https://onlinetools.ups.com/ups.app/xml/TimeInTransit
  • https://onlinetools.ups.com/ups.app/xml/License
  • https://onlinetools.ups.com/ups.app/xml/QVEvents
  • https://onlinetools.ups.com/ups.app/xml/Register
  • https://onlinetools.ups.com/ups.app/xml/AV
  • https://onlinetools.ups.com/ups.app/xml/ShipAccept
  • https://onlinetools.ups.com/ups.app/xml/Void
  • https://onlinetools.ups.com/ups.app/xml/XAV
  • https://onlinetools.ups.com/ups.app/xml/Track
  • https://onlinetools.ups.com/ups.app/xml/Rate
  • https://onlinetools.ups.com/ups.app/xml/ShipConfirm
  • https://onlinetools.ups.com/ups.app/xml/LabelRecovery

Το πιο εύκολο για δοκιμή είναι το Επικύρωση διεύθυνσης (με έντονη γραφή παραπάνω) τελικό σημείο, επομένως χρησιμοποίησα τον κώδικα που παρέχεται για να γράψω ένα μικρό σενάριο PHP που περνούσε τη διεύθυνση και απαντούσε αν ήταν επιτυχής ή αποτυχία. Ακολουθεί ο κωδικός σε περίπτωση που θέλετε να τον χρησιμοποιήσετε:

Αρχείο δοκιμής UPS API PHP για επικύρωση διεύθυνσης

Ακολουθεί το ενημερωμένο σενάριο PHP για τη δοκιμή του τέλους σημείου επικύρωσης διεύθυνσης UPS API:

<html>
<head>UPS Address Validation Test</head>
<body>Response: <?php

// Configuration
$accessLicenseNumber = "Insert Your API Key";
$userId = "Insert Your User ID";
$password = "Insert Your Password";

$endpointurl = 'https://onlinetools.ups.com/ups.app/xml/AV';

try {
	
	// Create AccessRequest XMl
	$accessRequestXML = new SimpleXMLElement ( "<AccessRequest></AccessRequest>" );
	$accessRequestXML->addChild ( "AccessLicenseNumber", $accessLicenseNumber );
	$accessRequestXML->addChild ( "UserId", $userId );
	$accessRequestXML->addChild ( "Password", $password );
	
	// Create AddressValidationRequest XMl
	$avRequestXML = new SimpleXMLElement ( "<AddressValidationRequest ></AddressValidationRequest >" );
	$request = $avRequestXML->addChild ( 'Request' );
	$request->addChild ( "RequestAction", "AV" );
	
	$address = $avRequestXML->addChild ( 'Address' );
	$address->addChild ( "City", "ALPHARETTA" );
	$address->addChild ( "PostalCode", "300053778" );
	$requestXML = $accessRequestXML->asXML () . $avRequestXML->asXML ();
	
	$form = array (
			'http' => array (
					'method' => 'POST',
					'header' => 'Content-type: application/x-www-form-urlencoded',
					'content' => "$requestXML" 
			) 
	);
	
	// get request
	$request = stream_context_create ( $form );
	$browser = fopen ( $endpointurl, 'rb', false, $request );
	if (! $browser) {
		throw new Exception ( "Connection failed." );
	}
	
	// get response
	$response = stream_get_contents ( $browser );
	fclose ( $browser );
	
	if ($response == false) {
		throw new Exception ( "Bad data." );
	} else {
		
		// get response status
		$resp = new SimpleXMLElement ( $response );
		echo $resp->Response->ResponseStatusDescription . "\n";
	}
	
} catch ( Exception $ex ) {
	echo $ex;
}

?>
</body>
</html>

Αυτό το σενάριο θα σας δείξει τουλάχιστον εάν τα διαπιστευτήρια σας λειτουργούν ή όχι με το τελικό σημείο επικύρωσης διεύθυνσης API της UPS. Αντιλαμβάνομαι ότι η μεθοδολογία PHP (fopen) για τη δημοσίευση στο API τους είναι λίγο παλιό σε αυτό το παραπάνω παράδειγμα… αλλά ήθελα απλώς να λειτουργήσει ο δοκιμαστικός κώδικας.

Αποκάλυψη: Χρησιμοποιώ το δικό μου WooCommerce συνδέσμους θυγατρικών σε αυτό το άρθρο.