This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!
Project Description

DHL Shipping provides DHL API Services. It is simple to use.

Below are list of available services or operations:

1. DHL Quote and Capability Service.
2. DHL Shipment Validation and Obtain shipment details and event visibility filtered by Waybill.
3. DHL Label Image utility – Generates DHL compliant label image using the XML response from Shipment Validation.
4. DHL Pickup Booking
5. DHL Tracking and modify or delete courier pick-up (Not impleminted yet but planned to implement it soon)
6. Internally Check If Response Available form DHL
7. Spacify Maximum Execution Time - For how many second the API should try to get response from DHL

Get Started - Install

How to install:

pip install dhl_shipping

Usage - DHL Quote and Capability Service

Example to get Quote and Capability Service - get the DHL Shipping Charges:

import dhl_shipping

# these two generally your company need to contact DHL to obtain form DHL
dhl_shipping.dhl_site_id = 'your DHL site id - obtained from DHL'
dhl_shipping.dhl_site_password = 'your DHL Site Password - obtained from DHL'
dhl_shipping.dhl_account_no = 'your DHL [ayment account number - obtained from DHL'  # set it to get correct rate

# Spacify Maximum Execution Time (in second) - For how many second the API should try to get response from DHL (Multiprocess)
dhl_shipping.max_response_time = 30

# the From and to Address - only mendatory fields are provided here
quote_address = {
    'from_country': 'AU',
    'from_city': 'Melbourne',
    'from_zipcode': '3000',

    'to_country': 'MY',
    'to_city': 'Kuala Lumpur',
    'to_zipcode': '50200'
}

# the unit of measurements - only mendatory fields are provided here
quote_unit = {
    'dimension_unit': 'CM',
    'weight_unit': 'KG'
}

# Pieces as List of Dictionary - it can be one ore more pieces - here with two pieces example
piece_one = {
    'piece_id': '1',
    'piece_height': '15',
    'piece_depth': '15',
    'piece_width': '15',
    'piece_weight': '1'
}
piece_two = {
    'piece_id': '2',
    'piece_height': '2',
    'piece_depth': '2',
    'piece_width': '2',
    'piece_weight': '2'
}
# Create the list with multiple (here 2) pieces
quote_pieces = []
quote_pieces.append(piece_one)
quote_pieces.append(piece_two)

# Some oter data
quote_optional_data = {

    'is_dutiable': 'Y',  # Y|N
    'declared_currency': 'MYR',  # currency code of To Country
    'declared_value': '150.00',

    'insured_value': '100.00',   # Optional
    'insured_currency': 'MYR',   # Optional
}

# Finally preapre the data to send to the API
quote_data_to_send = {
    'addresses': quote_address,
    'units': quote_unit,
    'pieces': quote_pieces,
    'optional_data': quote_optional_data,
}

# with the prepare data call the function and get the response
dict_response = dhl_shipping.quote.get_quote(quote_data_to_send)

# **The Reponse you will get will look similar to**
{
    status: true,
    message: "DHL quotes returned."
    quote_data: {
        shipping_charge: "572.800",
        local_product_name: "EXPRESS WORLDWIDE NONDOC",
        product_shortName: "EXPRESS WORLDWIDE",
        dimensional_weight: "3.000",
        weight_unit: "KG",
        currency_code: "MYR"
    }
}

Usage - DHL Shipment

Example DHL Shipment Validation - DHL Label Image utility - Label Creation (PDF File) - Airway Bill Number - Pickup - Pickup Reference Number:

import dhl_shipping

# these three generally your company need to contact DHL to obtain form DHL
dhl_shipping.dhl_site_id = 'your DHL site id - obtained from DHL'
dhl_shipping.dhl_site_password = 'your DHL Site Password - obtained from DHL'
dhl_shipping.dhl_account_no = 'obtained from DHL'

