Geis Parcel API pro automatizovaný import zásilek – PHP skript

GEIS

PHP knihovna využívá Geis G-Service CZ a SK / G-Service EN / G-Service PL

  • Funguje pro CZ, SK, PL
  • Import zásilek
  • Tisk štítků a protokolu
  • Objednávka svozu
  • Výpis Geis Point poboček podle regionu, podle města, včetně možnosti disk-cache podle dnů
  • a všechny další funkce popsané v dokumentaci G-Service

Díky této knihovně už nemusíte generovat CSV, přihlašovat se do Geis, importovat CSV, ukládat CSV a tisknout štítky!
O všechno se postará API.

Mohu také poslat starší verzi skriptu, která pracuje ve formě HTTP parseru pro GClient, a oproti G-Service má potenciál větší funkčnosti. Ta ovšem funguje jen pro CZ.

Funguje PHP 5.3+, PHP 7

class_geis.php
Objednávka
(pro vlastní použití; zákaz samostatně dále šířit nebo prodávat; aktualizace dle dohody)

Fakturu zasílám obratem a skript po uhrazení, GDPR a obchodní podmínky zde.

Děkuji za zájem a věřím, že budete spokojeni.

Bezpečný nákup

Recenze je možno psát na firmy.cz a v případě dotazů mě kontaktujte.

Příklad použití

<?php
/**
* Ukázka použití Geis API
*/
require 'class_geis_v2.php';


try {
   
// přihlašovací údaje ke službě G-Service musíte vyžádat u Geis, jsou jiné než u GClienta
   
$G = new Geis(
       
$clientNumber = '70905941', $clientPassword = 'ws15511',
       
$service = 'CZ', // jiné hodnoty: SK, PL, PL2 (if you use etlogistik.com)
       
$testService = true // pokud probíhá jen testování
   
);
   
   
// $G->setEncoding('CP1250'); // UTF-8 je výchozí
   
   // nastaví výchozí distribuční kanál (výchozí je Geis::PARCEL)
   // $G->setDefaultDistribution(Geis::CARGO);
   
   
   //--------- V KNIHOVNĚ JSOU IMPLEMENTOVÁNY VŠECHNY FUNKCE Z GEIS DOKUMENTACE
   
   
echo '<h1>G-Service API</h1>';
   echo
'<pre>';

   
// zda služba běží a jaká verze
   
print_r( $G->IsHealthy() );
   
   
// vrací seznam manipulačních jednotek povolených pro zákazníka v primárním systému
   
print_r( $G->WrapList() );
   
print_r( $G->ServiceList() ); // výpis povolených služeb
   
print_r( $G->AddServiceList(10) ); // extras pro službu CODE=10 (parcel expedice)
   
   // vrátí datum příštího pracovního dne, pokud je před 12:00, tak vrátí stejný den
   
echo $G->getNextPossiblePickup(1200);
   
   
// objedná svoz
   
$G->CreatePickup('2019-02-06','732848164', 'mzvarik@gmail.com', $pocetBaliku = 1);
   
   
   
//-------------------------------
   // NOVÁ ZÁSILKA
   // Bude vyzvednuto na vaší svozové adrese
   
$receiver = Geis::getFullAddress(
       
'Jan Novák',
       
'Václavské nám. 100',
       
'Praha',
       
'11000',
       
'CZ',
       
'novak@jan.cz',
       
'603123456'
   
);
   
   
// Seznam balíků v zásilce (obvykle 1)
   // rozměry není nutno zadávat - popřípadě uvádět v metrech a stačí jen u prvního balíku
   
$packages = array();
   
$packages[] = array(0.5); // hmotnost_kg
   
$packages[] = array(0.72, 1.2, 0.33, 0.22); // hmotnost_kg | šířka | výška | délka
   
   
$ret = $G->InsertExport(
       
'2019-02-06', // den svozu
       
$receiver, // příjemce zásilky
       
$packages,
       
'Doručit ve 12 hodin', // poznámka řidiči
       
array(150, 'CZK', '55555'), // dobírka, měna, variabilní symbol
       
false, // zda poslat příjemci balíku potvrzovací email
       
'balik_01', // reference zásilky (volitelně)
       
true, // zda jde o soukromou adresu (B2C)
       
'' // Geis Pickup Point - ID destinace
   
);
   echo
$ret->PackNumber;
   
// pokud jste poslali více balíků
   
$additionalPackNumbers = (array) $ret->MergedPackNumbers->string;
   
   
   
//------------
   // NOVÁ OBJEDNÁVKA - z místa A do B (není nutno objednávat svoz)
   // například pokud vám zákazník něco posílá nazpět
   
$sender = Geis::getFullAddress(
       
'Jana Krásná',
       
'Krásnohorská 100',
       
'Brno',
       
'50000',
       
'CZ',
       
'jana@krasnohorska.cz',
       
'731888999'
   
);
   
$ret = $G->InsertOrder( // tato funkce je shodná s InsertExport, ale začíná odesílatelem
       
$sender, // odesílatel zásilky
       
'2019-02-06', // den svozu
       
$receiver, // příjemce zásilky
       
$packages
   
);
   echo
$ret->PackNumber;
   
   
   
//------------
   # VRÁTÍ PDF ŠTÍTKY
   
$shipmentNumbers = array('35700145379', '35700145380', '35700145381');
   
// $G->GetLabel($shipmentNumbers, $Position = 1); // vrátí PDF string
   
$G->PrintLabel($shipmentNumbers); // vytiskne PDF
   
   # SEZNAM ZÁSILEK
   
$shipments = $G->ListOfShipments('2019-02-06');
   
print_r($shipments);
   
   
# INFORMACE O ZÁSILCE
   
$detail = $G->ShipmentDetail('35700145389');
   
print_r($detail);
   
   
# STAV ZÁSILKY
   
$status = $G->ShipmentStatus('35700145389');
   
print_r($status);
   
   
# STORNO ZÁSILKY
   
$res = $G->DeleteShipment(array('35700145385', '35700145379'));
   
print_r($res);
   
   
# PICKUP LIST PROTOCOL - vrací předávací protokol
   // $G->GetPickupList('2019-02-06'); // vrátí PDF string
   // $G->PrintPickupList('2019-02-06'); // vytiskne PDF
   
}
catch (
Exception $e)
{
   echo
'<div style="color:#000;padding:10px;margin:10px;font-family:Tahoma;font-size:13px;font-weight:bold">';
   echo
'Geis Error ['.$e->getCode().']: '.$e->getMessage();
   echo
'</div>';
}


