Задать вопрос
@NiCnameqqww

Laravel интеграция с 1с?

Привет, кто нибудь знает как интегрировать laravel c 1с.
Пробовал по документации 1с выгрузить товары на сайт, через роуты не проходит инициализацию, пока что сделал без роутов и контроллера в простом php файле, но хотелось бы все сделать через контроллер. Если кто уже сталкивался с этим помогите пожалуйста.

Вот мой контроллер(в котором работает только два первых запроса checkauth и init)
public function exchange(Request $request) {
        $cookieName = config('session.cookie');
        $cookieID = Session::getId();
        $csrf = csrf_token();
        $date = date('Y-m-d H:m:s');
       
        if($request->get('type') == 'catalog')
        {
            switch ($request->mode)
            {
                case 'checkauth':
                    $user = $_SERVER['PHP_AUTH_USER'];
                    $pass = $_SERVER['PHP_AUTH_PW'];
                    if(Auth::attempt(['email' => $user, 'password' => $pass]))
                    {
                        return response("success\n$cookieName\n$cookieID\n$csrf\n$date")
                            ->header("Content-Type" ,"text/plane; charset=UTF-8");
                    };
                case "init":

                    return response("no\nfile_limit=100000000000\nsessid=$cookieID\nversion=3.1")
                        ->header("Content-Type" ,"text/plane; charset=UTF-8");

                case "file":
                    
                    $filename = $request->get('filename');
                    $file_content = file_get_contents('php://input');
                    Storage::disk('public')->put('file.txt', 'Contents');
            }
        }
       
    }


это мой роут для контроллера
Route::any('/1c_exchange.php', 'ExchangeController@exchange');

а это мой 1c_exchange.php файлик в котором все работает

<?php
$user	= "admin";
$pass	= "admin";
$path	= "upload/";

if (!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER["PHP_AUTH_PW"]) && !isset($_REQUEST["type"])) {
    header('WWW-Authenticate: Basic realm="1C-Exchange"');
    header('HTTP/1.0 401 Unauthorized');
    $_SESSION["login"] = false;
    die("failure");
}

if (($_SERVER["PHP_AUTH_USER"] == $user && $_SERVER["PHP_AUTH_PW"] == $pass) || $_SESSION["login"]) {
    $_SESSION["login"] = true;
    if ($_REQUEST["type"] == "catalog") {
        switch ($_REQUEST["mode"]):
            case "checkauth":
                die("success");
                break;
            case "init":
                die("zip=no" . "\r\n" . "file_limit=0");
                break;
            case "file":
                $filename = (strpos($_REQUEST["filename"], ".") == 0) ? substr($_REQUEST["filename"], 1) : $_REQUEST["filename"];
                $dirname = dirname($path . $filename);
                if (!is_dir($dirname))
                    mkdir($dirname, 0755, true);
                $file = fopen($path . $filename, 'ab') or die("failure");
                fwrite($file, file_get_contents('php://input'));
                fclose($file);
                die("success");
                break;
        endswitch;
    }
    if ($_REQUEST["type"] == "sale") {

    }
} else {
    header('WWW-Authenticate: Basic realm="1C-Exchange"');
    header('HTTP/1.0 401 Unauthorized');
    $_SESSION["login"] = false;
    die("failure");
}
  • Вопрос задан
  • 5662 просмотра
Подписаться 3 Простой 18 комментариев
Пригласить эксперта
Ответы на вопрос 1
Mi11er
@Mi11er
A human...
А в чем проблема ?
API делаете либо на стороне 1С, либо на стороне сайта.
Выгружаете в любом удобном формате и жизнь удалась =)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы