GithubHelp home page GithubHelp logo

salamek / pplmyapi Goto Github PK

View Code? Open in Web Editor NEW
26.0 8.0 35.0 295 KB

Professional Parcel Logistic MyApi PHP client implementation with PDF and ZPL label generator

License: GNU Lesser General Public License v3.0

PHP 96.89% Zimpl 3.11%
ppl ppl-myapi php api-client dhl labels sprint-routes

pplmyapi's People

Contributors

alexkratky avatar andriyfil avatar edgering avatar hary28 avatar jan-kratochvil avatar jangalek avatar krajcikondra avatar mirekratman avatar paveltizek avatar pavolbiely avatar sajfi avatar salamek avatar samotlark avatar samuelszabo avatar simplesscz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pplmyapi's Issues

DepoCode need update request

DepoCode need update request. Currently the system only supports ranges 1 to 24. Request to add support for the following: 41, 44, 46, 48, 61, 62, 65, 66, 67, 96, 98, T2 or rework the setDepoCode method so that it does not throw exception

Product::EXPORT_PACKAGE_COD not working

Hi,

i trying to send a EXPORT package with DOB in the same way "createPackages" for CZ Privat and CZ Business with DOB.

The problem is that the reply message is NULL without error but the package was not created.

Can someone check this or test is if he has the same?

Thank you
Dominik

Margins in pdf file

Discussed in #82

Originally posted by AndriyFil February 12, 2024
Hi, I have small bug when for the barcode we need more space, I've changed these values making less at 1 point and it seems better, could u check it and implement to your library?
image

Before:
image

After:
image

Problem se zprovoznenim

nedari se mi zprovoznit komunikaci s PPL. Pokud otestuji komunikaci dle prikladu

`use Salamek\PplMyApi\Api;

$pplMyApi = new Api();
if ($pplMyApi->isHealthy())
{
echo 'Healthy :)' . PHP_EOL;
}
else
{
echo 'Ill :( --- proste neco je f ....' . PHP_EOL;
}
`
dozvim se, ze je to Healthy :).

Pokud se ale podle prikladu pokusim vytvorit balik

`
use Salamek\PplMyApi\Api;
use Salamek\PplMyApi\Model\Package;
use Salamek\PplMyApi\Model\Recipient;
use Salamek\PplMyApi\Enum\Country;
use Salamek\PplMyApi\Enum\Product;

$username = 'my_api_username';
$password = 'my_api_password';
$customerId = 'my_api_customer_id';

$pplMyApi = new Api($username, $password, $customerId);

$recipient = new Recipient('Olomouc', 'Adam Schubert', 'My Address', '77900', '[email protected]', '+420123456789', 'https://www.salamek.cz', Country::CZ, 'My Compamy a.s.');

$packageNumber = '40950000114';
/* Or you can use Tools::generatePackageNumber to get this number only from $packageSeriesNumberId like 114
$packageSeriesNumberId = 114;
$packageNumberInfo = new PackageNumberInfo($packageSeriesNumberId, Product::PPL_PARCEL_CZ_PRIVATE, Depo::CODE_09);
$packageNumber = Tools::generatePackageNumber($packageNumberInfo); //40950000114
*/
$package = new Package($packageNumber, Product::PPL_PARCEL_CZ_PRIVATE, 'Testovaci balik', $recipient);

try
{
$pplMyApi->createPackages([$package]);
}
catch (\Exception $e)
{
echo $e->getMessage() . PHP_EOL;
}
`
(samozrejme ze mam vyplnene realne prihlasovaci udaje) na strance se nevypise nic ale v error logu ctu tuto zpravu:

PHP Catchable fatal error: Argument 5 passed to Salamek\PplMyApi\Model\Package::__construct() must be an instance of Salamek\PplMyApi\Model\ICityRouting, none given, called in /data/www/domeny/xxx.cz/www/adresar/ppl-test-balik.php on line 44 and defined in /data/www/domeny/xxx.cz/vendor/salamek/ppl-my-api/src/Model/Package.php on line 91

Dekuji z radu.

Pridani packageNumber kontrola jestli je string

Ahoj,

trosku jsem se ted zapotil, zadaval jsem packageNumber do tridy Package jako cislo ne jako string.

Vim ze tam mas v dokumentaci string, ale nejak jsem to prehledl.

Kvuli tomu kazdopadne zacalo dochazet k chybe TCPDF v souboru tcpdf_barcodes_1d.php, funkce checksum_s25.

Kdyz se tvori stitek tak pouzivas carovy kod typ I25+ coz je I25 i s checksumem, ktery se prave dela ve funkci uvedene vyse checksum_s25 a ta potrebuje aby packageNumber byl string.

Tak mam jen takovy navrh na zlepseni pro hlupaky jako ja ve tride Package kdyztak typecast na string pokud by to tam nekdo zadal jako cislo.

Mi trvalo snad 2 hodiny nez jsem zjistil, co je v carovem kodu spatne a tim vsim prolezl abych si vsiml ze chyba je na moji strane.

myAPI ukončeno

PPL již MyAPI nepodporuje, provoz neschválí. Přešli na CPL - API. Štítky už generují na své straně.

return type

public function getParcelShops(string $code = null, string $countryCode = Country::CZ, string $accessPointType = null, bool $activeCardPayment = null, string $city = null, float $latitude = null, float $longitude = null, int $radius = null, string $zipCode = null): array

na konci mas :array ... kdyz to u sebe zmenim na :mixed tak mi to funguje, jinak to vraci chybu Return value must be of type array, stdClass returned

Sender.php, Recipient.php - setStreet(), setCity(), setName()... character limit diacritics issue

Hi,

in Sender.php and Recipient.php, there is an issue with setXXXX() functions in case when diacritics are included in the string.
Function strlen() counts 1 character with diacritic as 2 characters, which can lead to the issues.

strlen('Dukelských bojovníků 155/3638'); //32
mb_strlen('Dukelských bojovníků 155/3638'); //29

I'm not sure whether PPL counts with the diacritics or not, but I would recommend either using mb_strlen() instead of strlen() or stripping the diacritics off from all the user input data.

Thanks for the fix.

Login

Login doesn't work? "Fatal error: Uncaught Salamek\PplMyApi\Exception\SecurityException: Pokus o přihlášení byl neúspěšný, zkontrolujte uživatelské jméno a heslo"

PackageSet

pri createPackages sa neodesila PackageSet, tedy hodnoty packageCount a packagePosition

jiz se to resilo v issue #38 , tehdy to nebylo povinne, nyni je tato polozka PPL vyzadovana

PPL problem

Dobry den, je na vas nejake emailove spojeni? Integruju ppl import do nasi aplikace a spolupracuju u toho s integracnim specialistou z ppl a pouzivam vase api a par veci mu na tom vadi. Napriklad ve funkci Tools:generatePackageNumber kde predgenerujete ctyri cisla podle typu produktu, id depa, dobirka-bez dobirky pry neni aktualni. Je mozne ze to pouzivam spatne. Diky.

Vlastní $storage chybka

Pokud použiji vlastní $storage při inicializaci Api (abych mohl pracovat s více auth tokeny - více userů), tak mi tam knihovna na konec přidá /Api a pak dostanu tuhle chybu...

Message: file_put_contents(/tmp/PPL_2/Api): failed to open stream: No such file or directory

Řešením je buď odstanit to přidávání /Api nebo změnit lomítko, obojí funguje:

obrazek

Neprechádza mi request

Podľa pokynov chcem pridať balík pomocou metódy createPackages. Na mojej strane vyzerá všetko OK, pri výpise mi však balík nenájde a tým pádom request zrejme neprechádza

výber kódu

$recipient = new Salamek\PplMyApi\Model\Recipient('Olomouc', 'Adam Schubert', 'My Address', '77900', '[email protected]', '+420123456789', 'http://www.salamek.cz', Country::CZ, 'My Compamy a.s.');
$package = new Salamek\PplMyApi\Model\Package($packageNumber, Product::PPL_PARCEL_CZ_PRIVATE, $weight, 'Testovaci balik', Depo::CODE_09, $recipient);
$pplMyApi->createPackages([$package]);

nevyskočí mi žiadna chyba. testovacie údaje mám z podpory. uvádzam request aj response


REQUEST HEADERS:
POST /MyAPI.svc HTTP/1.1
Host: myapi.ppl.cz
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.1.22
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://myapi.ppl.cz/v1/IMyApi2/CreatePackages"
Content-Length: 1541

REQUEST BODY:

