Api envoi de colis avec TNT UPS Fedex GLS DPD etc

Bonjour :happy:

Pour ceux que ça intéresse (dev et autres intégrateur).

Dans mon entreprise nous envoyons plusieurs colis par jour en Europe et monde. Nous utilisons un site web qui nous permet de comparer les tarifs de quasiment tout les transporteurs pour un envoi défini puis de faire l’envoi et de récupérer l’étiquette le tracking etc.
Ce site à mis en place un API (gratuit) que j’ai utilisé, j’ai fait un module perso pour Dolibarr (avec ajout d’extrafields dans les expéditions).

J’ai bien testé les API de chacun de ces transporteurs mais ça fait développer autant de programmes que de transporteurs…et tout les transporteurs n’on pas d’API…

Voici les fonctions dispos :

[0]=> string(98) "availableServicesResponse GetAvailableServices(availableServicesRequest $AvailableServicesRequest)"
[1]=> string(83) "createShipmentResponse CreateShipment(createShipmentRequest $CreateShipmentRequest)"
[2]=> string(103)  "createShipmentOrderResponse CreateShipmentOrder(createShipmentOrderRequest $CreateShipmentOrderRequest)"
[3]=> string(83) "cancelShipmentResponse CancelShipment(cancelShipmentRequest $CancelShipmentRequest)"
[4]=> string(75) "getDocumentsResponse GetDocuments(getDocumentsRequest $GetDocumentsRequest)"
[5]=> string(92) "getShipmentStateResponse GetShipmentState(getShipmentStatusRequest $GetShipmentStateRequest)" 
[6]=> string(75) "getShipmentsResponse GetShipments(getShipmentsRequest $GetShipmentsRequest)" 
[7]=> string(87) "getTrackingDataResponse GetTrackingData(getTrackingDataRequest $GetTrackingDataRequest)" 
[8]=> string(87) "getShipmentInfoResponse GetShipmentInfo(getShipmentInfoRequest $GetShipmentInfoRequest)"

Pour infos je n’ai aucune part dans cette entreprise c’est juste pour partager l’info qu’on soit bien clair :wink:
Infos disponible sur letmeship.fr

En gros en php :
Créer SoapClient(); déclarer les entête etc puis appeler GetAvailableServices() par exemple.

Voilou…

1 J'aime

Pour récuperer le pdf de l’étiquette:

<?php
$file = 'etiquette.pdf';
//$data -> infos reçus via getDocumentsResponse()
file_put_contents($file, $data);
?>

Pour le tracking des colis

GetTrackingData

L’API me renvoi la liste des évenement avec ville-PAYS (ex: Cincinnati Hub - USA)

Couplé avec l’API Google

google.maps.Geocoder();

me retourne la ville en coordonnées ou l’on peut placer un marker sur une carte Google.

google.maps.Marker();

Bonjour Dolibarr95,

Bien que ne faisant pas partie des deux catégories précités, ton module m’intéresse…
Cela est’l instalable?

Merci.

Bonjour :happy:
Mon module dépends de champs extrafields que j’ai en quantité.
Par exemple :

longueur largeur hauteur poids autant de fois définis que de nombre de colis

  • largeur 15.5cm * hauteur 11.5cm * profondeur 7.5cm * / poids 0.07kg
  • largeur 30cm * hauteur 20cm * profondeur 23cm * / poids 3.7kg

compte transporteur du client (exWorks) et nom de la société

  • DHL 8547RR7

type de commande

  • commande classique ou via la boutique en ligne

etc. :cout du transport facturé
ce qui le rend à mon sens trop personnalisé mais je vais te filer un max d’éléments dans les prochains post

1 J'aime

Quelque paramètres

$this->lms_website['url']	= "https://fr-sandbox.test.letmeship.com/LMS2_ws/shipping/v2_0";
$this->lms_api['path']		= "https://fr-sandbox.test.letmeship.com/LMS2_ws/shipping/v2_0?wsdl";

$this->lms_api['path']			= 'https://www.letmeship.fr/connect/shipping/v2_0?wsdl';
$this->lms_website['url']		= 'https://www.letmeship.fr';

$this->lms_api['version']		= '2.0';
$this->lms_api['language']		= 'en';
$this->lms_api['namespace']		= 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';

//j'ai plusieurs comptes sur l'api
$this->lms_api['account'] = array(
							'Account1'	=> array ('key' => 'key1', 'pass' => 'password1'),
							'Account2'		=> array ('key' => 'key2', 'pass' => 'password2')
						);

Préparer un soapclient

