Канчатковыя кропкі API UPS і ўзор тэставага кода PHP

Праверка адраса тэставага кода php канчатковых кропак UPS

Мы працуем з а WooCommerce кліент прама цяпер чый Дастаўка UPS праверка адрасы і разлік кошту дастаўкі перасталі працаваць. Першай праблемай, якую мы вызначылі, быў убудова для дастаўкі UPS, які ў іх быў састарэў, а асноўны дамен для кампаніі, якая яго распрацавала, меў шкоднаснае праграмнае забеспячэнне... гэта ніколі не добры знак. Такім чынам, мы набылі Убудова WooCommerce UPS так як ён добра падтрымліваецца распрацоўшчыкамі Woocommerce.

Паколькі сайт не правярае адрасы і не інтэгруе дастаўку, нашым першым крокам было пераканацца, што праграмны інтэрфейс UPS (API) быў адкрыты і працаваў. У UPS сапраўды ёсць добры сайт для праверкі статус яго API.

Паколькі API, здаецца, не быў выкананы, нашым наступным крокам было лакальна адладзіць праблему. Цікава, што ні ў плагіна не было рэгістрацый або тэставання, каб убачыць, ці працуе інтэграцыя дастаўкі UPS. Нават налада адладкі не давала ніякай зваротнай сувязі, як і нашы файлы журналаў. Такім чынам, каб праверыць API, мне прыйшлося запраграмаваць скрыпт, каб сапраўды праверыць API.

Я запампаваў Набор распрацоўшчыкаў API UPS... які ўключаў узоры кода ... і быў збіты з панталыку, як заўсёды. Дакументацыя абмежаваная, канчатковыя кропкі для API нават не былі пералічаны, а ўзоры кода дрэнна дакументаваныя.

Спампуйце набор распрацоўшчыкаў API UPS

У выніку мне прыйшлося пакопацца... першым было вызначыць канчатковыя кропкі для іх API. Я знайшоў задакументаваныя канчатковыя кропкі тэсціравання, напісаў свой код і пратэставаў яго ... без поспеху. Яшчэ крыху пакапаўшыся, і я даведаўся, што канчатковыя кропкі тэставання ў асноўным бескарысныя. Цьфу.

Канчатковыя кропкі API UPS

Мне ўдалося знайсці тэму на сайце распрацоўшчыкаў, у якой пералічаны Канчатковыя кропкі вытворчасці 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

Самы просты для праверкі - гэта Праверка адрасы (вышэй тлустым шрыфтам) канчатковай кропкі, таму я выкарыстаў прадстаўлены код, каб напісаць невялікі PHP-скрыпт, які перадаў адрас і адказваў, быў ён паспяховым ці няўдалым. Вось код у выпадку, калі вы хочаце яго выкарыстоўваць:

Тэставы файл UPS API PHP для праверкі адрасоў

Вось абноўлены PHP-скрыпт для тэставання канчатковай кропкі API UPS праверкі адрасоў:

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

Гэты скрыпт, па меншай меры, пакажа вам, ці працуеце вы ўліковыя даныя з канчатковай кропкай праверкі адрасоў UPS API. Я разумею, што метадалогія PHP (fopen) для публікацыі ў іх API трохі састарэла ў гэтым прыкладзе вышэй... але я проста хацеў, каб іх тэставы код працаваў.

Раскрыццё інфармацыі: я выкарыстоўваю свой WooCommerce партнёрскія спасылкі ў гэтым артыкуле.