Отправка и прием данных 1C на PHP-сайте

Обычно взаимодействие происходит следующим образом - программист 1С предоставляет несколько URL для фиксации различных событий (заказ, оплата и т.д.) и логин/пароль к ним. Данные обычно передаются в виде JSON-массива.

Пример отправки заказа через CURL:

// Отправка заказа в 1C
$order = array();

$order['deal_id'] = '123';
$order['deal_date'] = time();	
$order['deal_name'] = 'Иван Иванов';
$order['deal_email'] = 'mail@example.com';
$order['deal_phoneNumber'] = '+79031234567';				
$order['deal_price'] = '100.00';	

$array = json_encode($order, JSON_UNESCAPED_UNICODE);

$ch = curl_init('http://адрес_сайта/метод');
curl_setopt($ch, CURLOPT_USERPWD, 'Логин:Пароль');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $array); 
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
PHP

Для того чтобы облегчить отладку, можно сделать запись отправленных и полученных данных в лог-файл, добавив строки:

// Запись отправленных и полученных данных в лог-файл
$log = date('Y-m-d H:i:s') . "\r\n";
$log .= print_r($order, true) . "\r\n" . print_r($html, true);
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);
PHP

Пример лога:

2022-06-21 13:33:32
Array
(
	[deal_id] => 123
	[deal_date] => 1654685230
	[deal_name] => Иван Иванов
	[deal_email] => mail@example.com
	[deal_phoneNumber] => +79031234567
	[deal_price] => 100.00
)  
[
{
"ДокументОтчет": "9553ef96-f24d-11ec-812e-1cc47aabb0b2"
}
]
TEXT

Применяется когда на сайте нужно изменить некий статус по запросу из 1C. В таком случаи пишется скрипт-вебхук (например https://example.com/input-1c.php):

<?php

$data = file_get_contents('php://input');
$data = json_decode($data, true);
	
// Запись полученных данных в лог-файл
$log = date('Y-m-d H:i:s') . "\r\n";
$log .= print_r($data, true);
file_put_contents(__DIR__ . '/log.txt', $log . PHP_EOL, FILE_APPEND);  
	
if (!empty($data['проверяемое_поле'])) {
	// Тут должны происходить некие действия с БД сайта.

	exit('OK');
} else {
	exit('ERROR');
}
PHP
07.09.2022
258

Комментарии

, чтобы добавить комментарий.

Другие публикации

Подключение к платежной системе Сбербанка
После регистрации в системе эквайринга Сбербанка и получив доступ к тестовой среде, можно приступить к интеграции с...
49225
+21
Автоматическое сжатие и оптимизация картинок на сайте
Изображения нужно сжимать для ускорения скорости загрузки сайта, но как это сделать? На многих хостингах нет...
19295
+8
Прием платежей на сайте через Юкассу
В данной статье описан процесс оплаты через сервис ЮKassa с помощью прямых запросов к API через PHP cURL.
11344
+5
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
104083
+41
Массив $_SERVER
Описание значений глобального массива $_SERVER с примерами.
30733
+2
Прием платежей на сайте через интернет-эквайринг Тинькофф
Предварительно, чтобы реализовать оплату заказов на своем сайте через API Интернет-эквайринга банка Тинькофф...
6115
+8