try { 
	//objet client soap
	$client = new SoapClient($this->lms_api['path'], array('trace' => 1));
						
	//données pour le header 
	$request['usernameToken'] = array(
								'apiId'			=> $this->lms_api['account']['Account1']['key1'],
								'apiPassword'	=> $this->lms_api['account']['Account2']['pass1']				
								);
	//objet header soap					
	$header = new SOAPHeader($this->lms_api['namespace'], 'Security', $request);   
				
	//definir le header dans l'instance $client
	$client->__setSoapHeaders($header);
				

	} 
	catch (Exception $e) {                           
		print "Erreur :".$e->__toString();
		return false;                              
	} 
		
			
	$request['clientInfo'] =  array(
						'version'	=> $this->lms_api['version'], 
						'language'	=> $this->lms_api['language'], 
						'note'		=> 'note perso'
						);

//puis lancer la fonction désirée avec la requete complete

Liste des fonctions dispo

		
array(9) { 
			[0]=> string(98) "availableServicesResponse GetAvailableServices(availableServicesRequest $AvailableServicesRequest)"
			[1]=> string(83) "createShipmentResponse CreateShipment(createShipmentRequest $CreateShipmentRequest)"
			[2]=> string(103)  "createShipmentOrderResponse CreateShipmentOrder(createShipmentOrderRequest $CreateShipmentOrderRequest)"
			[3]=> string(83) "cancelShipmentResponse CancelShipment(cancelShipmentRequest $CancelShipmentRequest)"
			[4]=> string(75) "getDocumentsResponse GetDocuments(getDocumentsRequest $GetDocumentsRequest)"
			[5]=> string(92) "getShipmentStateResponse GetShipmentState(getShipmentStatusRequest $GetShipmentStateRequest)" 
			[6]=> string(75) "getShipmentsResponse GetShipments(getShipmentsRequest $GetShipmentsRequest)" 
			[7]=> string(87) "getTrackingDataResponse GetTrackingData(getTrackingDataRequest $GetTrackingDataRequest)" 
			[8]=> string(87) "getShipmentInfoResponse GetShipmentInfo(getShipmentInfoRequest $GetShipmentInfoRequest)"
			}		

Bonjour,
Je viens d’être contacter par cette boite, les prix semblent attractifs.
Donc si en prime nous pouvions faire nos expéditions en directes depuis Doli, le pied.
Mais pas certain d’avoir bien compris, tu as fait un module dédié ? Donc dispo sur demande ou via Dolistore ?
Tu déclenches l’enregistrement de l’expédition directement depuis le bon de livraison ? Avec la demande d’enlèvement ?
Merci pour ce partage :woohoo:

Slt

Module or not module ? …that is the question …

@dolibarr95 + @pm17

Donc que faire avec ce code ? quelqu’un peu fournir le module qui va bien ?
merci

Salut FB,

c’est ce qu’ils signalent justement (sans le dire explicitement) : il y a possibilité, mais il n’y a pas de module.

Donc solutions:
- ou tu mets les mains dans le cambouis (dans le code, ou via un module maison)
- ou tu motives du monde pour que ça motive un dev indépendant à développer un module rapidement
- ou tu attends en croisant les doigts pour que ça soit intégré

Les joies de l’open source : tout est possible mais comme dans les solutions propriétaires, rien n’est gratuit (en temps, ou en argent)

1 J'aime

@Arre
merci, c’est plus clair comme ça :wink:
Donc un dev maison, c’est non, à chacun son métier.
Par contre le dev d’un module par un sachant, ça me plait. Par contre aucune idée de qui peut faire ça et pour combien ?
Après la joie de l’open source est de pouvoir faire un financement participatif, je pense que cela peut intéresser plusieurs sociétés :wink:
Selon toi, c’est quoi la prochaine étape ? Ouvrir un nouveau sujet pour savoir qui peut faire une offre de dev ?

@FB, vu que le sujet est lancé : reste sur ce fils, il y aura peut être des contributeurs qui feront avancer le schmilblick :wink:

