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);
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);
(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!

Laravel simplifie la gestion des données de session temporaires à l'aide de ses méthodes de flash intuitives. Ceci est parfait pour afficher de brefs messages, alertes ou notifications dans votre application. Les données ne persistent que pour la demande ultérieure par défaut: $ demande-

La journalisation PHP est essentielle pour surveiller et déboguer les applications Web, ainsi que pour capturer des événements critiques, des erreurs et un comportement d'exécution. Il fournit des informations précieuses sur les performances du système, aide à identifier les problèmes et prend en charge le dépannage plus rapide

L'extension PHP Client URL (CURL) est un outil puissant pour les développeurs, permettant une interaction transparente avec des serveurs distants et des API REST. En tirant parti de Libcurl, une bibliothèque de transfert de fichiers multi-protocol très respectée, PHP Curl facilite Efficient Execu

Laravel fournit une syntaxe de simulation de réponse HTTP concise, simplifiant les tests d'interaction HTTP. Cette approche réduit considérablement la redondance du code tout en rendant votre simulation de test plus intuitive. L'implémentation de base fournit une variété de raccourcis de type de réponse: Utiliser illuminate \ support \ faades \ http; Http :: faux ([[ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Voulez-vous fournir des solutions instantanées en temps réel aux problèmes les plus pressants de vos clients? Le chat en direct vous permet d'avoir des conversations en temps réel avec les clients et de résoudre leurs problèmes instantanément. Il vous permet de fournir un service plus rapide à votre personnalité

L'article traite de la liaison statique tardive (LSB) dans PHP, introduite dans PHP 5.3, permettant une résolution d'exécution de la méthode statique nécessite un héritage plus flexible. Problème main: LSB vs polymorphisme traditionnel; Applications pratiques de LSB et perfo potentiel

Alipay Php ...

L'article examine l'ajout de fonctionnalités personnalisées aux cadres, en se concentrant sur la compréhension de l'architecture, l'identification des points d'extension et les meilleures pratiques pour l'intégration et le débogage.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

SublimeText3 version anglaise
Recommandé : version Win, prend en charge les invites de code !

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux