UPS API Endpoints ug Sample PHP Test Code

ups api endpoints php test code address validation

Nagtrabaho kami sa usa ka WooCommerce kliyente karon kang kinsa UPS nga pagpadala pag-validate sa adres ug mga kalkulasyon sa gasto sa pagpadala mihunong sa pagtrabaho. Ang una nga isyu nga among nahibal-an mao ang UPS shipping plugin nga naa kanila wala na sa panahon ug ang kinauyokan nga domain alang sa kompanya nga nagpalambo niini adunay malware… dili kana usa ka maayong timailhan. Busa, mipalit kami sa WooCommerce UPS plugin tungod kay kini gisuportahan pag-ayo sa mga nag-develop sa Woocommerce.

Uban sa site nga wala nag-validate sa mga adres o nag-integrate sa pagpadala, ang among unang lakang mao ang pag-verify nga ang UPS application programming interface (API) naa na ug operational. Ang UPS adunay nindot nga site alang sa pagsusi sa kahimtang sa API niini.

Tungod kay ang API dili makita nga nahimo, ang among sunod nga lakang mao ang pag-debug sa isyu sa lokal. Makapainteres, wala’y plugin nga adunay bisan unsang pag-log o pagsulay aron mahibal-an kung ang panagsama sa pagpadala sa UPS tinuod nga nagtrabaho. Bisan ang setting sa pag-debug wala maghatag bisan unsang feedback, ni ang among mga file sa log. Mao nga, aron masulayan ang API, kinahanglan nako nga magprograma usa ka script aron masulayan gyud ang API.

Gi-download nako ang UPS API Developer Kit… nga naglakip sa mga sampol sa code… ug naglibog gihapon. Limitado ang dokumentasyon, ang mga endpoint para sa API wala gani gilista, ug ang mga sample sa code dili maayo nga dokumentado.

I-download ang UPS API Developer Kit

Ingon usa ka sangputanan, kinahanglan nako nga maghimo pipila nga pagkalot… ang una mao ang pag-ila sa mga endpoint alang sa ilang API. Nakit-an nako ang mga dokumentado nga pagsulay sa katapusan, gisulat ang akong code, ug gisulayan kini… nga wala’y kalampusan. Usa ka gamay nga pagkalot ug akong nahibal-an nga ang mga endpoint sa pagsulay wala’y kapuslanan. Ug.

Mga Endpoint sa UPS API

Nakapangita ko og thread sa usa ka development site nga naglista sa Mga endpoint sa produksiyon sa 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

Ang labing sayon ​​nga pagsulay mao ang Pagpamatuod sa Address (bold sa ibabaw) endpoint mao nga akong gigamit ang code nga gihatag sa pagsulat sa usa ka gamay nga PHP script nga mipasa sa adres ug mitubag kung kini malampuson o dili. Ania ang code kung gusto nimo gamiton:

UPS API PHP Test File alang sa Address Validation

Ania ang updated nga PHP script para sa pagsulay sa 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>

Kini nga script labing menos magpakita kanimo kung ang imong mga kredensyal nagtrabaho o wala sa katapusan nga punto sa Pagpamatuod sa Address sa UPS API. Nakaamgo ko nga ang PHP methodology (fopen) nga i-post sa ilang API medyo tigulang na niini nga pananglitan sa ibabaw... pero gusto lang nako nga magamit ang ilang test code.

pagbutyag: Martech Zone naggamit niini WooCommerce affiliate links niini nga artikulo.