si tu veux vraiment faire avancer les choses : commence par prendre contacte avec des dev (à identifier sur le forum ou à contacter ici : https://wiki.dolibarr.org/index.php/List_of_Dolibarr_partners_and_providers)

après, le montage d’un financement participarif : c’est vraiment un gros boulot… à voir le coût, mais mieux vaut qu’une société finance en partie le dev et que ce même dev soit « assuré » de pouvoir re-vendre le travail fourni sous forme de module (jusqu’à ce qu’il rentre dans ses frais, gagne un peu de sous, et le laisse enfin à dispo de tous #BisounoursLand )

@Arre
Merci pour les infos.
Donc la chasse est ouverte :wink:
Si un Dev souhaite me faire une proposition pour un module, je suis preneur.

+1 up :blush:

uhh tu n’as eu aucun retour ??!! c’est fou ça.

ben prends les devant et contactes en quelques un: https://wiki.dolibarr.org/index.php/List_of_Dolibarr_partners_and_providers
(ok, cette période estivale/vacances … c’est peut être pas le meilleur moment :wink: mais qui ne tente rien n’a rien)

[EDIT : correction du lien]

Bonjour à tous,

Pour résumer, on parle bien de la possibilité, depuis dolibarr de :

  1. avoir une estimation des prix fournisseurs de livraison pour peu que l’on ai un compte chez eux

  2. choisir un fournisseur

  3. récupérer l’étiquette au format pdf pour notre envoi.

Si tel est le cas je suis très intéressé à suivre/aider le développement car cette intégration / module faciliterait la vie à un ou deux de mes clients (voire plus) si il existait.

bonne journée

@Arre
Oui un peu fou, mais c’est les vacances :wink:
En fait, comme il va falloir payer du développement, j’aimerais bien trouver qq autres sociétés qui seraient prêtes à se lancer dans le sujet et donc pourraient participer financièrement.
Je suis certain que ce sujet peut intéresser un grand nombre de sociétés. Ce groupe pourra alors se tourner vers la communauté des développeurs. C’est l’idée :wink:
Bel été à toi
merci

@FB

tu as tout dit : il faut du leadership pour ce genre de projet, et identifier les intéressés pour mutualiser les moyens (en terme financiers et/ou de temps)
Cette démarche n’est pas naturelle dans l’esprit humain qui est plus « individualiste » à la base : c’est un vrai job à mettre en place.

Bon courage et bel été à toi aussi :happy:

@Delthair64
Pour résumer, c’est pas ça du tout :wink:

Donc je résume :
1/ le besoin est de travailler sur la liaison Dolibarr > LetMeShip https://www.letmeship.com/fr/ via leur API
2/ Pourquoi LetMeShip : c’est comme un agent commercial multimarque. Une fois que tu as un compte chez eux, tu entres l’adresse de départ, l’adresse du destinataire, les dimensions et le poids du / des colis. tu as dès lors accès à une liste de plusieurs transporteurs (chronopost,TNT, UPS, etc) avec les prix proposés. Tu fais ton choix et c’est parti. Si comme nous tu travailles surtout avec UPS tu donnes l’heure d’enlèvement et tu valides. Tu as alors accès au numéro de tracking et à l’étiquette du transporteur. C’est LetMship qui te facture. ( les prix UPS sont super attractifs, mieux qu’avec nos remises habituelles UPS).
3/ Nos attentes : aujourd’hui nous sommes obligés d’aller sur l’interface LetMeShip alors qu’il existe l’API. Mais il faut développer l’interface pour la communication avec Dolibarr.
4/ CDC : pas vraiment fait… Mais l’idée serait de pouvoir, à partir de « bordereau d’expédition » Dolibarr pouvoir envoyer vers LetMe Ship les informations sur le / les coli à expédier en validant le mode de transport Normal / express. Vérifier en retour le transporteur et le prix, valider la commande, obtenir en retour le numéro de tracking. Bien évidemment l’adresse de l’expéditeur et du destinataire viendrait directement de la fiche expédition de Dolibarr. Nous sommes bien d’accord qu’un CDC plus détaillé est nécessaire :wink:
Comme nous n’envoyons que qq colis par jour et pas tous les jours, nous ne sommes pas dans la position d’investir une somme disproportionnée à nos besoins :wink: Mais qq centaines d’euros est envisageable.

Nb : tu as en début de post les fonctions dispo de l’API LetMeShip
Nb2 : je ne suis pas un commercial de LetMeShip, c’est du partage d’expériences :silly:
Nb3 : Merci @Arre - Plus fort ensemble

Maintenant je vais prendre qq jours de repos, mais nous pourrons continuer la discussion d’ici fin aout :whistle:

1 J'aime

Bonjour :happy:
Pour infos je me suis ma exprimé

j’ai crée un module perso pour dolibarr, ce module me permet d’utilser l’API letmeship me permettant d’expédier/suivre etc mes colis.
En gros
Depuis Dolibarr je défini le colisage Llh, poids par colis (plusieurs colis par envoi possible) choisi la date d’enlèvement compare les prix, sélectionne le prix qui me convient. Récupère le pdf étiquette transporteur le colle sur mon colis. Le transporteur récupère mon colis. Je suis le tracking toujours via l’api.

ps je ne travaille pas pour letmeship et en suis pas un vendeur de services quelconques, je suis webdev dans une entreprise