Pikat përfundimtare të UPS API dhe shembulli i kodit të testit PHP
Ne jemi duke punuar me një WooCommerce klienti tani i kujt Transporti me UPS vërtetimi i adresës dhe llogaritjet e kostos së transportit nuk funksionuan. Çështja e parë që identifikuam ishte shtojca e transportit të UPS-së që ata kishin ishte e vjetëruar dhe domeni kryesor për kompaninë që e zhvilloi atë kishte malware… kjo nuk është kurrë një shenjë e mirë. Pra, ne kemi blerë Shtojca WooCommerce UPS pasi mbështetet mirë nga zhvilluesit e Woocommerce.
Me faktin se siti nuk vërteton adresat dhe nuk integron transportin, hapi ynë i parë ishte të verifikonim që ndërfaqja e programimit të aplikacionit UPS (API) ishte ngritur dhe funksionale. UPS ka një faqe të bukur për të kontrolluar statusi i API-së së tij.
Meqenëse API nuk dukej se ishte kryer, hapi ynë tjetër ishte korrigjimi i problemit në nivel lokal. Mjaft interesante, as plugin-i nuk kishte asnjë regjistrim apo testim për të parë nëse integrimi i transportit të UPS-së funksionoi vërtet. Edhe cilësimi i korrigjimit nuk dha asnjë reagim, as skedarët tanë të regjistrit. Pra, për të testuar API-në, më duhej të programoja një skript për të testuar në të vërtetë API-në.
Kam shkarkuar Kompleti zhvillues i UPS API… i cili përfshinte mostra kodi… dhe ishte i hutuar si kurrë më parë. Dokumentacioni është i kufizuar, pikat përfundimtare për API nuk janë renditur as dhe mostrat e kodit nuk janë të dokumentuara mirë.
Shkarkoni Kompletin e Zhvilluesit të UPS API
Si rezultat, më duhej të bëja disa gërmime… e para ishte të identifikoja pikat përfundimtare për API-në e tyre. Gjeta pikat përfundimtare të testimit të dokumentuara, shkrova kodin tim dhe e testova… pa sukses. Pak më shumë duke gërmuar dhe kuptova se pikat përfundimtare të testimit ishin në thelb të padobishme. Uh.
Pikat e fundit të UPS API
Unë isha në gjendje të gjeja një temë në një faqe zhvillimi që listonte Pikat përfundimtare të prodhimit të 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
Më e lehtë për t'u testuar është Vleresimi i adreses (me shkronja të zeza sipër) pikën fundore, kështu që përdora kodin e dhënë për të shkruar një skript të vogël PHP që kalonte adresën dhe u përgjigj nëse ishte apo jo i suksesshëm apo dështuar. Këtu është kodi në rast se dëshironi ta përdorni:
Skedari testues i UPS API PHP për vërtetimin e adresës
Këtu është skripti i përditësuar PHP për testimin e pikës përfundimtare të UPS API të Vlefshmërisë së Adresave:
<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>
Ky skript të paktën do t'ju tregojë nëse kredencialet po punojnë apo jo me pikën përfundimtare të Vlefshmërisë së Adresës së UPS API. E kuptoj që metodologjia PHP (fopen) për të postuar në API-në e tyre është pak e vjetëruar në këtë shembull më lart… por thjesht doja që kodi i tyre i testimit të funksiononte.
Disclosure: Martech Zone po e përdor atë WooCommerce lidhjet e filialeve në këtë artikull.