Обновить обработчик службы доставки sale.delivery.handler.update

Scope: sale

Кто может выполнять метод: администратор CRM

Метод обновляет обработчик службы доставки.

Параметры метода

Обязательные параметры отмечены *

Название
тип

Описание

ID*
sale_delivery_handler.ID

Идентификатор обработчика службы доставки.
Получить идентификаторы обработчиков службы доставки можно с помощью метода sale.delivery.handler.list

NAME
string

Название обработчика службы доставки

CODE
string

Символьный код обработчика службы доставки

SORT
integer

Сортировка

DESCRIPTION
string

Описание обработчика службы доставки

SETTINGS
object

Объект, содержащий информацию о настройках обработчика службы доставки (подробное описание приведено ниже)

PROFILES
object[]

Массив, содержащий список объектов профилей доставки (подробное описание приведено ниже).

Подразумевается, что у обработчика службы доставки должен быть как минимум 1 профиль

Параметр SETTINGS

Обязательные параметры отмечены *

Название
тип

Описание

CALCULATE_URL*
string

URL для расчёта стоимости доставки.

На данный URL приходят данные о посылке (что доставить, куда и как), стоимость доставки которой нужно рассчитать в ответе.

Формат запроса и ответа детально описан в документации по веб-хуку Расчет стоимости доставки

CREATE_DELIVERY_REQUEST_URL
string

URL для создания заказа на доставку.

На данный URL приходят данные о посылке (что доставить, куда и как), заказ на которую нужно оформить в службе доставки.

Формат запроса и ответа детально описан в документации по веб-хуку Создание заказа на доставку

CANCEL_DELIVERY_REQUEST_URL
string

URL для отмены заказа на доставку

На данный URL приходят данные о посылке (что доставить, куда и как), заказ на которую нужно отменить в службе доставки.

Формат запроса и ответа детально описан в документации по веб-хуку Отмена заказа на доставку

HAS_CALLBACK_TRACKING_SUPPORT
string

Индикатор того, будет ли служба доставки присылать оповещения о статусе заказа на доставку (см. метод sale.delivery.request.sendmessage).

В случае, если поддержка событий указана, то в интерфейсе менеджера при заказе доставки будет создано дело на доставку, в которое могут транслироваться изменения, связанные с текущим статусом доставки.

Возможные значения:

  • Y — есть поддержка
  • N — нет поддержки

CONFIG
object

Массив объектов с доступными настройками для службы доставки, создаваемой с использованием данного обработчика (подробное описание приведено ниже)

Параметр CONFIG

Обязательные параметры отмечены *

Название
тип

Описание

TYPE*
string

Тип поля настройки
Возможные значения:

  • STRING — строка
  • Y/N — чекбокс (да / нет)
  • NUMBER — число
  • ENUM — список
  • DATE — дата
  • LOCATION — местоположение

CODE*
string

Символьный код настройки

NAME*
string

Название настройки

OPTIONS
object

Список опций для выбора. Объект в формате ключ=значение. Где ключ — код опции, а значение — опция.

Пример:

{
           "Option1Code": "Option1Value",
           "Option2Code": "Option2Value",
           "Option3Code": "Option3Value"
        }
        

Параметр актуален только для настройки типа ENUM

Параметр PROFILES

Обязательные параметры отмечены *

Название
тип

Описание

NAME*
string

Название профиля обработчика службы доставки

CODE*
string

Символьный код профиля обработчика службы доставки

DESCRIPTION
string

Описание профиля обработчика службы доставки

Примеры кода

