A Python module to integrate with DHL courier
Project description
python-dhl-api
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.12+
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.
- Address validation
- Get rates and services available
- Create a shipment
- Create a pickup
- Upload document
- Check shipment
- Shipment status
Notes
Use https://dct.dhl.com/ and enter the pickup origin and delivery destination to see all available services. If no service is listed, it is likely unavailable or temporarily suspended.
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='name.surname@example.com',
contact_type=ShipperType.BUSINESS.value
)
sender_address = address.DHLPostalAddress(
street_line1='123 Example St',
postal_code='12345',
province_code='EX',
country_code='IT',
city_name='Exampletown',
)
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='customer@example.com',
contact_type=ShipperType.PRIVATE.value
)
receiver_address = address.DHLPostalAddress(
street_line1='456 Sample Ave',
postal_code='54321',
country_code='FR',
city_name='Sampleville',
)
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,
request_pickup=False
)
ship = service.ship(dhl_shipment=s)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python_dhl_api-3.0.1.tar.gz.
File metadata
- Download URL: python_dhl_api-3.0.1.tar.gz
- Upload date:
- Size: 33.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fbdf76f03c85767ee2b7adc153e7f6a0b1c8c06969178743b2bc9ca28d0ed305
|
|
| MD5 |
54b8a6e2704e9da476f97c0618458588
|
|
| BLAKE2b-256 |
9fe7cf0c7d9679854770e41b62aacca92d8e5efe46ef6c9ef91612e5a6167033
|
File details
Details for the file python_dhl_api-3.0.1-py3-none-any.whl.
File metadata
- Download URL: python_dhl_api-3.0.1-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1555bd5afdffcfad3d868be9962bb028e553c77f7fb64f00f9576b4451c2e13
|
|
| MD5 |
a098d5d1d5de2c896a326ae607c1f54b
|
|
| BLAKE2b-256 |
a9fa9c4393ea87a2dd2b16ab351b5ad5623a66bc346d1e3a150680b33ea28a8b
|