Jump to content

Affranchissement Colissimo automatique


Recommended Posts

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

  • 2 weeks later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...