E-trgovina in trgovina na drobno

Končne točke API UPS in vzorčna testna koda PHP

Sodelujemo z a WooCommerce stranka trenutno čigava UPS pošiljanje potrditev naslova in izračuni stroškov pošiljanja so prenehali delovati. Prva težava, ki smo jo odkrili, je bil vtičnik za pošiljanje UPS, ki so ga imeli, zastarel, osrednja domena podjetja, ki ga je razvilo, pa je imela zlonamerno programsko opremo ... to ni nikoli dober znak. Torej smo kupili Vtičnik WooCommerce UPS saj ga razvijalci Woocommerce dobro podpirajo.

Ker spletno mesto ne potrjuje naslovov niti ne vključuje pošiljanja, je bil naš prvi korak preveriti, ali je programski vmesnik aplikacije UPS (API) je bil pripravljen in deluje. UPS ima lepo spletno mesto za preverjanje status njenega API-ja.

Ker se zdi, da API ni bil narejen, je bil naš naslednji korak lokalno odpravljanje napak. Zanimivo je, da noben vtičnik ni imel beleženja ali testiranja, da bi ugotovil, ali integracija pošiljanja UPS dejansko deluje. Tudi nastavitev za odpravljanje napak ni zagotovila nobenih povratnih informacij, niti naše datoteke dnevnika. Torej, da bi preizkusil API, sem moral programirati skript za dejansko testiranje API-ja.

Naložil sem Komplet za razvijalce UPS API... ki je vključeval vzorce kod ... in je bil zmeden kot vedno. Dokumentacija je omejena, končne točke za API niso bile niti navedene, vzorci kode pa niso dobro dokumentirani.

Prenesite UPS API Developer Kit

Kot rezultat, sem moral nekaj poiskati ... prvo je bilo identificirati končne točke za njihov API. Našel sem dokumentirane končne točke testiranja, napisal svojo kodo in jo preizkusil ... brez uspeha. Še malo kopanje in ugotovil sem, da so bile testne končne točke v bistvu neuporabne. uf.

Končne točke API UPS

Na razvojnem spletnem mestu sem lahko našel nit, ki je navedla Končne točke proizvodnje 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

Najlažji za testiranje je Preverjanje naslova (krepko zgoraj) končno točko, zato sem s priloženo kodo napisal majhen skript PHP, ki je posredoval naslov in odgovoril, ali je bil uspešen ali neuspešen. Tukaj je koda, če jo želite uporabiti:

UPS API PHP testna datoteka za preverjanje naslova

Tukaj je posodobljen skript PHP za testiranje končne točke API-ja UPS za preverjanje naslova:

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

Ta skript vam bo vsaj pokazal, ali vaše poverilnice delujejo s končno točko za preverjanje naslova API UPS. Zavedam se, da je metodologija PHP (fopen) za objavo v njihovem API-ju nekoliko zastarela v tem zgornjem primeru ... vendar sem želel samo, da njihova testna koda deluje.

Razkritje: Martech Zone uporablja svoje WooCommerce partnerske povezave v tem članku.

Douglas Karr

Douglas Karr je CMO of Odpri INSIGHTS in ustanovitelj Martech Zone. Douglas je pomagal na desetine uspešnih startupov MarTech, pomagal je pri skrbnem pregledu več kot 5 milijard USD pri prevzemih in naložbah Martecha ter še naprej pomaga podjetjem pri izvajanju in avtomatizaciji njihovih prodajnih in trženjskih strategij. Douglas je mednarodno priznan strokovnjak in govorec za digitalno transformacijo in MarTech. Douglas je tudi objavljen avtor Dummie's guide in knjige o poslovnem vodenju.

Povezani članki

Nazaj na vrh
Zapri

Zaznan Adblock

Martech Zone vam lahko zagotovi to vsebino brezplačno, ker naše spletno mesto monetiziramo s prihodki od oglasov, pridruženimi povezavami in sponzorstvi. Hvaležni bi bili, če bi med ogledom našega spletnega mesta odstranili zaviralec oglasov.