DPD API pro automatizovaný import zásilek – PHP knihovna

DPD poskytuje tyto API služby:
Každá služba má jiné přístupové údaje.
DPD GeoAPI (JSON) - Nová API (dokumentace zde)
GeoApi (import balíků atp.) a DpdStatus (stav zásilky)
Tato knihovna je novější a o něco přehlednější k použití.
Vytvořeno na základě: Příručka programátora - Webové služby Moje DPD / Geo APIMojeDPD- tato knihovna je starší, ale nabízí všechny funkce. Přístupové údaje jsou shodné s webovými přístupy, takže ji lze rovnou použít. (5.2.2021: tato knihovna je pro nové klienty už zablokována)
Knihovny umožňují:
- Vytváření zásilek
- Vytvoření přepravních štítků
- Vytváření svozu
- Zjištění stavu balíku
- Seznam výdejních míst DPD Pickup Point
- Historie podaných zásilek přes API
- ... a další dle oficiální specifikace
Součástí je i knihovna pro výdejní místa DPD Pickup Point.
Knihovna je funkční pro PHP 5.6+, PHP 7, PHP 8 a třída je umístěna v jednom PHP souboru.
Příklad použití:
Kompletní příklady budou dodány s knihovnami.
<?php
/**
* DPD Geo API
*/
require 'class_DpdGeoApi.php';
require 'class_DpdStatus.php'; // pro zjištění stavu balíku
$dpd = new DpdGeoApi("uzivatel", "heslo"); // přístupy vyžádejte u DPD
// Použití:
// $dpd->jakakoliv_funkce_podle_dokumentace
//------------------------------------NOVÁ ZÁSILKA
// typ NewShipmentVO
$shipment = array(
'_ShipmentDetailVO' => array(
'ID_Customer' => 1, // ID_Customer int M - ID zákazníka
'ID_Customer_Address' => 0, // ID_Customer_Address int M - ID svozové adresy
'REF1' => 'XXXXX', // REF1 string M 35 Reference zásilky --- Povinné
// REF2 string O 35 Reference zásilky
// REF3 string O 35 Reference zásilky
// REF4 string O 35 Reference zásilky
// odesílatel - jen pokud jde o sběrné zásilky
/*
'Sender' => $dpd->formatSender(
$fullname, $street, $zip, $city, $country, $contact_person, $phone, $email
),*/
// příjemce
'Receiver' => $dpd->formatReceiver(
$fullname, $street, $zip, $city, $country, $contact_person, $phone, $email
),
// počet kusů v zásilce
'ParcelCount' => 1,
// Seznam informací o jednotlivých kusech zásilky
'Parcel_References_and_insurace' => array(
// PARCELNUMBER string O 14 Číslo zásilky z vlastní číselné řady
// PARCELNUMBERBACK string O 14 Číslo zásilky z vlastní číselné řady pro výměnnou zásilku
// REF1 string M 35 Reference zásilky <--- POVINNÉ
'REF1' => 'XXXXX', // reference zásilky
// REF2 string O 35 Reference zásilky
// REF3 string O 35 Reference zásilky
// REF4 string O 35 Reference zásilky
// HINSAMOUNT string O 10 Částka doplňkového pojištění
// HISCUR string C 3 Měna doplňkového pojištění
),
'Service_Combination' => array(
// Notification bool O 1 Private zásilky s notifikacemi a 1HP
// AirExpress bool O 1 Letecká přeprava
// DPDPack bool O 1 Zásilka s obálkou od DPD
// DPDBox bool O 1 Zásilka s krabicí od DPD
// DPD10 bool O 1 Doručení do 10:00
// DPD12 bool O 1 Doručení do 12:00
// DPD18 bool O 1 Garantované doručení druhý den do 18:00
// DPDGuarantee bool O 1 Garantované doručení druhý den do zahraničí
// Swap bool O 1 Výměnná zásilka
// DPDEvening bool O 1 Doručení ve večerních hodinách
// DPDPneu bool O 1 Produkt pro zasílání pneumatik
// ID_PS int O - ID výdejního místo pro doručení
),
'Additional_Services' => array(
// COD string O 10 Částka dobírky
// CURRENCY string C 3 Měna dobírky
// PAYMENT string C 1 Typ platby, 0 = hotově ; 1 = kartou i hotově
// PURPOSE string O 14 Variabilní symbol
// BANKCODE string C 25 Kód banky
// BANKNAME string C 27 Jméno banku
// ACCOUNTNUMBER string C 25 Číslo účtu
// ACCOUNTNAME string C 30 Jméno účtu pro odplacení dobírky
// IBAN string O 50 IBAN účtu
// BIC string C 50 BIC banky
// PERSDELIVERY string O 1 1 = doručeni na odděleni bez osobni identifikace
// 2 = osobni doručeni s osobni identifikaci typu IDCheck
// 3 = osobni doručeni bez osobni identifikace
),
)
);
// vytvoříme novou zásilku
// $res = $dpd->NewShipment($shipment);
// vrátí číslo zásilky atp. ke sledování potom
// print_R($res);
//--------------- ŠTÍTKY
/*
$res = $dpd->GetLabel(array(
'type' => 'PDF',
'parcelno' => array(
// seznam zásilek k tisku
)
));
print_r($res);
*/
//--------------- SVOZ
$res = $dpd->NewPickup(array(
'orderList' => array(
'parcelno' => array(
// seznam zásilek ke svozu
),
'date' => '20180202', // string M 8 Datum svozu ve formátu „yyyyMMdd“
// note string O 200 Poznámka ke svozu - nepovinné
)
));
print_r($res);
//--------------- ZJIŠTĚNÍ STAVU ZÁSILKY SE PROVÁDÍ PŘES DPDSTATUS
/**
* DPD Status
*/
$dstatus = new DpdStatus("uzivatel", "heslo");
$res = $dstatus->GetParcelStatus(array(
'parcels' => array(
// seznam zásilek pro zjištění stavu
)
));
print_r($res); // vrátí stav, zda bylo převzato atp.
<?php
/**
* MojeDPD API
*/
require 'class_MojeDpd.php';
// přístupy stejné jako webové přístupy do aplikace Moje DPD
$dpd = new MojeDpd('XXXX_UZIVATEL', 'XXX_HESLO');
# CELKOVÝ SEZNAM FUNKCÍ:
# Calculate Price - Provádí výpočet cen v závislosti na nastaveném ceníku
# Create Shipment - Vytváří zásilku
# Print Label for Shipment - Vytváří přepravní štítek zásilky
# Get Shipment Status - Vrací stav zásilky v závislosti na provedených skenech – událostech v přepravním cyklu zásilky
# Search Shipment - Vrací seznam zásilek dle vstupních parametrů (datum, zákazník, příjemce…)
# Create Pickup Order - Vytváří objednávku svozu.
# Pickup Order Status - Vrací stav objednávky svozu
# Delete Pickup Order - Maže objednávku svozu
# Search Missing Pickup Order - Vrací množství zásilek, pro které není pořízena objednávka svozu
# Search Pickup Order - Vrací seznam objednávek svozu dle vstupních parametrů
# Close Manifest - Uzavírá soupisku (manifest). Volitelně se štítky
# Delete Shipment - Maže zásilku
# Parcel status - Vrací stav balíku v závislosti na provedených skenech – událostech v přepravním cyklu zásilky (rozvoz, doručeno atd.)
# Get Shipment - Vrací data o zásilce
# Reprint Label for parcel - Opětovný tisk přepravního štítku balíku
# Reprint Manifest - Opětovný tisk seznamu zásilek (manifestu). Volitelně se štítky
# Update Shipment - Aktualizace parametrů zásilky
Historie změn
10.03.2023 - GeoAPI v1 JSON - Nová API (DPD GeoAPI dokumentace)
17.01.2022 - GeoAPI - aktualizace funkce pro tisk PDF štítků tak, aby tisklo štítky vedle sebe na A4 formát ✅
16.01.2022 - GeoAPI - drobné změny, verze v1.4.0
05.02.2021 - GeoAPI - drobné změny, verze v1.3.3
05.02.2021 - Doplněny informace k MojeDPD
13.01.2021 - Doplněny informace
22.07.2020 - Doplněny příklady k MojeDPD
31.10.2017 - Přidáno