Крайни точки на UPS API и примерен тестов код на PHP
Ние работим с а WooCommerce клиент в момента чий UPS доставка валидирането на адреса и изчисленията на разходите за доставка спряха да работят. Първият проблем, който идентифицирахме, беше UPS приставката за доставка, която имаха, беше остаряла и основният домейн за компанията, която го е разработила, имаше зловреден софтуер... това никога не е добър знак. И така, закупихме WooCommerce UPS плъгин тъй като е добре поддържан от разработчиците на Woocommerce.
Тъй като сайтът не потвърждава адресите, нито интегрира доставката, първата ни стъпка беше да проверим дали интерфейсът за програмиране на приложението UPS (API) беше готов и работеше. UPS има хубав сайт за проверка състоянието на неговия API.
Тъй като API не изглеждаше направен, следващата ни стъпка беше да отстраним проблема локално. Интересното е, че нито един плъгин нямаше никакво регистриране или тестване, за да види дали интеграцията за доставка на UPS действително работи. Дори настройката за отстраняване на грешки не предостави обратна връзка, нито нашите регистрационни файлове. Така че, за да тествам API, трябваше да програмирам скрипт, за да тества API.
Изтеглих Комплект за разработчици на UPS API… който включваше примерни кодове… и беше объркан както винаги. Документацията е ограничена, крайните точки за API дори не са изброени, а примерните кодове не са добре документирани.
Изтеглете комплекта за разработчици на UPS API
В резултат на това трябваше да направя малко копаене... първото беше да идентифицирам крайни точки за техния API. Намерих документирани крайни точки за тестване, написах моя код и го тествах... без успех. Още малко ровене и установих, че крайните точки на тестване са по същество безполезни. ъъъъ
Крайни точки на UPS API
Успях да намеря тема на сайт за разработка, в която бяха посочени Производствени крайни точки на 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>
Този скрипт поне ще ви покаже дали вашите идентификационни данни работят или не с крайната точка за валидиране на адрес на UPS API. Осъзнавам, че методологията на PHP (fopen) за публикуване в техния API е малко остаряла в този пример по-горе... но просто исках да накарам техния тестов код да работи.
Разкриване на информация Martech Zone използва своя WooCommerce партньорски връзки в тази статия.