UPS API Finpunktoj kaj Specimena PHP Testa Kodo

ups api finpunktoj php testkodo adreso validumado

Ni laboras kun a WooCommerce kliento ĝuste nun kies UPS-sendo adresvalidigo kaj sendaj kostokalkuloj ĉesis funkcii. La unua afero, kiun ni identigis, estis la ekspedicia kromprogramo de UPS, kiun ili havis, estis malmoderna kaj la kerna domajno por la firmao, kiu disvolvis ĝin, havis malware... tio neniam estas bona signo. Do, ni aĉetis la WooCommerce UPS-kromaĵo ĉar ĝi estas bone subtenata de la programistoj de Woocommerce.

Kun la retejo ne validanta adresojn nek integrante sendadon, nia unua paŝo estis kontroli, ke la interfaco de programado de la aplikaĵo de UPS (API) estis supren kaj funkcianta. UPS ja havas belan retejon por kontroli la statuso de ĝia API.

Ĉar la API ne ŝajnis esti farita, nia sekva paŝo estis sencimigi la problemon loke. Kurioze, nek kromaĵo havis ajnan protokolon nek testadon por vidi ĉu la UPS-senda integriĝo efektive funkciis. Eĉ la sencimiga agordo ne provizis ajnan reagon, nek niaj protokolaj dosieroj. Do, por testi la API, mi devis programi skripton por vere testi la API.

Mi elŝutis la UPS API Ellaboranto Kit… kiu inkludis kodspecimenojn… kaj estis konfuzita kiel ĉiam. La dokumentaro estas limigita, la finpunktoj por la API eĉ ne estis listigitaj, kaj la kodaj specimenoj ne estas bone dokumentitaj.

Elŝutu la UPS API-Ellaboranto-Kion

Kiel rezulto, mi devis fari iom da fosado... la unua estis identigi finpunktojn por ilia API. Mi trovis dokumentitajn testajn finpunktojn, skribis mian kodon kaj testis ĝin... sen sukceso. Iom pli da fosado kaj mi eksciis, ke la testaj finpunktoj estis esence senutilaj. Uf.

UPS API Finpunktoj

Mi povis trovi fadenon en evoluejo kiu listigis la UPS API-produktadfinpunktoj:

  • 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

La plej facila por provi estas la Valido de Adreso (grasa supre) finpunkto do mi uzis la provizitan kodon por skribi malgrandan PHP-skripton, kiu pasis la adreson kaj respondis ĉu ĝi sukcesis aŭ ne malsukcesis. Jen la kodo se vi ŝatus uzi ĝin:

UPS API PHP Testa Dosiero por Adresvalidado

Jen la ĝisdatigita PHP-skripto por testi la Address Validation UPS API Endpoint:

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

Ĉi tiu skripto almenaŭ montros al vi ĉu aŭ ne vi akreditaĵoj funkcias kun la finpunkto de UPS API Address Validation. Mi rimarkas, ke la PHP-metodaro (fopen) por afiŝi al ilia API estas iom aĝa en ĉi tiu supra ekzemplo... sed mi nur volis ke ilia testa kodo funkcias.

Malkaŝo: Mi uzas mian WooCommerce filiaj ligiloj en ĉi tiu artikolo.