Интеграция c Roistat с помощью API

Комментариев: 0

Периодически появляется необходимость интегрировать какой-либо бизнес с каким-либо сервисом. Конечно, сейчас почти у всех этих сервисов есть 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.

Уведомлять о новых комментариях
Уведомлять
guest
0 комментариев
Inline Feedbacks
View all comments