Skip to main content

A Python module to integrate with DHL courier

Project description

python-dhl-api

PyPI version

A Django module to integrate with DHL EXPRESS API (MyDHL API).

DHL APIs documentation: https://developer.dhl.com/api-reference/dhl-express-mydhl-api#reference-docs-section/

Requirements

Python 3.9+

Installation

Python DHL API is available through pip. To easily install or upgrade it, do

pip install --upgrade python-dhl-api

Usage

Set the following DHL fields in a private file.

DHL_API_KEY = ''
DHL_API_SECRET = ''
DHL_ACCOUNT = ''
DHL_ACCOUNT_IMPORT = '' 
DHL_ACCOUNT_EXPORT = ''

Services available

Please check test_validate.py to see some practical uses.

  1. Address validation
  2. Get rates and services available
  3. Create a shipment
  4. Create a pickup
  5. Upload document
  6. Check shipment
  7. Shipment status

Create a shipment

service = DHLService(api_key=Setting.DHL_API_KEY, api_secret=Setting.DHL_API_SECRET,
                     account_number=Setting.DHL_ACCOUNT_EXPORT,
                     test_mode=True)

Set one or more accounts:

accounts = [
    shipment.DHLAccountType(type_code=AccountType.SHIPPER, number=Setting.DHL_ACCOUNT_EXPORT),
]

If you want the shipper to pay also the duties then:

accounts = [
    shipment.DHLAccountType(type_code=AccountType.SHIPPER, number=Setting.DHL_ACCOUNT_EXPORT),
    shipment.DHLAccountType(type_code=AccountType.DUTIES_TAXES, number=Setting.DHL_ACCOUNT_EXPORT),
]

Create the sender:

sender_contact = address.DHLContactInformation(
    company_name='Test Co.',
    full_name='Name and surname',
    phone='+39000000000',
    email='matteo.munaretto@innove.it',
    contact_type=ShipperType.BUSINESS.value
)
sender_address = address.DHLPostalAddress(
    street_line1='Via Maestro Zampieri, 14',
    postal_code='36016',
    province_code='VI',
    country_code='IT',
    city_name='Thiene',
)
registration_numbers = [address.DHLRegistrationNumber(
    type_code=TypeCode.VAT.name,
    number='42342423423',
    issuer_country_code='IT'
)]

Create the receiver:

receiver_contact = address.DHLContactInformation(
    full_name='Customer',
    phone='+39000000000',
    email='matteo.munaretto@innove.it',
    contact_type=ShipperType.PRIVATE.value
)
receiver_address = address.DHLPostalAddress(
    street_line1='Rue Poncelet, 17',
    postal_code='75017',
    country_code='FR',
    city_name='Paris',
)

Add the packages to ship:

packages = [shipment.DHLProduct(
    weight=1,
    length=35,
    width=28,
    height=8
)]

Set content and label output. For a list of services you are entitled to, use service get_rates.

shipment_date = next_business_day()
shipment_date = shipment_date.replace(hour=14, minute=0, second=0, microsecond=0)
shipment_date = shipment_date.replace(tzinfo=ZoneInfo('Europe/Rome'))

added_service = [shipment.DHLAddedService(
    service_code='W'
)]

content = shipment.DHLShipmentContent(
    packages=packages,
    is_custom_declarable=False,
    description='Shipment test',
    incoterm_code=IncotermCode.DAP.name,
    unit_of_measurement=MeasurementUnit.METRIC.value,
    product_code=ProductCode.EUROPE.value
)

output = shipment.DHLShipmentOutput(
    dpi=300,
    encoding_format='pdf',
    logo_file_format='png',
    logo_file_base64=LOGO_BASE64
)

customer_references = ['id1', 'id2']

Let's ship:

s = shipment.DHLShipment(
    accounts=accounts,
    sender_contact=sender_contact,
    sender_address=sender_address,
    sender_registration_numbers=registration_numbers,
    receiver_contact=receiver_contact,
    receiver_address=receiver_address,
    ship_datetime=shipment_date,
    added_services=added_service,
    product_code=ProductCode.EUROPE.value,
    content=content,
    output_format=output,
    customer_references=customer_references,
)

ship = service.ship(dhl_shipment=s)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_dhl_api-2.2.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

python_dhl_api-2.2-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file python_dhl_api-2.2.tar.gz.

File metadata

  • Download URL: python_dhl_api-2.2.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for python_dhl_api-2.2.tar.gz
Algorithm Hash digest
SHA256 b0f7a74aa4fc263ef2facb47e9ae4e9ecef2a923d83a6e272847aef47906ae2a
MD5 4d807bd9bcb0765eb44408971666f8b9
BLAKE2b-256 7d04e99aa3ad2628e82e0809be01d73fba660903bc336b9182249c79ddf9fa42

See more details on using hashes here.

File details

Details for the file python_dhl_api-2.2-py3-none-any.whl.

File metadata

  • Download URL: python_dhl_api-2.2-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for python_dhl_api-2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8a190bc7dd8d230ce2f19e1622df6e46a10c9208ee5598faf94ae1a14d7f1f94
MD5 58749fc80b0fad689ab228e6b6e0f317
BLAKE2b-256 1e7e5f57df52399be46d299ef9527ab5bd08654571dc6ab3e3c88960486cac34

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page