Maison > développement back-end > tutoriel php > PHP Master | Abstraction des API d'expédition

PHP Master | Abstraction des API d'expédition

Christopher Nolan
Libérer: 2025-02-24 10:38:10
original
702 Les gens l'ont consulté

PHP Master | Abstracting Shipping APIs

Points de base

  • Utiliser des couches d'abstraction pour intégrer plusieurs API de transport (UPS, FedEx, USPS) dans votre plate-forme de commerce électronique, fournissant une interface unifiée pour une variété d'opérations de transport.
  • Définissez d'abord le compte du fournisseur d'expédition et obtenez les clés et la documentation API nécessaires pour assurer la conformité aux directives et procédures du fournisseur d'expédition.
  • Définir et gérer les marchandises et les colis via des classes d'objets (expédition et paquet) standardisées dans le code, ce qui simplifie la gestion de différents paramètres et exigences de transport.
  • Implémentez le plug-in Shipper pour interagir avec une API d'expédition spécifique, afin que les tarifs et les balises d'expédition soient obtenus sans modifier le code d'application de base.
  • former calmement les erreurs et protéger les couches d'abstraction pour protéger les données sensibles, en garantissant que votre plate-forme de commerce électronique offre aux clients des options d'expédition fiables et sécurisées.

Votre nouveau magasin de commerce électronique personnalisé est presque terminé. La seule chose qui reste est de comprendre comment calculer les frais d'expédition du client. Vous ne voulez pas utiliser un taux forfaitaire standard pour chaque adresse, car vous savez que vous facturerez trop certains clients et, plus important encore, des frais trop faibles pour d'autres. Ne serait-il pas génial si les frais d'expédition peuvent être calculés en fonction du poids / taille et de la destination de l'article? Vous pouvez peut-être même offrir un devis précis pour la livraison de nuit! Vous avez un compte UPS et vous avez vérifié leur API, mais cela semble très compliqué. Si vous cocotez votre site Web pour utiliser des API, vous devrez faire beaucoup de travail si vous avez besoin de changer l'expéditeur. Votre cousin est un représentant des ventes pour FedEx et il jure qu'il peut obtenir de meilleurs tarifs pour vous avec FedEx. Certains de vos clients utilisent uniquement des boîtes PO, de sorte que ces articles doivent être expédiés via le bureau de poste. Que devez-vous faire? Vous avez peut-être entendu parler de l'abstraction des bases de données, une pratique qui vous permet d'utiliser de nombreuses bases de données différentes et un ensemble commun de commandes. C'est exactement ce que vous pouvez faire ici! Pour résoudre tous ces problèmes, vous pouvez séparer la tâche de transport du reste du code et construire une couche d'abstraction. Une fois terminé, peu importe que vous expédiiez votre colis via UPS, FedEx ou USPS. Les fonctions que votre application principale appellera sera exactement la même, ce qui vous facilitera la vie!

UPS en train de démarrer

Dans cet article, je me concentrerai sur l'utilisation de l'API UPS, mais en écrivant des plugins pour différents expéditeurs (comme FedEx ou USPS), vous pouvez également accéder à leurs services et les modifications du code d'application de base peuvent être ignorées compter. Afin de démarrer avec UPS, vous devez enregistrer un compte en ligne sur www.ups.com en utilisant votre numéro d'expéditeur existant. Assurez-vous de choisir un nom d'utilisateur et un mot de passe que vous êtes prêt à utiliser pendant un certain temps, car l'API nécessite à la fois pour chaque appel. Ensuite, visitez https://www.php.cn/link/ebd74b9b3bfd11deb539e4242d95078b et inscrivez-vous pour accéder à l'API UPS. Ici, vous obtiendrez votre clé API et pourrez télécharger la documentation pour différents packages API. (Remarque: il y a des problèmes connus avec cette section du site Web UPS et Chrome renvoie parfois des pages vierges. Vous devrez peut-être utiliser un navigateur différent.) N'oubliez pas que lorsque vous utilisez l'API UPS (ou l'une des API d'expédition), vous Acceptez de respecter leurs règles et procédures. Assurez-vous de les réviser et de leur obéir, surtout avant d'utiliser votre code pour les environnements de production, suivez leurs instructions. Ensuite, téléchargez ou clonez le package de couche d'abstraction d'expédition de github.com/alexfraundorf-com/ship sur github et téléchargez-le sur un serveur exécutant PHP 5.3 ou plus tard. Ouvrez le fichier include / config.php. Vous devez entrer ici les détails de votre UPS, et les noms de champ devraient être explicites. Veuillez noter que l'adresse de l'expéditeur UPS doit correspondre à l'adresse enregistrée dans le compte UPS, sinon une erreur se produira.

Définir les marchandises et les colis

Définissez maintenant un objet d'expédition. Lors de l'instanciation, il acceptera un tableau contenant les informations du récepteur, et s'il est différent des informations de l'expéditeur dans notre fichier de configuration, vous pouvez sélectionner une adresse de livraison.

// 创建一个 Shipment 对象
$shipment = new ShipShipment($shipmentData);
Copier après la connexion

Ensuite, nous avons besoin de quelques détails sur ce que nous expédions. Créons un objet de package qui accepte des tableaux de poids facultatifs, la taille du package et certaines options de base telles que la description, si la signature est requise et le montant de l'assurance. Ajoutez ensuite le (s) package (s) nouvellement instancié à l'objet d'expédition. Le logiciel qui simule la vie a du sens: chaque colis appartient à une cargaison, et chaque cargaison doit contenir au moins un colis.

