Générer des étiquettes Colissimo avec PHP et Symfony2

Bonne nouvelle pour les développeurs de solution e-commerce ! La Poste propose depuis peu un web service d’étiquetage (WSColiPosteLetterService) permettant de générer et imprimer les étiquettes de colis destinés à être envoyés par Colissimo.

S’agissant d’un web service de type SOAP, Lexik a mis en open-source la librairie WSColiPosteLetterService, fournissant un client et les différentes classes nécessaires à l’appel au service (et leurs règles de validation).
Et si vous développez sous Symfony2 c’est encore plus simple, avec l’intégration du LexikColissimoBundle proposant une configuration et une utilisation simplifiée.

Attention, l’accès au service WSColiPosteLetterService nécessite l’adhésion à un contrat de type “SO FLEXIBILITE” auprès de La Poste (la version test ne fonctionnant pas correctement – dixit le service technique – au moment d’écrire ces lignes). À noter également que le service ne sert qu’à générer des étiquettes prêtes à être collées sur un carton d’emballage, et ne gère pas les tarifs de livraison. Pour cela vous avez une grille tarifaire fournie par votre conseiller Colissimo qu’il vous faudra traiter vous-même.

Utilisation du bundle Symfony2

Installation avec composer

php composer.phar require lexik/colissimo-bundle

Activation du bundle (app/AppKernel.php)

public function registerBundles()
{
    $bundles = array(
        // ...
        new Lexik\Bundle\ColissimoBundle\LexikColissimoBundle(),
    );
}

Configuration (app/config.yml)

lexik_colissimo:
    ws_coliposte_letter_service:
        contract_number:         123456
        password:                'abcdef'

Exemple d’utilisation

// use Lexik\Bundle\ColissimoBundle\Exception\InvalidRequestException;
// use Lexik\Bundle\ColissimoBundle\Exception\FailedRequestException;

$colissimo = $this->container->get('lexik_colissimo.ws_coliposte_letter_service.service');

try {

    $response = $colissimo->getLabel(
        array('weight' => 1.780),
        array(
            'name'       => 'Client Name',
            'surname'    => 'Client Surname',
            'email'      => 'client@email.com',
            'line2'      => 'Client Address',
            'city'       => 'Client City',
            'postalCode' => 'Client Postal Code'
        )
    );

    // en cas de succès, un dump de $response ressemblera à ça
    object(WSColissimo\WSColiPosteLetterService\Response\ValueObject\ReturnLetter)[1102]
      protected 'file' => null
      protected 'parcelNumber' => string '13xc1v654d123' (length=13)
      protected 'PdfUrl' => string 'https://ws.colissimo.fr/path/to/pdf-file' (length=40)
      protected 'errorID' => int 0
      protected 'error' => string '' (length=0)
      protected 'signature' => null
      protected 'dateCreation' => null

} catch (InvalidRequestException $e) {
    // probleme de validation
} catch (FailedRequestException $e) {
    // erreur du webservice
}

Utilisation de la librairie PHP

Vous avez développé une boutique en ligne custom ou vous souhaitez réaliser un module PrestaShop, Magento ou pour toute autre solution e-commerce PHP existante, vous pouvez vous appuyer sur la logique fournie par la librairie WSColissimo.

Installation avec composer

php composer.phar require lexik/ws-colissimo

Exemple d’utilisation

Voir l’étude de cas
Lire l’article
Voir le témoignage
Fermer