//------ PŘÍKLAD POUŽITÍ GEIS POINT POBOČEK
require 'class_geispoint.php';

$GPOINT = new GeisPoint();
$GPOINT->setCache(2); // nastaví cache na 2 hodiny, jinak dejte 0 pro aktuální výpisy
$GPOINT->setOrdering(true); // seřadí pobočky podle města, ulice, názvu - jinak nejsou řazené

$regions = $GPOINT->getRegions('CZ');
print_R($regions);

$cities = $GPOINT->getCities('CZ', 19);
print_R($cities);

$pobocky = $GPOINT->searchGP('CZ');
print_R($pobocky);

$info = $GPOINT->getGPDetail('GP11000301');
print_R($info);

Časté otázky

Při objednání svozu je nutno znát předem počet balíků?

Stejně jako v GClient (webová správa Geis) je to povinný údaj, nicméně v praxi ten sloupec považujte za orientační a klidně tam nechte vždy 1 balík.

Následně můžete importovat třeba 20 balíků anebo žádný a dopravce stejně přijede pro svoz!

Importoval jsem balík a potřebuji změnit adresu.

Geis API je oddělené od GClient a importované balíky nelze v jejich administraci měnit. Nelze je měnit ani přes toto API. Jediná možnost je balík stornovat a importovat znovu.

Individuální napojení na Váš eShop

V případě zájmu o individuální napojení na Váš eshop na míru nebo wordpress (woocommerce), Shoptet, Magento, ale i systémy na jednotné doméně jako UPgates mě kontakujte. V podstatě stačí pokud Váš eshop umožňuje export objednávek a můžete jedním klikem vložit všechny objednávky k odeslání přímo do GEIS, hromadně vytisknout štítky a protokoly.

CLI rozhraní

K dispozici také možnost ovládat přes příkazový řádek (cmd.exe) a import zásilek přes TXT soubor s detekcí všech chyb.

Historie změn

26.05.2019 - Plugin pro Wordpress (úplná integrace s GEIS)
24.05.2019 - Doplněna třída Geis Point pro výpis poboček
01.01.2019 - Geis v2, aktualizace funkcí
22.11.2018 - CLI (příkazový řádek) rozhraní
10.07.2018 - Upgates rozhraní
03.05.2018 - Drobné změny, přidána volba formátu tisku štítků
01.04.2017 - Změna z HTTP API na G-Service
17.12.2016 - Přidáno

Poslední zpětné linky