sale.delivery.handler.add
Добавить обработчик службы доставки
Описание
Метод sale.delivery.handler.add добавляет обработчик службы доставки.
Параметры
NAME
string
обязательный
Название обработчика службы доставки
CODE
string
обязательный
Символьный код обработчика службы доставки
SORT
integer
необязательный
Сортировка
DESCRIPTION
integer
необязательный
Описание обработчика службы доставки
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 '{"CODE":"uber","NAME":"Uber","DESCRIPTION":"Uber Description","SORT":250,"SETTINGS":{"CALCULATE_URL":"http://gateway.bx/calculate.php","CREATE_DELIVERY_REQUEST_URL":"http://gateway.bx/create_delivery_request.php","CANCEL_DELIVERY_REQUEST_URL":"http://gateway.bx/cancel_delivery_request.php","HAS_CALLBACK_TRACKING_SUPPORT":"Y","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":"Taxi","CODE":"TAXI","DESCRIPTION":"Taxi Delivery"},{"NAME":"Cargo","CODE":"CARGO","DESCRIPTION":"Cargo Delivery"}]}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.delivery.handler.add
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"CODE":"uber","NAME":"Uber","DESCRIPTION":"Uber Description","SORT":250,"SETTINGS":{"CALCULATE_URL":"http://gateway.bx/calculate.php","CREATE_DELIVERY_REQUEST_URL":"http://gateway.bx/create_delivery_request.php","CANCEL_DELIVERY_REQUEST_URL":"http://gateway.bx/cancel_delivery_request.php","HAS_CALLBACK_TRACKING_SUPPORT":"Y","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":"Taxi","CODE":"TAXI","DESCRIPTION":"Taxi Delivery"},{"NAME":"Cargo","CODE":"CARGO","DESCRIPTION":"Cargo Delivery"}],"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sale.delivery.handler.add
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
try {
const response = await $b24.actions.v2.call.make<number>({
method: 'sale.delivery.handler.add',
params: {
CODE: 'uber',
NAME: 'Uber',
DESCRIPTION: 'Uber Description',
SORT: 250,
SETTINGS: {
CALCULATE_URL: 'http://gateway.bx/calculate.php',
CREATE_DELIVERY_REQUEST_URL: 'http://gateway.bx/create_delivery_request.php',
CANCEL_DELIVERY_REQUEST_URL: 'http://gateway.bx/cancel_delivery_request.php',
HAS_CALLBACK_TRACKING_SUPPORT: 'Y',
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: 'Taxi', CODE: 'TAXI', DESCRIPTION: 'Taxi Delivery' },
{ NAME: 'Cargo', CODE: 'CARGO', DESCRIPTION: 'Cargo Delivery' },
],
},
requestId: Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
} else {
const result = response.getData()!.result
console.info('Added delivery handler, ID:', result)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
async function addDeliveryHandler() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'sale.delivery.handler.add',
params: {
CODE: 'uber',
NAME: 'Uber',
DESCRIPTION: 'Uber Description',
SORT: 250,
SETTINGS: {
CALCULATE_URL: 'http://gateway.bx/calculate.php',
CREATE_DELIVERY_REQUEST_URL: 'http://gateway.bx/create_delivery_request.php',
CANCEL_DELIVERY_REQUEST_URL: 'http://gateway.bx/cancel_delivery_request.php',
HAS_CALLBACK_TRACKING_SUPPORT: 'Y',
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: 'Taxi', CODE: 'TAXI', DESCRIPTION: 'Taxi Delivery' },
{ NAME: 'Cargo', CODE: 'CARGO', DESCRIPTION: 'Cargo Delivery' },
],
},
requestId: B24Js.Text.getUuidRfc4122()
})
// The payload is available only on a successful response
if (!response.isSuccess) {
console.error(response.getErrorMessages().join('; '))
return
}
const result = response.getData().result
console.info('Added delivery handler, ID:', result)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', addDeliveryHandler)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
settings = {
"CALCULATE_URL": "http://gateway.bx/calculate.php",
"CREATE_DELIVERY_REQUEST_URL": "http://gateway.bx/create_delivery_request.php",
"CANCEL_DELIVERY_REQUEST_URL": "http://gateway.bx/cancel_delivery_request.php",
"HAS_CALLBACK_TRACKING_SUPPORT": "Y",
"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": "Taxi",
"CODE": "TAXI",
"DESCRIPTION": "Taxi Delivery",
},
{
"NAME": "Cargo",
"CODE": "CARGO",
"DESCRIPTION": "Cargo Delivery",
},
]
try:
bitrix_response = client.sale.delivery.handler.add(
code='uber',
name='Uber',
settings=settings,
profiles=profiles,
sort=250,
description='Uber Description',
).response
result = bitrix_response.result
print(result)
except BitrixAPIError as error:
print(
"Ошибка Bitrix API",
f"error: {error.error}",
f"error_description: {error.error_description}",
sep="\n",
)
except BitrixSDKException as error:
print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
print(f"Непредвиденная ошибка: {error}")
try {
$response = $b24Service
->core
->call(
'sale.delivery.handler.add',
[
'CODE' => "uber",
'NAME' => "Uber",
'DESCRIPTION' => "Uber Description",
'SORT' => 250,
'SETTINGS' => [
'CALCULATE_URL' => "http://gateway.bx/calculate.php",
'CREATE_DELIVERY_REQUEST_URL' => "http://gateway.bx/create_delivery_request.php",
'CANCEL_DELIVERY_REQUEST_URL' => "http://gateway.bx/cancel_delivery_request.php",
'HAS_CALLBACK_TRACKING_SUPPORT' => "Y",
'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' => "Taxi",
'CODE' => "TAXI",
'DESCRIPTION' => "Taxi Delivery",
],
[
'NAME' => "Cargo",
'CODE' => "CARGO",
'DESCRIPTION' => "Cargo Delivery",
],
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error adding delivery handler: ' . $e->getMessage();
}
BX24.callMethod(
'sale.delivery.handler.add', {
CODE: "uber",
NAME: "Uber",
DESCRIPTION: "Uber Description",
SORT: 250,
SETTINGS: {
CALCULATE_URL: "http://gateway.bx/calculate.php",
CREATE_DELIVERY_REQUEST_URL: "http://gateway.bx/create_delivery_request.php",
CANCEL_DELIVERY_REQUEST_URL: "http://gateway.bx/cancel_delivery_request.php",
HAS_CALLBACK_TRACKING_SUPPORT: "Y",
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: "Taxi",
CODE: "TAXI",
DESCRIPTION: "Taxi Delivery",
},
{
NAME: "Cargo",
CODE: "CARGO",
DESCRIPTION: "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.add',
[
'CODE' => "uber",
'NAME' => "Uber",
'DESCRIPTION' => "Uber Description",
'SORT' => 250,
'SETTINGS' => [
'CALCULATE_URL' => "http://gateway.bx/calculate.php",
'CREATE_DELIVERY_REQUEST_URL' => "http://gateway.bx/create_delivery_request.php",
'CANCEL_DELIVERY_REQUEST_URL' => "http://gateway.bx/cancel_delivery_request.php",
'HAS_CALLBACK_TRACKING_SUPPORT' => "Y",
'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' => "Taxi", 'CODE' => "TAXI", 'DESCRIPTION' => "Taxi Delivery"],
['NAME' => "Cargo", 'CODE' => "CARGO", 'DESCRIPTION' => "Cargo Delivery"],
],
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sale.delivery.handler.add", b24.Params{
"CODE": "uber",
"NAME": "Uber",
"DESCRIPTION": "Uber Description",
"SORT": 250,
"SETTINGS": b24.Params{
"CALCULATE_URL": "http://gateway.bx/calculate.php",
"CREATE_DELIVERY_REQUEST_URL": "http://gateway.bx/create_delivery_request.php",
"CANCEL_DELIVERY_REQUEST_URL": "http://gateway.bx/cancel_delivery_request.php",
"HAS_CALLBACK_TRACKING_SUPPORT": "Y",
"CONFIG": []b24.Params{
{
"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": b24.Params{
"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": []b24.Params{
{
"NAME": "Taxi",
"CODE": "TAXI",
"DESCRIPTION": "Taxi Delivery",
},
{
"NAME": "Cargo",
"CODE": "CARGO",
"DESCRIPTION": "Cargo Delivery",
},
},
})
if err != nil {
return fmt.Errorf("sale.delivery.handler.add: %w", err)
}
var newID b24.ID
if err := json.Unmarshal(res.Result, &newID); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println("идентификатор:", newID)
Ответ
HTTP-статус: 200
{
"result":14,
"time":{
"start":1713872092.378366,
"finish":1713872092.691408,
"duration":0.31304192543029785,
"processing":0.015096187591552734,
"date_start":"2024-04-23T14:34:52+03:00",
"date_finish":"2024-04-23T14:34:52+03:00"
}
}
Возвращаемые данные
result
sale_delivery_handler.ID
Идентификатор обработчика службы доставки
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error":"ERROR_CHECK_FAILURE",
"error_description":"Parameter CODE is not defined"
}
| Код | Описание | Значение |
|---|---|---|
ERROR_CHECK_FAILURE |
Ошибка валидации входящих параметров (детали в описании ошибки) | 400 |
ERROR_HANDLER_ADD |
Ошибка при попытке добавления обработчика службы доставки | 400 |
ERROR_HANDLER_ALREADY_EXIST |
Обработчик службы доставки с указанным кодом CODE уже существует |
400 |
ACCESS_DENIED |
Недостаточно прав для добавления обработчика службы доставки | 403 |