Как использовать примеры в документации

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"ID":14,"CODE":"uber","NAME":"New Uber","DESCRIPTION":"New Uber Description","SORT":300,"SETTINGS":{"CALCULATE_URL":"https://gateway.bx/calculate.php","CREATE_DELIVERY_REQUEST_URL":"https://gateway.bx/create_delivery_request.php","CANCEL_DELIVERY_REQUEST_URL":"https://gateway.bx/cancel_delivery_request.php","HAS_CALLBACK_TRACKING_SUPPORT":"N","CONFIG":[{"TYPE":"STRING","CODE":"SETTING_1","NAME":"String Example"},{"TYPE":"Y/N","CODE":"SETTING_2","NAME":"Checkbox Example"},{"TYPE":"NUMBER","CODE":"SETTING_3","NAME":"Number Example"},{"TYPE":"ENUM","CODE":"SETTING_4","NAME":"Enum Example","OPTIONS":{"Option1Code":"Option1Value","Option2Code":"Option2Value","Option3Code":"Option3Value","Option4Code":"Option4Value","Option5Code":"Option5Value"}},{"TYPE":"DATE","CODE":"SETTING_5","NAME":"Date Example"},{"TYPE":"LOCATION","CODE":"SETTING_6","NAME":"Location Example"}]},"PROFILES":[{"NAME":"New Taxi","CODE":"TAXI","DESCRIPTION":"New Taxi Delivery"},{"NAME":"New Cargo","CODE":"CARGO","DESCRIPTION":"New Cargo Delivery"}]}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.delivery.handler.update
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"ID":14,"CODE":"uber","NAME":"New Uber","DESCRIPTION":"New Uber Description","SORT":300,"SETTINGS":{"CALCULATE_URL":"https://gateway.bx/calculate.php","CREATE_DELIVERY_REQUEST_URL":"https://gateway.bx/create_delivery_request.php","CANCEL_DELIVERY_REQUEST_URL":"https://gateway.bx/cancel_delivery_request.php","HAS_CALLBACK_TRACKING_SUPPORT":"N","CONFIG":[{"TYPE":"STRING","CODE":"SETTING_1","NAME":"String Example"},{"TYPE":"Y/N","CODE":"SETTING_2","NAME":"Checkbox Example"},{"TYPE":"NUMBER","CODE":"SETTING_3","NAME":"Number Example"},{"TYPE":"ENUM","CODE":"SETTING_4","NAME":"Enum Example","OPTIONS":{"Option1Code":"Option1Value","Option2Code":"Option2Value","Option3Code":"Option3Value","Option4Code":"Option4Value","Option5Code":"Option5Value"}},{"TYPE":"DATE","CODE":"SETTING_5","NAME":"Date Example"},{"TYPE":"LOCATION","CODE":"SETTING_6","NAME":"Location Example"}]},"PROFILES":[{"NAME":"New Taxi","CODE":"TAXI","DESCRIPTION":"New Taxi Delivery"},{"NAME":"New Cargo","CODE":"CARGO","DESCRIPTION":"New Cargo Delivery"}],"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/sale.delivery.handler.update
        
try
        {
        	const response = await $b24.callMethod(
        		'sale.delivery.handler.update', {
        			ID: 14,
        			CODE: "uber",
        			NAME: "New Uber",
        			DESCRIPTION: "New Uber Description",
        			SORT: 300,
        			SETTINGS: {
        				CALCULATE_URL: "https://gateway.bx/calculate.php",
        				CREATE_DELIVERY_REQUEST_URL: "https://gateway.bx/create_delivery_request.php",
        				CANCEL_DELIVERY_REQUEST_URL: "https://gateway.bx/cancel_delivery_request.php",
        				HAS_CALLBACK_TRACKING_SUPPORT: "N",
        				CONFIG: [{
        						TYPE: "STRING",
        						CODE: "SETTING_1",
        						NAME: "String Example",
        					},
        					{
        						TYPE: "Y/N",
        						CODE: "SETTING_2",
        						NAME: "Checkbox Example",
        					},
        					{
        						TYPE: "NUMBER",
        						CODE: "SETTING_3",
        						NAME: "Number Example",
        					},
        					{
        						TYPE: "ENUM",
        						CODE: "SETTING_4",
        						NAME: "Enum Example",
        						OPTIONS: {
        							"Option1Code": "Option1Value",
        							"Option2Code": "Option2Value",
        							"Option3Code": "Option3Value",
        							"Option4Code": "Option4Value",
        							"Option5Code": "Option5Value",
        						},
        					},
        					{
        						TYPE: "DATE",
        						CODE: "SETTING_5",
        						NAME: "Date Example",
        					},
        					{
        						TYPE: "LOCATION",
        						CODE: "SETTING_6",
        						NAME: "Location Example",
        					},
        				],
        			},
        			PROFILES: [{
        					NAME: "New Taxi",
        					CODE: "TAXI",
        					DESCRIPTION: "New Taxi Delivery",
        				},
        				{
        					NAME: "New Cargo",
        					CODE: "CARGO",
        					DESCRIPTION: "New Cargo Delivery",
        				},
        			],
        		}
        	);
        	
        	const result = response.getData().result;
        	console.info(result);
        }
        catch( error )
        {
        	console.error(error);
        }
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'sale.delivery.handler.update',
                    [
                        'ID'          => 14,
                        'CODE'        => "uber",
                        'NAME'        => "New Uber",
                        'DESCRIPTION' => "New Uber Description",
                        'SORT'        => 300,
                        'SETTINGS'    => [
                            'CALCULATE_URL'               => "https://gateway.bx/calculate.php",
                            'CREATE_DELIVERY_REQUEST_URL' => "https://gateway.bx/create_delivery_request.php",
                            'CANCEL_DELIVERY_REQUEST_URL' => "https://gateway.bx/cancel_delivery_request.php",
                            'HAS_CALLBACK_TRACKING_SUPPORT' => "N",
                            'CONFIG'                      => [
                                [
                                    'TYPE' => "STRING",
                                    'CODE' => "SETTING_1",
                                    'NAME' => "String Example",
                                ],
                                [
                                    'TYPE' => "Y/N",
                                    'CODE' => "SETTING_2",
                                    'NAME' => "Checkbox Example",
                                ],
                                [
                                    'TYPE' => "NUMBER",
                                    'CODE' => "SETTING_3",
                                    'NAME' => "Number Example",
                                ],
                                [
                                    'TYPE'    => "ENUM",
                                    'CODE'    => "SETTING_4",
                                    'NAME'    => "Enum Example",
                                    'OPTIONS' => [
                                        "Option1Code" => "Option1Value",
                                        "Option2Code" => "Option2Value",
                                        "Option3Code" => "Option3Value",
                                        "Option4Code" => "Option4Value",
                                        "Option5Code" => "Option5Value",
                                    ],
                                ],
                                [
                                    'TYPE' => "DATE",
                                    'CODE' => "SETTING_5",
                                    'NAME' => "Date Example",
                                ],
                                [
                                    'TYPE' => "LOCATION",
                                    'CODE' => "SETTING_6",
                                    'NAME' => "Location Example",
                                ],
                            ],
                        ],
                        'PROFILES'    => [
                            [
                                'NAME'        => "New Taxi",
                                'CODE'        => "TAXI",
                                'DESCRIPTION' => "New Taxi Delivery",
                            ],
                            [
                                'NAME'        => "New Cargo",
                                'CODE'        => "CARGO",
                                'DESCRIPTION' => "New Cargo Delivery",
                            ],
                        ],
                    ]
                );
        
            $result = $response
                ->getResponseData()
                ->getResult();
        
            echo 'Success: ' . print_r($result, true);
        
        } catch (Throwable $e) {
            error_log($e->getMessage());
            echo 'Error updating delivery handler: ' . $e->getMessage();
        }
        
BX24.callMethod(
            'sale.delivery.handler.update', {
                ID: 14,
                CODE: "uber",
                NAME: "New Uber",
                DESCRIPTION: "New Uber Description",
                SORT: 300,
                SETTINGS: {
                    CALCULATE_URL: "https://gateway.bx/calculate.php",
                    CREATE_DELIVERY_REQUEST_URL: "https://gateway.bx/create_delivery_request.php",
                    CANCEL_DELIVERY_REQUEST_URL: "https://gateway.bx/cancel_delivery_request.php",
                    HAS_CALLBACK_TRACKING_SUPPORT: "N",
                    CONFIG: [{
                            TYPE: "STRING",
                            CODE: "SETTING_1",
                            NAME: "String Example",
                        },
                        {
                            TYPE: "Y/N",
                            CODE: "SETTING_2",
                            NAME: "Checkbox Example",
                        },
                        {
                            TYPE: "NUMBER",
                            CODE: "SETTING_3",
                            NAME: "Number Example",
                        },
                        {
                            TYPE: "ENUM",
                            CODE: "SETTING_4",
                            NAME: "Enum Example",
                            OPTIONS: {
                                "Option1Code": "Option1Value",
                                "Option2Code": "Option2Value",
                                "Option3Code": "Option3Value",
                                "Option4Code": "Option4Value",
                                "Option5Code": "Option5Value",
                            },
                        },
                        {
                            TYPE: "DATE",
                            CODE: "SETTING_5",
                            NAME: "Date Example",
                        },
                        {
                            TYPE: "LOCATION",
                            CODE: "SETTING_6",
                            NAME: "Location Example",
                        },
                    ],
                },
                PROFILES: [{
                        NAME: "New Taxi",
                        CODE: "TAXI",
                        DESCRIPTION: "New Taxi Delivery",
                    },
                    {
                        NAME: "New Cargo",
                        CODE: "CARGO",
                        DESCRIPTION: "New Cargo Delivery",
                    },
                ],
            },
            function(result) {
                if (result.error()) {
                    console.error(result.error());
                } else {
                    console.info(result.data());
                }
            }
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'sale.delivery.handler.update',
            [
                'ID' => 14,
                'CODE' => "uber",
                'NAME' => "New Uber",
                'DESCRIPTION' => "New Uber Description",
                'SORT' => 300,
                'SETTINGS' => [
                    'CALCULATE_URL' => "https://gateway.bx/calculate.php",
                    'CREATE_DELIVERY_REQUEST_URL' => "https://gateway.bx/create_delivery_request.php",
                    'CANCEL_DELIVERY_REQUEST_URL' => "https://gateway.bx/cancel_delivery_request.php",
                    'HAS_CALLBACK_TRACKING_SUPPORT' => "N",
                    'CONFIG' => [
                        ['TYPE' => "STRING", 'CODE' => "SETTING_1", 'NAME' => "String Example"],
                        ['TYPE' => "Y/N", 'CODE' => "SETTING_2", 'NAME' => "Checkbox Example"],
                        ['TYPE' => "NUMBER", 'CODE' => "SETTING_3", 'NAME' => "Number Example"],
                        [
                            'TYPE' => "ENUM",
                            'CODE' => "SETTING_4",
                            'NAME' => "Enum Example",
                            'OPTIONS' => [
                                "Option1Code" => "Option1Value",
                                "Option2Code" => "Option2Value",
                                "Option3Code" => "Option3Value",
                                "Option4Code" => "Option4Value",
                                "Option5Code" => "Option5Value",
                            ],
                        ],
                        ['TYPE' => "DATE", 'CODE' => "SETTING_5", 'NAME' => "Date Example"],
                        ['TYPE' => "LOCATION", 'CODE' => "SETTING_6", 'NAME' => "Location Example"],
                    ],
                ],
                'PROFILES' => [
                    ['NAME' => "New Taxi", 'CODE' => "TAXI", 'DESCRIPTION' => "New Taxi Delivery"],
                    ['NAME' => "New Cargo", 'CODE' => "CARGO", 'DESCRIPTION' => "New Cargo Delivery"],
                ],
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        

Обработка ответа

HTTP-статус: 200

{
           "result":true,
           "time":{
              "start":1713857588.711742,
              "finish":1713857589.121912,
              "duration":0.4101700782775879,
              "processing":0.02155303955078125,
              "date_start":"2024-04-23T10:33:08+03:00",
              "date_finish":"2024-04-23T10:33:09+03:00"
           }
        }
        

Возвращаемые данные

Название
тип

Описание

result
boolean

Результат обновления обработчика службы доставки

time
time

Информация о времени выполнения запроса

Обработка ошибок

HTTP-статус: 400, 403

{
           "error":"ERROR_HANDLER_NOT_FOUND",
           "error_description":"Handler not found"
        }
        

Название
тип

Описание

error
string

Строковый код ошибки. Может состоять из цифр, латинских букв и знака подчеркивания

error_description
error_description

Текстовое описание ошибки. Описание не предназначено для показа конечному пользователю в необработанном виде

Возможные коды ошибок

Код

Описание

Статус

ERROR_HANDLER_NOT_FOUND

Обработчик службы доставки с указанным идентификатором не найден

400

ERROR_CHECK_FAILURE

Ошибка валидации входящих параметров (детали в описании ошибки)

400

ERROR_HANDLER_UPDATE

Ошибка при попытке обновления обработчика службы доставки

400

ERROR_HANDLER_ALREADY_EXIST

Обработчик службы доставки с указанным кодом уже существует

400

ACCESS_DENIED

Недостаточно прав для обновления обработчика службы доставки

403

Статусы и коды системных ошибок

HTTP-статус: 20x, 40x, 50x

Описанные ниже ошибки могут возникнуть при вызове любого метода

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

Текущий метод не разрешен для вызова с помощью batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

Превышена максимальная длина параметров, переданных в метод batch

401

NO_AUTH_FOUND
Wrong authorization data

Неверный access-токен или код вебхука

400

INVALID_REQUEST
Https required

Для вызовов методов требуется использовать протокол HTTPS

503

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24

403

ACCESS_DENIED
REST API is available only on commercial plans

REST API доступен только на коммерческих планах

403

INVALID_CREDENTIALS
Invalid request credentials

У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

Манифест недоступен

403

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более высоких привилегий, чем предоставляет токен вебхука

401

expired_token
The access token provided has expired

Предоставленный access-токен доступа истек

403

user_access_error
The user does not have access to the application

Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям

500

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение