Aller au contenu

Exemple d'expédition à l'international (python)

# -*- coding:utf-8 -*-
#
# Requête plus complexe, expédition hors UE
#
#
#
import base64
import requests

URL = "https://webservice.imxpostal.fr/smc/rpc/"
# credentials to be given by IMX
USERNAME = "..." # fourni par IMX
PASSWORD = "..." # fourni par IMX
ACCOUNT = "..." # fourni par IMX


data = {
    "jsonrpc": "2.0",
    "method": "api.declare_parcel",
    # identifiant de requête. A la convenance du client, pas nécessairement unique.
    "id": "__test__",
    "params": [
        USERNAME,
        PASSWORD,
        {
            "account": ACCOUNT,
            "reference": "your reference number 2",
            "options": {
                "service": "1", # Suivi
                "carrier": "",
                "carrier_tracking_id": True,
                "label": True,
            },
            "addressee": {
                "name": "Olivier Migeon",
                "company": "Municipalidad de Ituzaingo",
                "address1": "Centenario 1519",
                "postcode": "3302",
                "town": "Ituzaingo",
                "province": "Corrientes",
                "country": "AR",
            },
            "parcel_description": {
                "weight": "2.4", # in kg
                "shipping_fees": "5",
                "shipping_fees_currency": "EUR",
            },
            "parcel_content": [
                {
                    "classification": "3304990000",
                    "description": "Tinted Fluid SPF 50+ 50ml",
                    "currency": "EUR",
                    "value": "10.75",
                    "origine": "FR",
                },
                {
                    "classification": "3305900000",
                    "description": "Phyto Repair Express Conditioner 150ml",
                    "currency": "EUR",
                    "value": "10.42",
                    "origine": "FR",
                },
            ],
        }
    ]
}

xx = requests.post(URL, json=data)
try:
    output = xx.json()
    print(output)
    result = output["result"]
except:
    output = xx.text
    print(output)
else:
    pdf_content = base64.b64decode(result["label"])
    pdf_filename = "test-international.pdf"
    open(pdf_filename, "wb").write(pdf_content)


# La réponse est similaire. Le PDF est composé de deux pages : l’étiquette distributeur et l’étiquette CN23.