sale.basketitem.update
Изменить позицию корзины существующего заказа
Описание
Метод sale.basketitem.update изменяет позицию корзины существующего заказа.
Параметры
id
sale_basket_item.id
обязательный
Идентификатор позиции заказа
fields
object
обязательный
Значения изменяемых полей
Параметр fields
sort
integer
необязательный
Положение в списке позиций заказа
price
double
необязательный
Цена с учетом наценок и скидок
basePrice
double
необязательный
Исходная цена без учета наценок и скидок
discountPrice
double
необязательный
Величина итоговой скидки или наценки
quantity
double
необязательный
Количество товара
xmlId
string
необязательный
Внешний код позиции корзины
name
string
необязательный
Название товара
weight
integer
необязательный
Вес товара
dimensions
string
необязательный
Размеры товара (сериализованный массив)
measureCode
catalog_measure.code
необязательный
Код единицы измерения товара
measureName
catalog_measure.symbol
необязательный
Название единицы измерения
canBuy
string
необязательный
Флаг доступности товара. Возможные значения:
- Y — да
- N — нет
vatRate
double
необязательный
Ставка налога долей от единицы: 0.1 — это 10 %. Для указания
ставки «Без НДС» нужно передать пустую строку
vatIncluded
string
необязательный
Флаг того, включен ли НДС или налог в цену товара. Возможные значения:
- Y — да
- N — нет
catalogXmlId
string
необязательный
Внешний код каталога товаров
productXmlId
string
необязательный
Внешний код товара
Примеры запроса
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":6791,"fields":{"quantity":7,"price":10,"discountPrice":990}}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/sale.basketitem.update
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":6791,"fields":{"quantity":7,"price":10,"discountPrice":990},"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/sale.basketitem.update
// 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, ISODate } from '@bitrix24/b24jssdk'
declare const $b24: B24Frame
// Shape of the payload returned in result (match the "response handling" section of the page)
type BasketItemUpdateResult = {
basketItem: {
basePrice: number
canBuy: string
catalogXmlId: string
currency: string
customPrice: string
dateInsert: ISODate | null
dateUpdate: ISODate | null
dimensions: string
discountPrice: number
id: number
measureCode: string
measureName: string
name: string
orderId: number
price: number
productId: number
productXmlId: string
properties: unknown[]
quantity: number
reservations: unknown[]
sort: number
type: string | null
vatIncluded: string
vatRate: number
weight: number
xmlId: string
}
}
try {
const response = await $b24.actions.v2.call.make<BasketItemUpdateResult>({
method: 'sale.basketitem.update',
params: {
id: 6791,
fields: {
quantity: 7,
price: 10,
discountPrice: 990,
},
},
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(result.basketItem.id, result.basketItem.name, result.basketItem.quantity, result.basketItem.price)
}
} 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 updateBasketItem() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'sale.basketitem.update',
params: {
id: 6791,
fields: {
quantity: 7,
price: 10,
discountPrice: 990,
},
},
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(result.basketItem.id, result.basketItem.name, result.basketItem.quantity, result.basketItem.price)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', updateBasketItem)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
fields = {
"quantity": 7,
"price": 10,
"discountPrice": 990,
}
try:
bitrix_response = client.sale.basketitem.update(
bitrix_id=6791,
fields=fields,
).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.basketitem.update',
[
'id' => 6791,
'fields' => [
'quantity' => 7,
'price' => 10,
'discountPrice' => 990,
],
]
);
$result = $response
->getResponseData()
->getResult();
echo 'Success: ' . print_r($result, true);
} catch (Throwable $e) {
error_log($e->getMessage());
echo 'Error updating basket item: ' . $e->getMessage();
}
BX24.callMethod(
"sale.basketitem.update",
{
id: 6791,
fields: {
quantity: 7,
price: 10,
discountPrice: 990,
}
},
)
.then(
function(result)
{
if (result.error())
{
console.error(result.error());
}
else
{
console.log(result);
}
},
function(error)
{
console.info(error);
}
);
require_once('crest.php');
$result = CRest::call(
'sale.basketitem.update',
[
'id' => 6791,
'fields' =>
[
'quantity' => 7,
'price' => 10,
'discountPrice' => 990,
]
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "sale.basketitem.update", b24.Params{
"id": 6791,
"fields": b24.Params{
"quantity": 7,
"price": 10,
"discountPrice": 990,
},
})
if err != nil {
return fmt.Errorf("sale.basketitem.update: %w", err)
}
// Метод заворачивает ответ в объект с ключом "basketItem".
raw, ok := b24.Unwrap(res.Result, "basketItem")
if !ok {
return fmt.Errorf("в ответе нет ключа basketItem")
}
var item struct {
BasePrice int `json:"basePrice"`
CanBuy string `json:"canBuy"`
CatalogXmlID string `json:"catalogXmlId"`
Currency string `json:"currency"`
CustomPrice string `json:"customPrice"`
DateInsert string `json:"dateInsert"`
}
if err := json.Unmarshal(raw, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.BasePrice, item.CanBuy)
Ответ
HTTP-статус: 200
{
"result": {
"basketItem": {
"basePrice": 1000,
"canBuy": "Y",
"catalogXmlId": "",
"currency": "RUB",
"customPrice": "Y",
"dateInsert": "2024-04-23T18:51:28+02:00",
"dateUpdate": "2024-04-24T14:02:25+02:00",
"dimensions": "a:3:{s:5:\"WIDTH\";i:244;s:6:\"HEIGHT\";i:100;s:6:\"LENGTH\";i:31;}",
"discountPrice": 990,
"id": 6791,
"measureCode": "768",
"measureName": "шт",
"name": "Пробный товар",
"orderId": 5147,
"price": 10,
"productId": 0,
"productXmlId": "ProductKey",
"properties": [],
"quantity": 7,
"reservations": [],
"sort": 400,
"type": null,
"vatIncluded": "Y",
"vatRate": 10,
"weight": 40,
"xmlId": "BasketPositionId"
}
},
"total": 1,
"time": {
"start": 1713960144.842687,
"finish": 1713960146.089664,
"duration": 1.2469770908355713,
"processing": 0.5501749515533447,
"date_start": "2024-04-24T14:02:24+02:00",
"date_finish": "2024-04-24T14:02:26+02:00",
"operating": 0
}
}
Возвращаемые данные
result
object
Корневой элемент ответа
basketItem
sale_basket_item
Объект с данными обновленного элемента (позиции) корзины
total
integer
Число обработанных записей
time
time
Информация о времени выполнения запроса
Обработка ошибок
HTTP-статус: 400
{
"error":0,
"error_description":"error"
}
| Код | Описание | Значение |
|---|---|---|
200140400001 |
basket item is not exists
Не найдена позиция корзины |
|
200140400008 |
Required fields: fields[ORDER_ID]
Не указан идентификатор заказа |
|
200140400009 |
Order not found
Заказ не найден |
|
200140400011 |
Currency must be the currency of the order
Валюта позиции не совпадает с валютой заказа |
|
200040300010 |
Недостаточно прав для изменения | |
100 |
Не указаны обязательные параметры | |
0 |
Другие ошибки (например, фатальные ошибки) |

