Електронна комерція та роздрібна торгівля

Кінцеві точки API UPS і зразок тестового коду PHP

Ми працюємо з а 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 для тестування кінцевої точки UPS API перевірки адреси:

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

Цей сценарій принаймні покаже вам, чи працюють ви облікові дані з кінцевою точкою перевірки адреси API UPS. Я розумію, що методологія PHP (fopen) для публікації в їхній API трохи застаріла в цьому прикладі вище… але я просто хотів, щоб їхній тестовий код працював.

Розкриття інформації: Martech Zone використовує його WooCommerce партнерські посилання в цій статті.

Douglas Karr

Douglas Karr є CMO компанії OpenINSIGHTS і засновник Martech Zone. Дуглас допоміг десяткам успішних стартапів MarTech, допоміг у належній перевірці понад 5 мільярдів доларів у придбання та інвестиції Martech, і продовжує допомагати компаніям у впровадженні та автоматизації їхніх продажів і маркетингових стратегій. Дуглас — міжнародно визнаний експерт і спікер з цифрової трансформації та MarTech. Дуглас також є опублікованим автором посібника для чайників і книги про лідерство в бізнесі.

Статті по темі

Догори кнопки
близько

Виявлено блокування реклами

Martech Zone може надати вам цей вміст безкоштовно, оскільки ми монетизуємо наш сайт за рахунок доходів від реклами, партнерських посилань і спонсорства. Ми будемо вдячні, якщо ви видалите блокувальник реклами під час перегляду нашого сайту.