# the From and to Address - only mendatory fields are provided here
address_details = {
    'from_company_name': 'Shopandbox',
    'from_address_line_one': 'some from address',
    'from_address_line_two': 'some from address 2',  # optional
    'from_city': 'New York',
    'from_zipcode': '10022',
    'from_country': 'US',  # two letter abbriviation
    'from_country_name': 'United States',  # country full name
    'from_name': 'SNB Test',
    'from_phone_no': '1111111',
    'from_state': '',  # only for pickup (from_state) - max 35v char - Optional

    'to_company_name': 'Test Company',
    'to_address_line_one': 'some address',
    'to_address_line_two': 'some address two',  # optional
    'to_city': 'Kuala Lumpur',
    'to_zipcode': '50200',
    'to_country': 'MY',  # two letter abbriviation
    'to_country_name': 'Malaysia',  # country full name
    'to_name': 'Hasan Test',
    'to_phone_no': '3333333',
}

# Detail about the package - box
package_details = {
    'package_type': 'DF',  # DF|YP etc
    'total_weight': '2',  # total weight
    'dimension_unit': 'C',
    'weight_unit': 'K',
    'global_product_code': 'P',
    'local_product_code': 'P',
    'door_to': 'DD',
    'shipment_date': '2016-03-25',  # YYYY-mm-dd format
    'content_description': 'Some Content',
    'declared_value': '1.00',
    'declared_currency': 'USD',
    'is_dutiable': 'Y',
    'insured_amount': '100',  # Insured Amount (Required if Special Service of I
    'special_service_type': 'I',  # optional
    'reference_id': '1213122'  # any arbitrary or random number
}

# Pieces as List of Dictionary - it can be one ore more pieces - here with two pieces example
piece_one = {
    'piece_id': '1',
    'package_type': 'DF',  # DF|YP etc - this one can be made optional as package details has the same param
    'piece_height': '1',
    'piece_depth': '1',
    'piece_width': '1',
    'piece_weight': '1'
}
piece_two = {
    'piece_id': '2',
    'package_type': 'DF',  # DF|YP etc
    'piece_height': '2',
    'piece_depth': '2',
    'piece_width': '2',
    'piece_weight': '1'
}
# Create the list with multiple (here 2) pieces
pieces_details = []
pieces_details.append(piece_one)
pieces_details.append(piece_two)

# set up for the shipment awb file path and name - if provided then pickup will be created else no pickup
optional_data = {
    'awb_pdf_file_path': 'path/where/you /want/to/store/the/awb/pdf/file/',
    'awb_pdf_file_name': 'myfile.pdf',  # name of the file
}

# only for pickup - no need to set it if no pick up needed
pickup_details = {
    'pickup_date': '2016-02-25',  # YYYY-MM-DD format
    'ready_by_time': '14:30',  # hh:mm ie 14:35
    'close_time': '15:30',  # hh:mm ie 15:35
}

shipment_data_to_send = {
    'addresses': address_details,
    'package': package_details,
    'pieces': pieces_details,
    # only for pickup not for shipment - if provided then pickup will be created else no pickup
    #'pickup_details': pickup_details,
    'optional_data': optional_data
}

# with the prepare data call the function and get the response
dict_response = dhl_shipping.shipment.get_shipment(shipment_data_to_send)

# **The Reponse you will get will look similar to**
{
    pickup_response: {
        # if in request data pickup details provided then here you will get the status True on success and False on fail
        status: false,
        # if in request data pickup details provided then this will be True
        request_for_pickup: false,
        message: "",
        # if in request data pickup details provided then here you will get the pick up confirmation number
        pickup_confirmation_number: ""
    },
    shipment_response: {
        status: true,
        awb_pdf_file_path_name: "pdf_shipment_label_2/9687040086__awb_15.pdf",
        message: "DHL Shipment created.",
        awb_pdf_file_name: "9687040086__awb_15.pdf",
        airway_bill_number: "9687040086"
    }
}

Remove - Uninstall

How to uninstall:

  • pip uninstall dhl_shipping

Contact

Release History

Release History

2.0.4

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

2.0.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.9

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.8

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.7

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.6

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

1.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
dhl_shipping-2.0.4.tar.gz (13.7 kB) Copy SHA256 Checksum SHA256 Source Jul 5, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting