Salamek/PplMyApi

API PPL problém

Closed this issue · 7 comments

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);
segy commented

Toto je ale celkom masochizmus... na tej masine nejde nainstalovat soap extension (ked uz teda nie priamo stiahnut tuto kniznicu) alebo preco?

Jaj,
předně díky za rychlou odpověď.

Rozjíždím svůj prodejní projekt. A taky mě baví (učím se) programovat. Chtěl jsem tedy spojit říjemné s užitečným ....

Kde je možné si tu knihovnu stáhnout?

Ještě jednou moc díky.

Luděk

segy commented

Spajat prijemne s uzitocnym je super, ale ja teda programovat nieco, co uz niekto vymyslel (credits to Salamek) za az tak uzitocne nepovazujem.

Na tu otazku, kde je to mozne stiahnut: Ked si sa dostal sem, predpokladam, ze si presiel aj cez page tohto repozitara (https://github.com/Salamek/PplMyApi). Je tam README a hned na zaciatku je kapitola Instalation.

Dufam, ze som pomohol

Jj, na toto jsem koukal. Přiznám se, že mě zabila hned první část - instalace Composer :-(

@LudekB pokud ve svem PHP projektu nepouzivas composer pro spravu zavislosti tak to uz delas spatne ;-) (na vetsine dister je to jen otazka apt install composer / pacman -Syu composer na widle bude nejakej silenej exe instalator)

Ale pokud nechces pouzivat composer (z libovolneho duvodu) tak si tento projekt muzes pridat jako git submodule do sveho projektu... no a pokud nepouzivas GIT pro spravu verzi... (coz by jsi mel ;-) ) tak si tento projekt muzes stahnout v archivu a rozbalit jej do sveho projektu viz https://github.com/Salamek/PplMyApi/archive/v1.2.7.zip

Nejmene prace je ale s composerem, takze si jej nainstaluj, zprovozni a pak v root dir tveho projektu das jen prikaz composer require salamek/ppl-my-api, v root dir tveho projektu to vytvori soubory composer.json composer.lock a slozku vendor:

  • composer.json obsahuje seznam zavislosti na kterych tvuj projekt zavisi (ted tam bude jen ppl-my-api)
  • composer.lock zjednodusene receno rika jakou presne verzi danych zavislosti z composer.json pouzit pri composer install
  • vendor obsahuje stazene zavislosti a soubor autoload.php

No kdyz je toto vsechno ok tak pro includnuti vsech zavislosti spravovanych pres composer staci includnout autoload.php v tvem bootstrap scriptu (treba zacatek index.php)

index.php:

<?php
require __DIR__ . '/vendor/autoload.php';

$pplMyApi = new Salamek\PplMyApi\Api();
if ($pplMyApi->isHealthy())
{
    echo 'Healthy :)' . PHP_EOL;
}
else
{
    echo 'Ill :(' . PHP_EOL;
}

Pokud pouzivas/planujes pouzit nejakou spravu verzi (pri nejlepsim GIT) tak composer.json a composer.lock patri do spravy verzi, slozka vendor ne (ta se vytvari prikazem composer install dle informaci v composer.json a composer.lock)

Snad ti to jako popostrceni spravym smerem staci, vice o danych technologiich ti rekne tvuj oblibeny internetovy vyhledavac (teda krome seznamu a bingu, tam najdes hovno 😄 )
Jinak composer doporucuji pouzivat na vsechny zavislosti co pouzivas, kazda slusna PHP knihovna je registrovana na https://packagist.org/ a tim padem dostupna pres composer stylem composer require CO_CHCI

Moc děkuju....
začínám se rozmotávat...
Snadnější bylo stáhnout : https://github.com/Salamek/PplMyApi/archive/v1.2.7.zip

Jenom teď nevím jak nastavit:

function nactiTridu($trida)
{
        require("PplMyApi/src/$trida.php");
}
spl_autoload_register("nactiTridu");

Všude jsou použitý jmenný prostory o kterých vím jen to, že existují :-(

Moc díky za pevné nervy se mnou

@LudekB no, reseni s composerem by zabralo minimum casu a do budoucna je to jedine spravne reseni jak resit zavislosti v PHP projektech...
reknu ti jak sprovoznit ppl-my-api bez composeru a bez spl_autoload_register a ty si to nabastli jak chces... jen upozornuji ze bez composeru bude tvuj projekt proste bastl:

<?php
/* Tohle vsechno normalne resi vendor/autoload.php generovany composerem, 
neni require __DIR__ . '/vendor/autoload.php'; preci jen kradsi ? :-D
Nemam paru jestli to bude fungovat, netestoval jsem to
*/
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/CargoType.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/Country.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/Currency.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/Depo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/ExternalNumber.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/Flag.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/LabelDecomposition.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/LabelPosition.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/ManipulationType.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/PackageService.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/Product.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/RouteType.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Enum/WrapCode.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Exception/NotImplementedException.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Exception/OfflineException.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Exception/SecurityException.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Exception/WrongDataException.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IColli.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Colli.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/EmptySender.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IExternalNumber.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/ExternalNumber.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IFlag.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Flag.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IOrder.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IPackage.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IPackageNumberInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IPackageService.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IPalletInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IPaymentInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IPickUpOrder.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IRecipient.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IRoute.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/ISender.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/ISpecialDelivery.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/IWeightedPackageInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Order.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Package.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/PackageNumberInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/PackageService.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/PalletInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/PaymentInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/PickUpOrder.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Recipient.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Route.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/Sender.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/SpecialDelivery.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Model/WeightedPackageInfo.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Validators/IValidator.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Validators/IValidatorLength.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Validators/MaxLengthValidator.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Api.php';
require __DIR__ . '/PplMyApi-1.2.7/src/ILabel.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Label.php';
require __DIR__ . '/PplMyApi-1.2.7/src/PdfLabel.php';
require __DIR__ . '/PplMyApi-1.2.7/src/Tools.php';
require __DIR__ . '/PplMyApi-1.2.7/src/ZplLabel.php';

// A tady teprve zacina normalni example cod z README.md
$pplMyApi = new Salamek\PplMyApi\Api();
if ($pplMyApi->isHealthy())
{
    echo 'Healthy :)' . PHP_EOL;
}
else
{
    echo 'Ill :(' . PHP_EOL;
}

Kdyz se na to tak divam, prosim pouzivej composer usetris tim cas sobe, i vsem okolo...