Примеры кода клиента веб-сервиса (SOAP)

Пример клиента для PHP-приложений.

С использованием REST API
<?php

$domain           
"http://www.part-kom.ru";
$login                'clientLogin'//Ваш логин для входа на сайт http://www.part-kom.ru;
$password             'clientPassword'//Ваш пароль для входа на сайт http://www.part-kom.ru;
$searchPartUrl        '/engine/api/v3/search/parts'//url скрипта поиска детали
$brandsByNumberUrl    '/engine/api/v3/search/brands';
$orderUrl             '/engine/api/v3/order';

$partNumber       911//артикул детали
$makerName        'TSN'//название производителя.
$quantity         2//заказываемое количество
$comment          'test'//комментарий к заказу
$reference        '456YY'//идентификатор заказа в вашей системе. По нему можно будет отслеживать изменение состояния заказа
$findSubstitutes  0//Флаг для поиска с заменами и аналогами или без них.
$store            1//Флаг для поиска только в наличии склада «ПартКом».
$neededProviderId 16//Номер склада, с которого надо сделать заказ
$customerPickup   true//Флаг для заказа с самовывозом
$reorderAgreement true//Флаг для заказа с возможностью перезаказа

$flagTest true//Флаг, указывающий на то, что запрос отправляется в тестовом режиме: заказ не будет оправлен в работу. 
$returnOnSuccess true//Если флаг выставлен в true, то в ответе будут возвращены заказанные детали 
$generateReference true//Если флаг выставлен в true, для заказанных деталей автоматически будет сформирован идентификатор


//Получаем всех возможных производителей для артикула $partNumber

$ch curl_init("{$domain}{$brandsByNumberUrl}?number={$partNumber}");

curl_setopt($chCURLOPT_USERPWD$login.':'.$password);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_TIMEOUT60);
curl_setopt($chCURLINFO_HEADER_OUTtrue);
curl_setopt($chCURLOPT_HTTPHEADER, array(
    
'Accept: application/json',
    
'Content-type: application/json'
));


$data curl_exec($ch);
curl_close($ch);

$makers json_decode($data);

$makerId  false;
foreach (
$makers as $maker) {
    if (
strtoupper($maker->name) == $makerName) {
        
$makerId $maker->id;
    }
}

if (!
$makerId)
    die(
"Не удалось получить ID необходимого производителя");


//Ищем деталь: $partNumber, id производителя = $makerId

$ch curl_init("{$domain}{$searchPartUrl}?number={$partNumber}&maker_id={$makerId}&find_substitutes={$findSubstitutes}&store={$store}");

curl_setopt($chCURLOPT_USERPWD$login.':'.$password);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_TIMEOUT60);
curl_setopt($chCURLOPT_HTTPHEADER, array(
    
'Accept: application/json',
    
'Content-type: application/json'
));

$data curl_exec($ch);
curl_close($ch);

$parts json_decode($data);

if (
count($parts) < 1)
    die(
"Не найдено ни одной детали");


//Проверяем есть ли деталь на нужном нам складе id = $neededProviderId

$partsToOrder = array();
foreach (
$parts as $part) {
    if (
$part->providerId == $neededProviderId) {
        
//Деталь найдена! Создаём коллекцию объектов OrderItem

        //Если заказ надо сделать с самовывозом и у детали есть возможность заказа с самовывозом, то передаем параметр самовывоза
        
$partCustomerPickup false;
        if (
$customerPickup && $part->customerPickup) {
            
$partCustomerPickup true;
        }
        
$partsToOrder[] = array(
            
'detailNum' => $part->number,
            
'makerId' => $part->makerId,
            
'description' => $part->description,
            
'price' => $part->price,
            
'providerId' => $part->providerId,
            
'reorderAgreement' => $reorderAgreement,
            
'quantity' => $quantity,
            
'comment' => $comment,
            
'customerPickup' => $partCustomerPickup
        
);
    }
}

if(
count($partsToOrder) < 1)
    die(
"На нужном нам слкаде $neededProviderId деталь $partNumber отсутствует");


//Коллекция создана, переходим к тестовому заказу

$params = array('flagTest' => $flagTest,
                
'returnOnSuccess' => $returnOnSuccess,
                
'generateReference'=> $generateReference,
                
'orderItems'=> $partsToOrder);

$ch curl_init($domain.$orderUrl);

curl_setopt($chCURLOPT_USERPWD$login.':'.$password);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_SAFE_UPLOADfalse);
curl_setopt($chCURLOPT_POSTFIELDSjson_encode((object)$params));
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_TIMEOUT60);
curl_setopt($chCURLOPT_HTTPHEADER, array(
    
'Accept: application/json',
    
'Content-type: application/json'
));

$data curl_exec($ch);
curl_close($ch);

$result json_decode($data);
var_dump($result);