UPS API Einpunten en Sample PHP Test Code

ups api einpunten php test koade adres falidaasje

Wy wurkje mei a WooCommerce klant op it stuit waans UPS skipfeart adres falidaasje en ferstjoerkosten berekkeningen stoppe wurkjen. It earste probleem dat wy identifisearren wie dat de UPS-ferstjoerplugin dy't se hiene wie ferâldere en it kearndomein foar it bedriuw dat it ûntwikkele hie malware ... dat is noait in goed teken. Dat, wy kochten de WooCommerce UPS plugin om't it goed wurdt stipe troch de ûntwikkelders fan Woocommerce.

Mei't de side gjin adressen validearret of ferstjoering yntegreart, wie ús earste stap om te ferifiearjen dat de UPS-applikaasje-programmearring-ynterface (API) wie op en operasjoneel. UPS hat in moaie side foar in kontrolearjen de status fan syn API.

Om't de API net dien dien wie, wie ús folgjende stap om it probleem lokaal te debuggen. Ynteressant genôch hie noch plugin gjin logging noch testen om te sjen oft de UPS-ferstjoeringyntegraasje eins wurke. Sels de debug-ynstelling joech gjin feedback, en ús logbestannen ek net. Dat, om de API te testen, moast ik in skript programmearje om de API eins te testen.

Ik ha de UPS API Developer Kit... dy't koade-samples omfette ... en wie yn 'e war as altyd. De dokumintaasje is beheind, de einpunten foar de API waarden net iens fermeld, en de koade-samples binne net goed dokumintearre.

Download de UPS API Developer Kit

As resultaat moast ik wat graven dwaan ... de earste wie om einpunten te identifisearjen foar har API. Ik fûn dokuminteare testeinpunten, skreau myn koade, en hifke it ... sûnder súkses. In bytsje mear graven en ik fûn út dat de testen einpunten wiene yn prinsipe nutteloos. Ugh.

UPS API einpunten

Ik wie by steat om te finen in tried op in ûntwikkeling site dy't listed de UPS API produksje einpunten:

  • 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

De maklikste in test is de Adres Validaasje (fett boppe) einpunt, sadat ik de levere koade brûkte om in lyts PHP-skript te skriuwen dat it adres trochjûn en antwurde mei it al dan net suksesfol of mislearre. Hjir is de koade yn it gefal dat jo it brûke wolle:

UPS API PHP-testtriem foar adresvalidaasje

Hjir is it bywurke PHP-skript foar it testen fan it UPS API-einpunt foar adresvalidaasje:

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

Dit skript sil jo op syn minst sjen litte oft jo bewiisbrieven wurkje mei it UPS API Address Validation einpunt. Ik realisearje dat de PHP-metoade (fopen) om te posten nei har API is in bytsje âld yn dit foarbyld hjirboppe ... mar ik woe gewoan har testkoade wurkjen krije.

Disclosure: Martech Zone brûkt har WooCommerce affiliate links yn dit artikel.