RUFBQUFJakpFWllfdHBKbmxhTzlsVDQ0TFJqWW90X1hrSzh2MWxBV1hrQnVnYjl1cGU4cnpDdlBSOFpwX1hMd0JheEFnaURwS0wzRTVwM0VLLTdlOTZvZEVINXJxTkhrZDRTSTlURzZYazZEdEljdlVrSFQ5T2tQUXA2Q3V5T2c5dl9ZYXB2cy1CcWQxQ24wRnlIOEVZWXluMmc0NjBHa21UM2FBMVJlSDJiMkh6N2M4YzVtbEk0NThjUzlhZzBWdlplckdONkxZakxKUVlEWWh0ckI2QjlSSjV6ZEY0cFU4cFJpX2tSTHNFdU9jY3BvSmVtclByZmV2X3lmTjc0ay1YSUZydzI=4005058832913Testovaci balik09Olomouchttp://[email protected] SchubertMy Compamy a.s.+420123456789My Address77900


RESPONSE HEADERS:
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Length: 763
Content-Type: text/xml; charset=utf-8
Server: 
Strict-Transport-Security: max-age=31536000
X-Frame-Options: DENY
X-Powered-By: 
X-Powered-By: 
Date: Mon, 01 Oct 2018 20:13:50 GMT


RESPONSE BODY:
RUFBQUFCY3FWNkg3cTBka0EtSU9zTTZmN2Fmcmxvd25YX2szTFNNNHd1QTZaQ0lZaEp4Q2xBRVU4MTJWT0xDSlJ2ejFGRXk1Zkd3RC1HVWkwRTZMcTE2d1VNUV80c05DSk1scHFOdlRnakpTUFExSEhzc05UT2NkT1oyekw0YlVXd3JTUk1QaGswMS05VXVVR0VTOWh5d1IxSFRhdEhoSm04a2xQTVhsY1VBS0s1TFpMWnBTZG9KNlNuQmRjNWxzeFZlV242cDFfVW5kb2FHWlZ0OVd3SUtCd2VmODVBVENMdF9ZQU5oUkNMSVRSMllHWnFpdThIdDdzTDBkZG9mcy1WTm5aQTI=040050588329)

viete prosím poradiť čo robím zle?

Typo in createPickupOrders

I noticed there's a minor typo in the createPickupOrders method within the Api.php class.
The soap request parameter 'MyApiPickUpOrderIn' should be 'MyApiPickupOrderIn' based on the official PPL myApi documentation.
Would it be possible to fix it ?

myAPI_Dokumentace_v2.6.14072020.pdf

Incorrect WeightedPackageInfo parameter name

I'm using v1.3.3 for project compatibility reasons (can't use the newest version, don't have the PHP v7 support), anyway as a browse the code, the problem occurs in the newest version as well.

In Api.php file on line 475, key name should be WeightedPackageInfo instead of WeightedPackageInfoIn. I've checked it against the current WSDL version.

Currently, the WeightedPackageInfo is not sent to API at all.
When I changed it manually in my project, it worked.

Would it be possible to update the file?

Thank you.

Can't create Package

Hello, I encountered such a problem, I want to create a package and do everything according to your documentation, but the package does not meet (at least it does not appear on https://klient.ppl.cz/zasilka.aspx), the server is responding (Code : "0", ITEMKEY: "40950942614", Message: null). Tell me what am I doing wrong !? Thank you in advance

    $recipient = $this->getRecipient();
    $sender = $this->getSender();
    $weight = 0.5;
    $packageSeriesNumberId = 942614;
    $packageNumberInfo = new PackageNumberInfo($packageSeriesNumberId, 
               Product::PPL_PARCEL_CZ_BUSINESS_COD, Depo::CODE_09);
    $packageNumber = Tools::generatePackageNumber($packageNumberInfo);


    $package = new Package($packageNumber, Product::PPL_PARCEL_CZ_PRIVATE, 
               $weight, null, Depo::CODE_09, $recipient, $sender);

    try
    {
        dump($this->ppl->createPackages([$package]));
    }
    catch (\Exception $e)
    {
        echo $e->getMessage() . PHP_EOL;
    }

by city?

Ahoj, proc z Api zmizela metoda getParcelShopsByCity? Potrebuji vytahovat jen parcelshopy pro dane mesto a prislo mi to fajn. Dik

API PPL problém

Dobrý den,
moc prosím, proč toto nefunguje? (přihlašovací údaje zde samozřejmě neuvádím)

<?php

/* 
 *      přidá novou zásilku do PPLka
 */

mb_internal_encoding("UTF-8");

$mojeID = '';
$mojeHeslo = '';
$mojePrihlasovaciJmeno = '';


/*
 *      dotaz - logování pro získání HASHe k provedení následných úkonů
 */

$xmlProHash = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://myapi.ppl.cz/v1\"> <soapenv:Header/>
                <soapenv:Body>
                <v1:Login> <v1:Auth>
                    <v1:CustId>$mojeID</v1:CustId>
                    <v1:Password>$mojeHeslo</v1:Password>
                    <v1:UserName>$mojePrihlasovaciJmeno</v1:UserName>
                </v1:Auth> </v1:Login>
                </soapenv:Body> </soapenv:Envelope>";


$url = 'https://myapi.ppl.cz/v1/IMyApi2/Login';


function sendXmlOverPost($url, $xml) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);

	// For xml, change the content-type.
	curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml"));

	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ask for results to be returned

	// Send to remote and return data to caller.
	$result = curl_exec($ch);
	curl_close($ch);
	return $result;
}
/*
 *      test výstupu
 */
