142 lines
3.3 KiB
Markdown
142 lines
3.3 KiB
Markdown
# Colissimo Web Service Affranchissement — Documentation de référence
|
|
|
|
## Authentification
|
|
|
|
Deux modes possibles :
|
|
|
|
### Mode 1 : contractNumber + password (dans le body JSON)
|
|
```json
|
|
{
|
|
"contractNumber": "123456",
|
|
"password": "monMotDePasse",
|
|
...
|
|
}
|
|
```
|
|
|
|
### Mode 2 : API Key (dans le header)
|
|
```
|
|
apikey: MA_CLE_API
|
|
```
|
|
|
|
## Endpoints
|
|
|
|
| Environnement | URL |
|
|
|--------------|-----|
|
|
| **Production** | `https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/3.1/generateLabel` |
|
|
| **Sandbox** | `https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/3.1/checkGenerateLabel` |
|
|
|
|
`checkGenerateLabel` = même requête mais sans générer de vrai colis (pas de suivi, pas de facturation).
|
|
|
|
## Générer une étiquette (generateLabel)
|
|
|
|
**POST** `https://ws.colissimo.fr/sls-ws/SlsServiceWSRest/3.1/generateLabel`
|
|
|
|
```json
|
|
{
|
|
"contractNumber": "123456",
|
|
"password": "monMotDePasse",
|
|
"outputFormat": {
|
|
"x": 0,
|
|
"y": 0,
|
|
"outputPrintingType": "PDF_10x15_300dpi"
|
|
},
|
|
"letter": {
|
|
"service": {
|
|
"productCode": "DOM",
|
|
"depositDate": "2026-02-20",
|
|
"orderNumber": "123-4567890-1234567",
|
|
"commercialName": "Localiztoi"
|
|
},
|
|
"parcel": {
|
|
"weight": 0.5
|
|
},
|
|
"sender": {
|
|
"address": {
|
|
"companyName": "Localiztoi",
|
|
"line2": "Adresse de l'entrepôt",
|
|
"countryCode": "FR",
|
|
"city": "Ville",
|
|
"zipCode": "00000"
|
|
}
|
|
},
|
|
"addressee": {
|
|
"address": {
|
|
"lastName": "Dupont",
|
|
"firstName": "Jean",
|
|
"line2": "10 avenue des Champs",
|
|
"countryCode": "FR",
|
|
"city": "Lyon",
|
|
"zipCode": "69001"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Champs obligatoires
|
|
|
|
| Bloc | Champs |
|
|
|------|--------|
|
|
| Racine | `contractNumber` + `password` |
|
|
| outputFormat | `outputPrintingType` |
|
|
| service | `productCode`, `depositDate` |
|
|
| parcel | `weight` (max 30 kg) |
|
|
| sender.address | `countryCode`, `zipCode`, `city` |
|
|
| addressee.address | `lastName`, `line2`, `countryCode`, `city`, `zipCode` |
|
|
|
|
## Formats d'étiquette
|
|
|
|
| Format | Description |
|
|
|--------|------------|
|
|
| `PDF_A4_300dpi` | PDF pleine page A4 |
|
|
| `PDF_10x15_300dpi` | PDF étiquette 10x15 cm |
|
|
| `ZPL_10x15_300dpi` | ZPL (Zebra) 10x15 |
|
|
|
|
## Réponse
|
|
|
|
La réponse est **multipart MIME (MTOM)** contenant :
|
|
1. Une partie JSON avec le statut + numéro de suivi
|
|
2. Une partie binaire avec le PDF de l'étiquette
|
|
|
|
```json
|
|
{
|
|
"messages": [{ "id": "0", "type": "INFOS" }],
|
|
"labelResponse": {
|
|
"parcelNumber": "6A12345678901",
|
|
"parcelNumberPartner": ""
|
|
}
|
|
}
|
|
```
|
|
|
|
## Codes produits
|
|
|
|
| Code | Service |
|
|
|------|---------|
|
|
| **DOM** | Colissimo Domicile sans signature |
|
|
| **DOS** | Colissimo Domicile avec signature |
|
|
| **HD** | Hors Domicile (point relais) |
|
|
| **CECO** | Colissimo Eco France |
|
|
| **COM** | Colissimo International |
|
|
|
|
## Stockage credentials (notre app)
|
|
|
|
Dans la table `api_keys` :
|
|
- `provider=laposte`, `label=contract_number`
|
|
- `provider=laposte`, `label=password`
|
|
|
|
## Parsing MTOM
|
|
|
|
La réponse multipart contient :
|
|
- Le JSON entre les délimiteurs MIME
|
|
- Le PDF délimité par `%PDF` et `%%EOF`
|
|
|
|
Il faut parser les parties MIME pour extraire les deux.
|
|
|
|
## Méthodes utiles
|
|
|
|
| Méthode | Description |
|
|
|---------|------------|
|
|
| `checkGenerateLabel` | Test sans générer de vrai colis |
|
|
| `getLabel` | Ré-imprimer une étiquette existante |
|
|
| `generateBordereauByParcelsNumbers` | Bordereau de dépôt |
|