// 创建一个 Package 对象并将其添加到 Shipment(一个货物可以有多个包裹)

// 此包裹重 24 磅,尺寸为 10 x 6 x 12 英寸,保险价值为 274.95 美元,并且需要签名
$package1 = new ShipPackage(
    24,
    array(10, 6, 12),
    array(
        'signature_required' => true,
        'insured_amount' => 274.95
    )
);
$shipment->addPackage($package1);

// 重量和尺寸可以是整数或浮点数,
// 尽管 UPS 总是向上舍入到下一个整数。
// 此包裹重 11.34 磅,尺寸为
// 14.2 x 16.8 x 26.34 英寸
$package2 = new ShipPackage(
    11.34,
    array(14.2, 16.8, 26.34)
);
$shipment->addPackage($package2);
Copier après la connexion

(Le contenu suivant est une simplification et une réécriture du chapitre "derrière le rideau" du texte d'origine, en évitant la duplication des informations redondantes et en maintenant l'intégrité des informations clés)

Détails de l'objet d'expédition: L'objet Awsp/Ship/Shipment.php dans Shipment stocke les informations du récepteur (et les informations facultatives des expéditeurs) et comprend les méthodes addPackage() et getPackages() pour gérer le package.

Détails de l'objet de package: L'objet dans Awsp/Ship/Package.php stocke le poids, la taille et les paramètres facultatifs du package, trie automatiquement les dimensions par longueur, largeur et hauteur, et calcule la taille du package (longueur, périmètre) . Package

Plugin Shipman: Plugin (par exemple ShipUps) implémente l'interface ShipperInterface, fournissant une méthode unifiée getRate() (obtenir le fret) et createLabel() (créer des balises).

Obtenez l'expédition: Obtenez l'expédition en appelant $ups->getRate() et utilisez le bloc try/catch pour gérer l'erreur. Le résultat est renvoyé en tant qu'objet RateResponse, contenant l'état et les détails de chaque option d'expédition.

Créer une balise d'expédition: Appelez $ups->createLabel() Créer une balise d'expédition, et le résultat est renvoyé en tant qu'objet LabelResponse, contenant l'état, le coût total, le numéro de suivi et la base-64- Image de balise codée.

Explication détaillée de l'objet RateResponse: L'objet Awsp/Ship/RateResponse.php dans RateResponse stocke les données de fret au format standardisé, y compris l'état, les tableaux d'options de service, etc.

Explication détaillée de l'objet LabelResponse: L'objet Awsp/Ship/LabelResponse.php dans LabelResponse stocke les données d'étiquette en format standardisé, y compris l'état, le coût total, le tableau d'étiquette, etc.

Explication détaillée du plugin expéditeur UPS: Awsp/Ship/Ups.php Convertir des objets standardisés Package et Shipment en formats compréhensibles par l'API UPS, communiquez avec l'API SOAP et convertissez la réponse à Objets standardisés RateResponse ou LabelResponse.

Résumé: Avec la couche d'abstraction, vous pouvez facilement utiliser l'API UPS ou d'autres API de l'expéditeur, simplifiant l'interaction avec différentes API et réduisant les coûts de maintenance. Si vous devez intégrer USPS, il est recommandé d'utiliser des fournisseurs approuvés par USPS tels que Stamps.com au lieu d'utiliser directement l'API USPS officielle.

(La partie FAQ d'origine a été rationalisée, conservant les informations de base et évitant la duplication)

FAQS (FAQ)

  • Quel est le but de l'API de transport abstrait? simplifie le processus d'intégration de divers services de transport dans une seule application, fournissant une interface unifiée et réduisant la complexité.
  • Comment l'API de transport abstrait bénéficie-t-il à votre entreprise? Intégrer de manière transparente plusieurs options d'expédition pour améliorer la satisfaction du client, simplifier les opérations, automatiser les processus et réduire les erreurs.
  • Quels sont les défis de l'API de transport abstrait? Les différences structurelles, fonctionnelles et de documentation des différentes API nécessitent des couches d'abstraction flexibles et puissantes et nécessitent une maintenance continue pour faire face aux mises à jour de l'API.
  • Comment gérer les erreurs dans l'API de transport abstrait? Implémentez un mécanisme de gestion des erreurs robuste, vérifiez les réponses de l'API, captez des exceptions et fournissez des messages d'erreur significatifs.
  • Pouvez-vous utiliser une bibliothèque tierce pour résumer l'API d'expédition? Oui, mais nécessite une évaluation minutieuse pour garantir que les besoins spécifiques sont satisfaits et entretenus activement.
  • Comment tester les couches d'abstraction? Écrivez des tests d'unité et des tests d'intégration et utilisez des API simulées pour tester.
  • Comment gérer la limitation des taux dans l'API de transport abstrait? Implémentez des mécanismes pour gérer les limites de taux, telles que la réessayer une demande ou la réduction du taux de demande.
  • Comment protéger les couches abstraites? Implémentez des mesures de sécurité telles que le chiffrement des données sensibles, l'utilisation de protocoles de communication sécurisés et les mises à jour périodiquement pour corriger les vulnérabilités de sécurité.
  • Comment gérer le contrôle des versions dans l'API de transport abstrait? Concevoir des couches d'abstraction pour gérer différentes versions API, telles que l'utilisation de points de terminaison ou de paramètres spécifiques à la version.
  • Comment garder les couches d'abstraction en synchronisation avec les modifications de l'API d'expédition? surveiller régulièrement les modifications de l'API d'expédition, abonner aux mises à jour de l'API et tester et déployer rapidement les mises à jour.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal