Punts finals de l'API d'UPS i codi de prova PHP de mostra

ups api endpoints php validació de l'adreça del codi de prova

Estem treballant amb un WooCommerce client ara mateix de qui Enviament UPS la validació de l'adreça i els càlculs de costos d'enviament van deixar de funcionar. El primer problema que vam identificar va ser que el connector d'enviament d'UPS que tenien estava obsolet i el domini bàsic de l'empresa que el va desenvolupar tenia programari maliciós... això mai és un bon senyal. Així doncs, vam comprar el Complement de WooCommerce UPS ja que compta amb el suport dels desenvolupadors de Woocommerce.

Com que el lloc no validava adreces ni integrava l'enviament, el nostre primer pas va ser verificar que la interfície de programació d'aplicacions d'UPS (Programes) estava en funcionament i en funcionament. UPS té un lloc agradable per comprovar-ho estat de la seva API.

Com que l'API semblava no estar feta, el nostre següent pas va ser depurar el problema localment. Curiosament, cap dels connectors va tenir cap registre ni prova per veure si la integració d'enviament d'UPS funcionava realment. Fins i tot la configuració de depuració no va proporcionar cap comentari, ni els nostres fitxers de registre. Per tant, per provar l'API, vaig haver de programar un script per provar l'API.

He descarregat el Kit de desenvolupador d'API d'UPS... que incloïa mostres de codi... i estava confós com sempre. La documentació és limitada, els punts finals de l'API ni tan sols es van enumerar i les mostres de codi no estan ben documentades.

Baixeu el kit per a desenvolupadors de l'API d'UPS

Com a resultat, vaig haver de fer una mica de recerca... el primer va ser identificar els punts finals per a la seva API. Vaig trobar punts finals de prova documentats, vaig escriure el meu codi i el vaig provar... sense èxit. Una mica més d'excavació i vaig descobrir que els punts finals de prova eren bàsicament inútils. Uf.

Punts finals de l'API d'UPS

Vaig poder trobar un fil en un lloc de desenvolupament que enumerava Punts finals de producció de l'API d'UPS:

  • 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

El més fàcil de provar és el Validació d'adreça (negreta a dalt), de manera que vaig utilitzar el codi proporcionat per escriure un petit script PHP que va passar l'adreça i va respondre si va tenir èxit o no. Aquí teniu el codi en cas que vulgueu utilitzar-lo:

Fitxer de prova PHP de l'API UPS per a la validació d'adreces

Aquí teniu l'script PHP actualitzat per provar el punt final de l'API UPS de validació d'adreces:

<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>

Aquest script us mostrarà almenys si les vostres credencials treballen o no amb el punt final de validació d'adreces de l'API d'UPS. M'adono que la metodologia PHP (fopen) per publicar a la seva API és una mica antiga en aquest exemple anterior... però només volia que el seu codi de prova funcionés.

Divulgació: Martech Zone està utilitzant el seu WooCommerce enllaços d'afiliació en aquest article.