UPS API lõpp-punktid ja näidis PHP testkood

ups api lõpp-punktide php testkoodi aadressi valideerimine

Me töötame koos a WooCommerce klient, kelle UPS-i saatmine aadressi kinnitamine ja saatmiskulude arvutused lakkasid töötamast. Esimene probleem, mille tuvastasime, oli UPS-i tarnimisplugin, mis neil oli, oli aegunud ja selle välja töötanud ettevõtte põhidomeen sisaldas pahavara… see pole kunagi hea märk. Niisiis, ostsime WooCommerce UPS-i pistikprogramm kuna seda toetavad hästi Woocommerce'i arendajad.

Kuna sait ei kinnitanud aadresse ega integreerinud saatmist, oli meie esimene samm kontrollida, kas UPS-i rakenduste programmeerimisliides (API) oli üleval ja töökorras. UPS-il on tore sait selle kontrollimiseks selle API olek.

Kuna API ei paistnud olevat valmis, oli meie järgmiseks sammuks probleemi lokaalne silumine. Huvitaval kombel ei olnud kummalgi pistikprogrammil logimist ega testimist, et näha, kas UPS-i tarneintegratsioon tegelikult töötas. Isegi silumisseade ei andnud tagasisidet ega ka meie logifailid. Seega pidin API testimiseks programmeerima skripti API testimiseks.

Ma alla laadinud UPS API arendaja komplekt… mis sisaldas koodinäidiseid… ja oli segaduses nagu alati. Dokumentatsioon on piiratud, API lõpp-punkte polnud isegi loetletud ja koodinäidised pole hästi dokumenteeritud.

Laadige alla UPS API arendajakomplekt

Selle tulemusena pidin natuke kaevama… esimene oli nende API lõpp-punktide tuvastamine. Leidsin dokumenteeritud testimise lõpp-punktid, kirjutasin oma koodi ja testisin seda … edutult. Veel veidi kaevamist ja sain teada, et testimise lõpp-punktid olid põhimõtteliselt kasutud. Uhh.

UPS API lõpp-punktid

Leidsin arendussaidilt lõime, kus on loetletud UPS API tootmise lõpp-punktid:

  • 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

Kõige lihtsam on testida Aadressi kinnitamine (paksus kirjas ülal) lõpp-punkti, nii et kasutasin pakutavat koodi väikese PHP-skripti kirjutamiseks, mis edastas aadressi ja vastas, kas see õnnestus või ebaõnnestus. Siin on kood juhuks, kui soovite seda kasutada:

UPS API PHP testfail aadressi kinnitamiseks

Siin on värskendatud PHP skript aadressi kinnitamise UPS API lõpp-punkti testimiseks:

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

See skript näitab teile vähemalt seda, kas teie volikirjad töötavad UPS API aadressi kinnitamise lõpp-punktiga või mitte. Ma saan aru, et nende API-le postitamiseks mõeldud PHP-metoodika (fopen) on selles ülaltoodud näites pisut vananenud... aga ma tahtsin lihtsalt nende testkoodi tööle saada.

Avalikustamine: ma kasutan oma WooCommerce Sidusettevõtte lingid selles artiklis.