Končne točke API UPS in vzorčna testna koda PHP
Sodelujemo z a WooCommerce stranka trenutno čigava UPS pošiljanje potrditev naslova in izračuni stroškov pošiljanja so prenehali delovati. Prva težava, ki smo jo odkrili, je bil vtičnik za pošiljanje UPS, ki so ga imeli, zastarel, osrednja domena podjetja, ki ga je razvilo, pa je imela zlonamerno programsko opremo ... to ni nikoli dober znak. Torej smo kupili Vtičnik WooCommerce UPS saj ga razvijalci Woocommerce dobro podpirajo.
Ker spletno mesto ne potrjuje naslovov niti ne vključuje pošiljanja, je bil naš prvi korak preveriti, ali je programski vmesnik aplikacije UPS (API) je bil pripravljen in deluje. UPS ima lepo spletno mesto za preverjanje status njenega API-ja.
Ker se zdi, da API ni bil narejen, je bil naš naslednji korak lokalno odpravljanje napak. Zanimivo je, da noben vtičnik ni imel beleženja ali testiranja, da bi ugotovil, ali integracija pošiljanja UPS dejansko deluje. Tudi nastavitev za odpravljanje napak ni zagotovila nobenih povratnih informacij, niti naše datoteke dnevnika. Torej, da bi preizkusil API, sem moral programirati skript za dejansko testiranje API-ja.
Naložil sem Komplet za razvijalce UPS API... ki je vključeval vzorce kod ... in je bil zmeden kot vedno. Dokumentacija je omejena, končne točke za API niso bile niti navedene, vzorci kode pa niso dobro dokumentirani.
Prenesite UPS API Developer Kit
Kot rezultat, sem moral nekaj poiskati ... prvo je bilo identificirati končne točke za njihov API. Našel sem dokumentirane končne točke testiranja, napisal svojo kodo in jo preizkusil ... brez uspeha. Še malo kopanje in ugotovil sem, da so bile testne končne točke v bistvu neuporabne. uf.
Končne točke API UPS
Na razvojnem spletnem mestu sem lahko našel nit, ki je navedla Končne točke proizvodnje 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
Najlažji za testiranje je Preverjanje naslova (krepko zgoraj) končno točko, zato sem s priloženo kodo napisal majhen skript PHP, ki je posredoval naslov in odgovoril, ali je bil uspešen ali neuspešen. Tukaj je koda, če jo želite uporabiti:
UPS API PHP testna datoteka za preverjanje naslova
Tukaj je posodobljen skript PHP za testiranje končne točke API-ja UPS za preverjanje naslova:
<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>
Ta skript vam bo vsaj pokazal, ali vaše poverilnice delujejo s končno točko za preverjanje naslova API UPS. Zavedam se, da je metodologija PHP (fopen) za objavo v njihovem API-ju nekoliko zastarela v tem zgornjem primeru ... vendar sem želel samo, da njihova testna koda deluje.
Razkritje: Martech Zone uporablja svoje WooCommerce partnerske povezave v tem članku.