pppplus Posted August 6, 2015 Share Posted August 6, 2015 Bonjour Je cherche des développeurs, pour mettre en commun nos compétences, et réussir à faire un module pour affranchir en Colissimo depuis le nouveau site de La Poste. J'utilisai jusqu'à présent un module très modifié du module gratuit EasyColis (qui marchait dans presque tous les cas pour moi)J'ai utilisé par le passé le module Chronossimo (mais les données cryptées ne m'enchantent pas) et il a du mal à fonctionner actuellement visiblement. Depuis la mise en place de la nouvelle plateforme Colissimo de La Poste (pro.boutique.laposte.fr), c'est l'enfer de tout commander manuellement (vraiment très long et fastidieux quand ça marche !) Travail fait : (uniquement depuis la France, vers la France, pour le reste, on verra quand le basique est fait) Pour l'instant, j'arrive seulement à m'identifier, et à passer la première page (et donc à récupérer le prix de l'affranchissement).Je bloque sur l'ajout d'adresse Destinataire et sélection de l'adresse Expéditeur (ce qui passait encore il y a 10 jours !! mais je ne vois pas le changement effectué qui me bloque) Je n'ai pas réussi à aller plus loin. Utilisation de cUrl pour passer les étapes Identification (ça marche) : public function connectColissimoParticulier() { global $curl; $connectionFields = array( 'login' => strval(Configuration::get('EASYCOLISSIMO_email')), 'password' => strval(Configuration::get('EASYCOLISSIMO_mdp')) ); $cConnectionFields=''; foreach ($connectionFields as $key => $value) { $cConnectionFields .= $key . '=' . $value . '&'; } $cConnectionFields = rtrim($cConnectionFields, '&'); //print_r($connectionFields); curl_setopt($curl, CURLOPT_POST, count($connectionFields)); curl_setopt($curl, CURLOPT_POSTFIELDS, $cConnectionFields); $url_de_colissimo_suivi = "https://www.colissimo.fr/affranchissementenligne/submitLogin.do"; curl_setopt($curl, CURLOPT_URL, $url_de_colissimo_suivi); $string = curl_redirect_exec($curl); if (preg_match("/quickConnect/i", $string)){ echo '<b style="color:red;">Email et/ou mot de passe incorrects pour le compte perso. Merci de les réctifier.</b>'; return -1; } return $string; } Récupération du Prix : public function getPrice($poids) { //rentré dynamiquement ce sera mieux, pour test en dur $colisFields = array( 'postalCodeLabel'=>'01110 MA VILLE', 'fromIsoCode' => 'fr', 'localite' => 'MA VILLE', 'onlyPostalCode' => '01110', 'toIsoCode' => 'fr', 'typeColis' => 'STANDARD', 'weight' => $poids, 'livraisonAvecSignature'=> 'false', 'isPro' => 'true', 'choixDepot' => 'BUREAU_POSTE', 'deposerEnsembleColisBP' => 'true', 'indemnitePlus'=> 'false', $cColisFields = ''; foreach ($colisFields as $key => $value) { $cColisFields .= $key . '=' . $value . '&'; } $cColisFields = rtrim($cColisFields, '&'); //print_r($colisFields); //echo $cColisFields;exit; $curl = curl_init(); $cPath = sys_get_temp_dir() . '/' . session_id() . '.txt'; if (!file_exists($cPath)) { curl_setopt($curl, CURLOPT_COOKIEJAR, $cPath); } else { curl_setopt($curl, CURLOPT_COOKIEFILE, $cPath); } curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_CAINFO, __DIR__ . "/cacert.pem"); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Accept-Language: " . $_SERVER['HTTP_ACCEPT_LANGUAGE'])); curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($curl, CURLOPT_REFERER, 'https://pro.boutique.laposte.fr/colissimo-en-ligne'); curl_setopt($curl, CURLOPT_POST, count($colisFields)); curl_setopt($curl, CURLOPT_POSTFIELDS, $cColisFields); $url_de_colissimo_suivi = "https://pro.boutique.laposte.fr/colissimo-en-ligne/votre-colis"; curl_setopt($curl, CURLOPT_URL, $url_de_colissimo_suivi); $string = curl_redirect_exec($curl); //print_r($string);//exit; $html = str_get_html($string); if (preg_match("/erreur_shipment/i", $string)){ $strErrors = ''; $errorsFound = false; foreach ($html->find('span.erreur_shipment') as $error) { if ($error->plaintext != '' && Tools::strlen($error->plaintext) > 5){ $strErrors .= '<br />'.$error->innertext; $errorsFound = true; } } if ($errorsFound){ echo '<b style="color:red;">Erreur au niveau de votre saisie :</b>'.$strErrors; return -1; } } /*echo '<pre>'; print_r($colisFields); echo '</pre>';*/ $html = str_get_html($string); $htmls = $html->find('span.text-highlight'); if (isset($htmls[0])) return array($htmls[0]->plaintext, 0); else return 'Erreur'; } Link to comment Share on other sites More sharing options...
pppplus Posted August 8, 2015 Author Share Posted August 8, 2015 (edited) j'ai contacté La Poste pour avoir des infos, une api, ou webservices... L'espoir fait vivre ! Edited August 8, 2015 by pppplus (see edit history) Link to comment Share on other sites More sharing options...
Elitius Posted August 19, 2015 Share Posted August 19, 2015 Bonjour, Il existe déjà la suite SoNice pour affranchir les Colissimo. Le webservice d'affranchissement existe bien (SoNice se base dessus), il faut le demander à la direction technique Coliposte ou un commercial Coliposte. Link to comment Share on other sites More sharing options...
pppplus Posted August 19, 2015 Author Share Posted August 19, 2015 Bonjour Ce n'est pas la solution pour les petits ecommerçants, non soumis à la TVA. La plupart des envois sont nettement plus chers via ColiPoste (sauf vers l'étranger). Comme beaucoup, j'ai besoin d'une solution qui passe par la boutique de la Poste, affranchissements non soumis à la TVA, et bien moins chers que sur Coliposte (ce qui est d'une stupidité...) Link to comment Share on other sites More sharing options...
Elitius Posted August 19, 2015 Share Posted August 19, 2015 Je comprends votre souci, mais pour bien les connaitre, les services techniques ont tendance à bloquer facilement ce genre de bidouilles. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now