ladromelaboratoire/chronopostws
Composer 安装命令:
composer require ladromelaboratoire/chronopostws
包简介
Chronopost SOAP web-service module for various integrations
README 文档
README
Ce module PHP propose une intégration au WebServices de Chronopost. L'objectif est de pouvoir générer des étiquettes de transport et de les gérer.
Techniquement le module reçoit un tableau correspondants aux étiquettes à créer. Ce tableau est enrichi sous forme d'un objet en fonction des requêtes exéécutées.
Fonctionnement choisi
Tous les appels sont considérés multi colis et multi format d'étiquettes. Afin d'avoir un fonctionnement uniforme, toutes les étiquettes sont réservées et récupérées dans un second temps. Par construction du web-service, toutes les étiquettes sont envoyées dans un seul document. Il n'est donc pas possible d'attacher, dans ce cas là, un unique document au numéro de suivi.
Les services Chronopost ciblés :
ShippingServices
- shippingMultiParcelV4
- getReservedSkybillWithTypeAndMode
TrackingServices
- searchPOD
- cancelSkybill
- trackSkybillV2
QuickcostServices
- quickCost
Attention, le fonctionnement du module répond à un besoin. Les uses-cases doivent être étudiés pour définir la stratégie d'appel au module qui se contente de faire des vérifications basiques. Il ne peut pas prendre en compte les spécificités du contrat Chronopost de chaque utilisateur (fuiltrer les produits et services, les coûts additionnels, le fonctionnement douanier).
Fonctions supportées
Seule la partie Shipping est implémentée et fonctionnelle pour le moment.
- Réservation d'étiquettes de transport
- 1 destinataire, 1 expéditeur, N colis
- N destinataires, N expéditeurs, N colis
- N destinataires, 1 expéditeur, N colis (sauf en mode A/R)
- Mode aller / retour
- Etiquettes multi formats (PDF, ZPL, ...)
- Validation du format de chaque donnée en fonction de la documentation Chronopost
- Contrôle général de cohérence (Readiness For Launch)
- Enrichissement de l'objet shipment avec les réponses du web-service
- Enregistrement sur disque des étiquettes
- Tracking
- Annulation d'une lettre de transport
- Mode debug complet (dump des objets, dump des requêtes et réponses)
- Génèrera des exceptions PHP si l'application fonctionne de cette manière.
Non supporté ou à optimiser (à ce jour)
- Shipment
- Classe de détermination du nom du pays normalisé et de contrôle de la cohérence du code postal en fonction du code pays
- Trouver un moyen plus élégant de faire des étiquettes aller / retour
- Gérer le cas des déclarations douane en multi colis
- Tracking
- A terminer
- Récupération des preuves de livraison
- Suivi d'un colis
- A terminer
- Quickcost
- A terminer
- Récupération du coût d'un envoi
- A terminer
- Optimisation des classes et des objets
- Ecrire une vraie documentation
- Introduire PHPUnit
Usage
Pour tester
Utiliser composer update pour déclarer le namespace et utilisez directement les scripts du dossier ./tests.
Le dossier ./tests/logs contient 3 exemples d'appels réussis en mode "Debug". Les fichiers .json sont les dumps des objets, les fichiers .xml sont les appels et réponses au web-service. Les autres fichiers sont les étiquettes.
Pour intégrer
Tout repose sur composer.
Tous les objets sont appelables manuellement. Néanmoins, il est bien plus facile de charger un tableau de données préparé ailleurs. La lecture de la documentation Chronopost est impérative pour comprendre ce qu'il faut fournir (la liste est longue) et la signification de certains paramètres. La fonction RFLCheck() de chaque object s'assure de la cohérence apparente avant appel du web-service. Notez qu'il existe des paramètres dits optionnels dans la documentation mais bloquants lors des appels si absents.
La convention est que le tableau associatif donné en entrée utilise le nom exact des propriétés des objets attendu par le webService. Chaque élément passera par un "setter" qui contrôlera sa forme aussi précisément que possible. Les expressions régulières sont massivement utilisées (voir la classe wsregex.php).
Le dossier /src/wsdata contient l'ensemble des classes manipulant les objets unitaires à transettre au webservice.
Le dossier /src/utils contient des classes annexes
Le dossier /src/exceptions contient les classes de gestion des exception
Les 3 classes principales sont:
/src/chronopost.phpqui gère les appels et les réponses au/du web-service/src/shipment.phpqui gère l'objet d'appel au serviceShipphingService/src/tracking.phpqui gère les objets d'appel au serviceTrackingService/src/quickcost.phpqui gère les objets d'appel au serviceQuickcostService
Note aux développeurs
Le web-service est chatouilleux sur les données envoyées. RFLCheck() tient compte de ce qui a été vu lors du développement. Néanmoins, d'autres particularités peuvent exister. L'erreur 29 est caractéristique d'un problème de données ou de la forme de l'appel SOAP. Les exemples fournis ont été testés fonctionnels. Inspirez vous en.
Contribuer
La contribution est la bienvenue sous forme de PR documentée unitaire ou de remontée de bug documentée également. Les demandes fonctionnelles ne seront traitées que si nous en avons le temps et si cela a un sens pour nous. Préférez les PRs.
Disclaimer
Ce module est fourni tel qu'il existe. Des changements peuvent apparaître chez Chronopost ou ne pas correspondre à vos règles d'usage métier. Bien que ce module se veuille générique, tous les cas ne sont pas intégrables. Avant de vous appuyer dessus, il est vivement recommandé de le tester. L'ajout de fonctionnalités peut être proposé par la contribution.
ladromelaboratoire/chronopostws 适用场景与选型建议
ladromelaboratoire/chronopostws 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 18 次下载、GitHub Stars 达 3, 最近一次更新时间为 2022 年 10 月 10 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 ladromelaboratoire/chronopostws 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ladromelaboratoire/chronopostws 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 18
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 19
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2022-10-10