Периодически появляется необходимость интегрировать какой-либо бизнес с каким-либо сервисом. Конечно, сейчас почти у всех этих сервисов есть API-интерфейс для работы, по-этому делать это не очень сложно. Ниже, я приведу пример выгрузки сделок и клиентов в Roistat из своей CRM.
Для простоты и наглядности, давайте создадим несколько таблиц в базе данных, например "orders" в которой будет хранится информация по всем сделкам и "clients", где будет хранится информация о клиентах.
Таблица Orders должна иметь примерно следующий вид:

Почитать подробнее о полях сделок можно в официальном хелпе по API: https://roistat.api-docs.io/v1/zakazy/A9qtdWiyvQBP8t8ce
Таблица Clients:

Почитать подробнее о полях клиентов можно в официальном хелпе по API: https://roistat.api-docs.io/v1/klienty/WYpn4nQR24SYo72Ru
Теперь давайте напишем простое приложение на PHP, которое будет обращаться к базе данных, брать оттуда данные сделок и клиентов и отправлять их в Roistat:
<?php
/********Подключение к базе данных*******/
$host = 'localhost';
$user = 'roistat-api';
$password = 'pass';
$db = 'roistat-api';
/********Настройки для подключения к Roistat*******/
$project_id = '000000'; // Номер проекта
$api_key = '80e8458483943c74555eab97ec09db30d11a'; // API-KEY
$api_url = 'https://cloud.roistat.com/api/v1/'; //API-URL
$mysqli = new mysqli($host, $user, $password, $db);
//Функция берет данные из таблицы, помещает их в массив, кодирует в JSON и отправляем в ройстат.
function import($table, $api_url, $path, $project_id, $api_key) {
global $mysqli;
$mysqli ->query("SET NAMES 'utf8' ");
$url = $api_url;
$url .= "".$path."";
$url .= "?project=".$project_id."";
$url .= "&key=".$api_key."";
$sql = 'SELECT * FROM `'.$table.'`'; //Запрос для выборки
$result = $mysqli ->query($sql); //Выборка данных из таблицы
for ($params = array (); $row = $result->fetch_assoc(); $params[] = $row); //Получение массива данных
$array = array();
//Если импортируем сделки, создаем массим следующего вида
if ($table == 'orders') {
foreach ($params as $key => $value) {
$array[] = [
"id" =>$value['id'],
"status" => $value['status'],
"roistat" => $value['roistat'],
"price" => $value['price'],
"cost" => $value['cost'],
"date_create" => $value['date_create'],
"clien_id" => $value['client_id'],
"fields" => array(
"field1" => $value['field1'],
"field2" => $value['field2']
)];
}
}
//Если импортируем клиентов, создаем массив следующего вида
if ($table == 'clients') {
foreach ($params as $key => $value) {
$array[] = [
"id" =>$value['id'],
"name" => $value['name'],
"email" => $value['email'],
"company" => $value['company'],
"birth_date" => $value['birth_date'],
"fields" => array(
"field1" => $value['field1']
)];
}
}
$reguest = json_encode($params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); // Конвертируем массив в JSON
//Отправляем POST запрос в Roistat
$result = file_get_contents($url, false, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $reguest
)))
);
//Посмотреть ответ от Roistat, можно распечатав массив print_r($result).
}
//Выполняем функцию импорта
$startOrders = import('orders', $api_url, 'project/add-orders', $project_id, $api_key);
$startClients = import('clients', $api_url, 'project/clients/import', $project_id, $api_key);
?>
Надеюсь это поможет Вам при разработке собственной интеграции с Roistat.