За последние 24 часа нас посетили 17752 программиста и 1712 роботов. Сейчас ищут 999 программистов ...

Программирование веб-сервиса (SOAP)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Forest52, 8 апр 2015.

  1. Forest52

    Forest52 Новичок

    С нами с:
    8 апр 2015
    Сообщения:
    1
    Симпатии:
    0
    Всем привет. Народ выручайте. Хочу для своего сайта сделать веб сервис, но до конца не пойму как это сделать.
    Вот сам php

    Код (PHP):
    1. <?php
    2.     $login            = "Ваш логин для входа на сайт http://www.part-kom.ru";
    3.     $pass             = "Ваш пароль для входа на сайт http://www.part-kom.ru";
    4.     $searchWSDL       = "http://www.part-kom.ru/webservice/search.php?wsdl";
    5.     $orderWSDL        = "http://www.part-kom.ru/webservice/order.php?wsdl";
    6.     $partNumber       = 911;
    7.     $makerId          = -1;
    8.     $neededProviderId = 16;
    9.  
    10.     $searchClient = new SoapClient($searchWSDL);
    11.  
    12.     echo "Получаем всех возможных производителей для артикула $partNumber<br>";
    13.     $possibleMakers = $searchClient->getMakersByNumber($login, $pass, $partNumber);
    14.  
    15.     foreach ($possibleMakers as $maker) {
    16.         if (strtoupper($maker["name"]) == "TSN") {
    17.             $makerId = $maker["id"];
    18.         }
    19.     }
    20.  
    21.     if ($makerId == -1)
    22.         die("Не удалось получить ID необходимого производителя");
    23.  
    24.     echo "Ищем деталь: $partNumber, id производителя = $makerId<br>";
    25.     $parts = $searchClient->findDetail($login, $pass, $partNumber, $makerId, false, true, false);
    26.  
    27.     if (count($parts) < 1)
    28.         die("Не найдено ни одной детали");
    29.  
    30.     echo "Проверяем есть ли деталь на нужном нам складе id = $neededProviderId<br>";
    31.     $partsToOrder = array();
    32.     foreach ($parts as $part) {
    33.         if ($part["providerId"] == $neededProviderId) {
    34.             echo "Деталь найдена! Создаём коллекцию объектов OrderItem<br>";
    35.             $partsToOrder[] = (object)array(
    36.                 "detailNum" => $part["number"],
    37.                 "makerId" => $part["makerId"],
    38.                 "description" => $part["description"],
    39.                 "price" => $part["price"],
    40.                 "providerId" => $part["providerId"],
    41.                 "reorderAgreement" => false,
    42.                 "comment" => "Для Валеры"
    43.             );
    44.         }
    45.     }
    46.  
    47.     if(count($partsToOrder) < 1)
    48.         die("На нужном нам слкаде $neededProviderId деталь $partNumber отсутствует");
    49.  
    50.     echo "Коллекция создана, переходим к тестовому заказу<br>";
    51.     $orderClient = new SoapClient($orderWSDL);
    52.  
    53.     echo "Закзываем... <br>";
    54.     $notOrderedItems = $orderClient->makeOrderTest($login, $pass, $partsToOrder);
    55.  
    56.     if (count($notOrderedItems) < 1) {
    57.         echo "Все детали успешно заказаны";
    58.     } else {
    59.         echo "<br><br>Приведенные ниже детали не попали в заказ:<br><br>";
    60.         foreach ($notOrderedItems as $item) {
    61.             echo "Артикул: {$item->detailNum} ".
    62.                  "Код ошибки: {$item->errorCode} ".
    63.                  "Сообщение: {$item->errorMessage}<br>";
    64.         }
    65.     }
    66. ?> 
    В верху заполняю необходимые данные и при выполнении php выдает следующее

    "; $possibleMakers = $searchClient->getMakersByNumber($login, $pass, $partNumber); foreach ($possibleMakers as $maker) { if (strtoupper($maker["name"]) == "TSN") { $makerId = $maker["id"]; } } if ($makerId == -1) die("Не удалось получить ID необходимого производителя"); echo "Ищем деталь: $partNumber, id производителя = $makerId
    "; $parts = $searchClient->findDetail($login, $pass, $partNumber, $makerId, false, true, false); if (count($parts) < 1) die("Не найдено ни одной детали"); echo "Проверяем есть ли деталь на нужном нам складе id = $neededProviderId
    "; $partsToOrder = array(); foreach ($parts as $part) { if ($part["providerId"] == $neededProviderId) { echo "Деталь найдена! Создаём коллекцию объектов OrderItem
    "; $partsToOrder[] = (object)array( "detailNum" => $part["number"], "makerId" => $part["makerId"], "description" => $part["description"], "price" => $part["price"], "providerId" => $part["providerId"], "reorderAgreement" => false, "comment" => "Для Валеры" ); } } if(count($partsToOrder) < 1) die("На нужном нам слкаде $neededProviderId деталь $partNumber отсутствует"); echo "Коллекция создана, переходим к тестовому заказу
    "; $orderClient = new SoapClient($orderWSDL); echo "Закзываем...
    "; $notOrderedItems = $orderClient->makeOrderTest($login, $pass, $partsToOrder); if (count($notOrderedItems) < 1) { echo "Все детали успешно заказаны"; } else { echo "

    Приведенные ниже детали не попали в заказ:

    "; foreach ($notOrderedItems as $item) { echo "Артикул: {$item->detailNum} ". "Код ошибки: {$item->errorCode} ". "Сообщение: {$item->errorMessage}
    "; } } ?>

    Я просто не силен в php. Я так понимаю необходимо поля (например $partsToOrde) где то прописать как переменные, чтобы в них выводилась информация?

    А вот тот описание входных и выходных параметров.
    [​IMG]

    Смысл веб сервиса в том, чтобы при указании необходимого артикула товара (в нашем случае 911) происходит автоматический поиск наличия и цен товара. Данный веб сервис предоставляет сайт part-kom.ru. Тех. поддержка мало чем помогла.....
    Ребят помогите разобраться...