retailCRM Документация

Взаимодействие с API при ограничениях хостинга

Возможна ситуация, когда ваш сайт работает на хостинге, который не удовлетворяет требованиям PHP-клиента для взаимодействия с API:

В этом случае вы можете обращаться к API c помощью обычной функции file_get_contents. Ниже приведены примеры ее использования.

 Не используйте нижеприведенные примеры, если ваш хостинг позволяет работать с официальным
 API-клиентом для PHP https://github.com/retailcrm/api-client-php. Данные примеры не учитывают обработку ошибок и сетевых проблем.

Примеры

Создание заказа

<?php

$crmDomain = 'https://some-crm.retailcrm.ru';
$crmKey = '4325fd34e1kVkahXL8XA3g3DEWIsQnwY';

$postData = http_build_query(array(
    'order' => json_encode(array(
        'firstName' => 'Имя',
        'phone' => 'Телефон',
        'email' => 'Имейл',
    )),
    'apiKey' => $crmKey,
));

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postData
    )
);

$context  = stream_context_create($opts);
$result = json_decode(
    file_get_contents(
        $crmDomain . '/api/v4/orders/create', 
        false, 
        $context
    ),
    true
);

echo "ID созданного заказа = " . $result['id'];

Получение информации по заказу

<?php

$crmDomain = 'https://some-crm.retailcrm.ru';
$crmKey = '4325fd34e1kVkahXL8XA3g3DEWIsQnwY';

// пример
$orderId = 5;
$params = array(
    'by' => 'id',
    'apiKey' => $crmKey,
);

$result = json_decode(
    file_get_contents($crmDomain . '/api/v4/orders/' . $orderId . '?' . http_build_query($params)),
    true
);

if (isset($result['order'])) {
    // информация по заказу
    print_r($result['order']);
}

Получение статусов заказов

<?php

$crmDomain = 'https://some-crm.retailcrm.ru';
$crmKey = '4325fd34e1kVkahXL8XA3g3DEWIsQnwY';

// пример
$orderIds = array(1, 2, 3);
$params = array(
    'ids' => $orderIds,
    'apiKey' => $crmKey,
);

$result = json_decode(
    file_get_contents($crmDomain . '/api/v4/orders/statuses' . http_build_query($params)),
    true
);

if (isset($result['orders'])) {
    foreach ($result['orders'] as $order) {
        echo $order['id'];
        echo $order['status'];
    }
}

Редакция от 21.12.2016 11:15