$result = sendXmlOverPost($url, $xmlProHash);

echo '<pre>';
var_dump($result);
$a = simplexml_load_string($result);
var_dump($a);

PackageSet

pri createPackages sa neodosiela PackageSet, teda hodnoty packageCount a packagePosition

Allow to set the first label position on page when generating labels using quarter decomposition.

I would like to be able to set first label position on page when generating labels using quarter decomposition.

When you print only one label, use it and later on you would like to reuse the rest of the paper, you have to start printing labels from 2nd, 3rd or 4th position on the paper. It would be useful to allow configuration of the starting position in function call.

Currently it's hardcoded like that:
$quarterPosition = LabelPosition::TOP_LEFT;

It would be useful to move it to method parameter with default value.

Could not load

Zdravím,

chci se zeptat proč po dvou dnes testování mi najednou API hází tento error? (do API contructoru jsem si jen přidal error message). Na kód sem od včera nijak nesahal, najednou toto.

Failed to build soap client: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https:\/\/myapi.ppl.cz\/MyApi.svc?singleWsdl' : failed to load external entity \"https:\/\/myapi.ppl.cz\/MyApi.svc?singleWsdl\"\n

Díky, Rukes :)

Chybějící povinné pole v CreatePackages

Obchoďák stále není spokojen a vymýšlí hlouposti v metode CreatePackages chybí tyto věci:

<Flags> <MyApiFlag> <Code>SL</Code> <Value>1</Value> </MyApiFlag> </Flags>

Dále vícekusé balíky - i když balík není vícekusý a nebudeme je používat, podle dokumentace je to pole povinné: PackageSet a MasterPackNumber

Chyba při generování barcode?

Zdravím přátelé,

Integruji do svého eshopu PPL a chtěl bych využít tohle řešení ke generování a tisknutí štítků k objednávkám. Úspěšně sem tedy prošel nastavením všeho potřebného až sem se dostal k samotnému generování ZPL a PDF souboru obsahující objednávku. Vše se povedlo v pořádku jediný problém mám že když přečtu barcode (at už ten example co je v testu nebo ikdyž si udělám vlastní PDF , ZPL) tak tam mám vždy nakonci nějakou číslici navíc. Zkoušel sem čtečku přes mobil zkoušel sem i kod vyříznout a zkoušel to protáhnout barcode readery online a vždy tam mám číslo navíc.
Zde screenshot:
https://imgur.com/a/t6Ilg6W
číslo té objednávky by mělo být 40950000196
Nevím proč tam je ta nula navíc. Můžete mi prosím případně někdo říct kde je chyba případně ověřit že se nejedná o bug?

Děkuji moc jinak skvělá práce.

Parcelshopy a číselné řady

Když si pomocí Tools::generatePackageNumber chci vygenerovat package number pro parcelshop (product type 46/47) tak dostanu exception Unknown packageProductType

V Enum/Product jsou to konstanty PPL_PARCEL_CZ_SMART a PPL_PARCEL_CZ_SMART_COD

Jinak pro parcelshopy jsme dostali číselnou řadu 71200042447 a pro dobírku 71280086080 (podle dokumenatce 8 a 9 znamená dobírku ... tady je zrovna ten případ kdy tam místo 9 dají 8 a pro nedobírku 0)

Parcelshop a pořadí dat na štítku

Tak pan obchoďák nám to zase nechce uznat...vadí mu, že označení parcelshopu (name2) máme dole u telefonního čísla. Má být pod jménem příjemce.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.