Fermer

avril 13, 2022

Points de terminaison de l'API UPS et exemple de code de test PHP


Nous travaillons avec unWooCommerceclient en ce moment dontExpédition UPS la validation des adresses et les calculs des frais d'expédition ont cessé de fonctionner. Le premier problème que nous avons identifié était que le plug-in d'expédition UPS qu'ils avaient était obsolète et que le domaine principal de l'entreprise qui l'avait développé contenait des logiciels malveillants… ce n'est jamais bon signe. Donc, nous avons acheté lePlug-in WooCommerce UPScar il est bien pris en charge par les développeurs de Woocommerce.

Le site ne validant pas les adresses ni n'intégrant l'expédition, notre première étape a été de vérifier que l'interface de programmation de l'application UPS (API ) était en place et opérationnel. UPS a un bon site pour vérifier lestatut de son API.

Étant donné que l'API ne semblait pas terminée, notre prochaine étape consistait à déboguer le problème localement. Chose intéressante, aucun plugin n'avait de journalisation ni de test pour voir si l'intégration de l'expédition UPS fonctionnait réellement. Même le paramètre de débogage n'a fourni aucun retour, pas plus que nos fichiers journaux. Donc, afin de tester l'API, j'ai dû programmer un script pour tester réellement l'API.

j'ai téléchargé leKit de développement API UPS … qui comprenait des exemples de code… et était plus confus que jamais. La documentation est limitée, les points de terminaison de l'API n'étaient même pas répertoriés et les exemples de code ne sont pas bien documentés.

Télécharger le kit de développement de l'API UPS

En conséquence, j'ai dû faire quelques recherches… la première consistait à identifier les points de terminaison pour leur API. J'ai trouvé des points de terminaison de test documentés, j'ai écrit mon code et je l'ai testé… sans succès. En creusant un peu plus, j'ai découvert que les points de terminaison de test étaient fondamentalement inutiles. Pouah.

Points de terminaison de l'API UPS

J'ai pu trouver un fil sur un site de développement qui répertorie lesPoints de terminaison de production de l'API UPS:

  • 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

Le plus facile à tester est leValidation d'adresse (gras ci-dessus) point de terminaison, j'ai donc utilisé le code fourni pour écrire un petit script PHP qui transmettait l'adresse et répondait s'il avait réussi ou échoué. Voici le code au cas où vous voudriez l'utiliser :

Fichier de test PHP de l'API UPS pour la validation des adresses

Voici le script PHP mis à jour pour tester le point de terminaison de l'API UPS de validation d'adresse :


Test de validation d'adresse UPS
Réponse:" ); $accessRequestXML->addChild ("AccessLicenseNumber", $accessLicenseNumber ); $accessRequestXML->addChild ("UserId", $userId ); $accessRequestXML->addChild ("Password", $password ); // Créer AddressValidationRequest XMl $avRequestXML = new SimpleXMLElement ( "" ); $request = $avRequestXML->addChild ( 'Request' ); $request->addChild ( "RequestAction", "AV" ); $address = $avRequestXML->addChild ( 'Address' ); $address-> addChild ( "Ville", "ALPHARETTA" ); $address->addChild ( "Code postal", "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." ); } / / obtenir la réponse $response = stream_get_contents ( $browser ); fclose ( $browser ); if ($response == false) { lancer une nouvelle exception ("Bad data." ); } else { // obtenir le statut de la réponse $resp = new SimpleXMLElement ( $response ); echo $resp->Response->ResponseStatusDescription . "n"; } } catch ( Exception $ex ) { echo $ex; } ?>

Ce script vous montrera au moins si vos informations d'identification fonctionnent ou non avec le point de terminaison UPS API Address Validation. Je me rends compte que la méthodologie PHP (fopen) pour publier sur leur API est un peu vieillie dans cet exemple ci-dessus… mais je voulais juste que leur code de test fonctionne.

Divulgation : j'utilise monWooCommerceliens affiliés dans cet article.




Source link