SOAP-запрос работает с почтальоном, а не с PHP - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь вызвать функцию, доступную в словацком почтовом отделении через SOAP.

Они опубликовали свой WSDL по адресу https://mojezasielky.posta.sk/integration/webServices/api?wsdl

. Я уже зарегистрировался и успешно использовал их услуги, создав XML, который отправляется через Почтальон.Хотя у меня есть проблема, чтобы заставить его работать в PHP - он всегда возвращает ошибку, в которой говорится, что пользователь не был найден, что не имеет смысла (ошибка SOAP-ENV: Server user_not_found).

В PHP япытаюсь назвать это так (не работает):

$params = array(
    'apiKey' => "123abc",
    'userId' => "abc123",
    'EPH' => $ephString // the long XML specified later in the question. I know I should use objects, this is just for testing purposes

);
try {
    $wsdl = 'https://mojezasielky.posta.sk/integration/webServices/api';

    $client = new SoapClient($wsdl, $params);
    $requestResponse = ($client->__soapCall("importSheet", $params));
    echo $requestResponse;
} catch (SoapFault $exception) {
    echo $exception;
}

Вот мой XML-запрос (не обращайте внимания на комментарии, он просто объясняет, что это за конкретные значения)

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
    <Body>
        <importSheetRequest xmlns="http://mojezasielky.posta.sk/api">
            <auth>
                <userId>idOfUserAcc</userId>
                <apiKey>theSuperSecretAPiKey</apiKey>
            </auth>
            <EPH>
               <InfoEPH>
                  <Mena>EUR</Mena>
                  <TypEPH>1</TypEPH> <!-- 1 = EPH - vzdy sa zadava len cislo 1 pri podaji -->
                  <PocetZasielok>1</PocetZasielok> <!-- Tu tiez necham cislo 1, vzdy budem po jednom podavat-->
                  <DruhZasielky>1</DruhZasielky> <!-- 1 doporuceny, 2 poisteny, 8 expres kurier, 15 easy express 1, 16 easy express 10, pozor, pre nemecko nesmie byt poisteny! -->
                  <Odosielatel>
                     <OdosielatelID />
                     <Meno>Name Surname</Meno>
                     <Organizacia>Company s.r.o.</Organizacia>
                     <Ulica>Narodna 1</Ulica>
                     <Mesto>Bratislava</Mesto>
                     <PSC>85101</PSC>
                     <Krajina>SK</Krajina>
                     <Email>me@notyou.com</Email>
                  </Odosielatel>
               </InfoEPH>
               <Zasielky>
                  <Zasielka>
                     <Adresat>
                        <Meno>zahranicie test bez cislo uctu</Meno>
                        <Organizacia /> <!-- povinna len ak je vyplnene meno + moze ostat prazdna -->
                        <Ulica>cokolvek</Ulica>
                        <Mesto>hocico</Mesto>
                        <PSC>10000</PSC>
                        <Krajina>DE</Krajina> <!-- 2znakovy iso kod -->
                     </Adresat>
                     <Info>
                        <CenaPoistneho>100</CenaPoistneho>
                     </Info>
                  </Zasielka>
               </Zasielky>
            </EPH>
        </importSheetRequest>
    </Body>
</Envelope>

Конфигурация заголовков почтальона (работает с указанным XML) Postman headers configuration

Как мне использовать мыльный клиент PHPs, чтобы он работал?

1 Ответ

0 голосов
/ 20 марта 2019

У вас неверные аргументы (auth узел должен содержать userId и apiKey).Попробуйте следующее:

$wsdl = 'https://mojezasielky.posta.sk/integration/webServices/api?wsdl';
$args = [
    'auth' => [
        'userId' => 'YOUR_SECRET_ID',
        'apiKey' => 'YOUR_SECRET_KEY',
    ],
    'EPH' => $ephString,
    'contract' => false,
];
$soap = new SoapClient($wsdl);
$response = $soap->importSheet($args);

См. Также Руководство по API EPH и техническая спецификация для eHarok .

...