Заказы
Заказы с сайта, витрины и API: список, создание без дублей, статусы и оплата.
В заказе — контакты покупателя. Это персональные данные: храните и передавайте их по закону 152-ФЗ.
Что важно знать
- Без дублей.
Idempotency-Keyдлиннее 200 знаков обрезается до 200. - Своя корзина. Способы доставки и оплаты — из
GET /checkout. При создании заказа передайтеdelivery_idиpayment_method_id: доставка считается как в корзине магазина. Если оплата онлайн, отправьте покупателя наpage_urlиз ответа.
Список заказов
GET/ordersправо orders:read
Чтобы забирать новые и изменённые заказы, храните время последнего опроса и передавайте его в updated_since. Заказ попадает в выборку и при смене статуса, оплате, правке заметки.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
limit | в адресе | целое | Сколько объектов вернуть, от 1 до 250. По умолчанию 50. |
cursor | в адресе | строка | Значение next_cursor из прошлого ответа. |
updated_since | в адресе | строка | Только объекты, изменённые не раньше этого времени. ISO 8601, например 2026-10-28T00:00:00Z или 2026-10-28T00:00:00+03:00. В адресе запроса знак + кодируйте как %2B (иначе он станет пробелом) либо пишите время в UTC с буквой Z. |
status | в адресе | целое | Только заказы с этим номером статуса. |
paid | в адресе | строка (0, 1, true, false) | Только оплаченные (1, true) или неоплаченные (0, false). |
order | в адресе | строка (asc, desc) | Порядок по номеру заказа: asc (по умолчанию, старые первыми) или desc (новые сверху). Курсор работает в обе стороны. |
Пример запроса
curl -G https://api.okeysait.ru/v1/orders \
-H "Authorization: Bearer $OKEANO_KEY" \
--data-urlencode "updated_since=2026-10-30T09:00:00+03:00" \
--data-urlencode "limit=100"<?php
$ch = curl_init('https://api.okeysait.ru/v1/orders?' . http_build_query([
'updated_since' => '2026-10-30T09:00:00+03:00',
'limit' => '100',
]));
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/orders",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
params={
"updated_since": "2026-10-30T09:00:00+03:00",
"limit": "100",
},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const url = new URL("https://api.okeysait.ru/v1/orders");
url.search = new URLSearchParams({
updated_since: "2026-10-30T09:00:00+03:00",
limit: "100",
});
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders?updated_since=2026-10-30T09%3A00%3A00%2B03%3A00&limit=100");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
)
func main() {
q := url.Values{}
q.Set("updated_since", "2026-10-30T09:00:00+03:00")
q.Set("limit", "100")
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/orders?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"data": [
{
"id": 518,
"number": "518",
"status": {
"id": 1,
"name": "Новый"
},
"paid": false,
"paid_at": null,
"delivery_id": 1,
"payment_method_id": 2,
"page_url": "https://my-shop.okeysait.ru/order/7d3f9a0c5b1e48a2b6c4e8f0a1d2c3b4",
"customer": {
"user_id": null,
"name": "Анна Лесная",
"email": "anna@example.com",
"phone": "+79990001122",
"address": "Москва, ул. Лесная, 1"
},
"comment": "Позвоните за час",
"manager_note": "",
"items": [
{
"product_id": 101,
"variant_id": 77,
"sku": "CANDLE-F",
"name": "Свеча «Лес»",
"price": "1290.00",
"quantity": 2,
"total": "2580.00"
}
],
"delivery_price": "0.00",
"discount_percent": 0,
"coupon_code": "",
"total": "2580.00",
"currency": "RUB",
"created_at": "2026-10-30T09:31:07+00:00",
"updated_at": "2026-10-30T09:31:07+00:00"
}
],
"next_cursor": null
}Другие ответы: 400, 401, 403, 429 — коды ошибок.
Создать заказ
POST/ordersправо orders:write
Позиции — по variant_id или по sku. Нужно имя, телефон или почта покупателя.
Повтор без дублей. Передайте заголовок Idempotency-Key (до 200 символов, ключ помнится 24 часа). Повторный запрос с тем же ключом и тем же телом вернёт сохранённый ответ с заголовком Idempotent-Replayed: true и не создаст второй заказ. Тот же ключ с другим телом — 422 idempotency_mismatch; запрос, пока первый ещё выполняется, — 409 idempotency_conflict (повторите чуть позже). Ответ с ошибкой не запоминается: после исправления можно повторить с тем же ключом.
Оплата. paid: true создаёт заказ сразу оплаченным и списывает остатки. Если товара не хватает — 409 insufficient_stock, ничего не создано.
Доставка. С delivery_id доставка считается как в корзине магазина: платная, пока сумма товаров меньше free_from. Неизвестный или выключенный способ — 422 bad_delivery; способ оплаты, которого нет у выбранной доставки, — 422 bad_payment. Способы и цены — в GET /checkout; страница заказа с оплатой — page_url в ответе.
Строгий режим. strict: true — для собственной корзины: каждая позиция должна быть видна в каталоге, а её количество (с учётом повторов того же варианта) — не больше остатка (stock: null — без учёта, безлимит). Иначе 422 item_unavailable, а в error.details — все недоступные позиции с причиной hidden, out_of_stock или not_enough и числом available. Цена позиции из запроса (items[].price) в строгом режиме игнорируется — берётся из каталога. Без strict поведение прежнее.
Уведомления. По умолчанию владелец магазина получает обычное письмо и сообщение о новом заказе, покупатель не получает ничего. Управляйте объектом notify: {"admin": false, "customer": true}. Письмо покупателю уходит, только если указана его почта.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
Idempotency-Key | заголовок | строка | Уникальная строка на каждый заказ (например, номер заказа во внешней системе). Значимы первые 200 символов. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
customer обязательно | объект | Нужно хотя бы одно из полей name, phone, email. |
customer.name | строка | |
customer.phone | строка | |
customer.email | строка | |
customer.address | строка | |
items обязательно | массив: объект | |
items[].variant_id | целое | |
items[].sku | строка | |
items[].quantity | целое | |
items[].price | строка или число | Цена позиции, если она отличается от цены в каталоге. |
comment | строка | |
strict | true / false | Строгий режим: только видимые товары с достаточным остатком, цены из каталога (items[].price игнорируется). Иначе 422 item_unavailable. |
delivery_id | целое | Номер способа доставки из панели. |
payment_method_id | целое | Номер способа оплаты из панели. |
paid | true / false | Создать заказ сразу оплаченным. Нужен остаток; иначе 409 insufficient_stock. |
notify | объект | Кого уведомить о заказе. |
notify.admin | true / false | Письмо и сообщение владельцу магазина, как о заказе с сайта. |
notify.customer | true / false | Письмо покупателю (если указана его почта). |
Пример запроса
curl -X POST https://api.okeysait.ru/v1/orders \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Idempotency-Key: crm-order-81234" \
-H "Content-Type: application/json" \
-d '{
"customer": {
"name": "Анна Лесная",
"phone": "+79990001122",
"email": "anna@example.com",
"address": "Москва, ул. Лесная, 1"
},
"items": [
{
"sku": "CANDLE-F",
"quantity": 2
}
],
"comment": "Позвоните за час",
"paid": false,
"notify": {
"admin": true,
"customer": false
}
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/orders');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Idempotency-Key: crm-order-81234',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'customer' => [
'name' => 'Анна Лесная',
'phone' => '+79990001122',
'email' => 'anna@example.com',
'address' => 'Москва, ул. Лесная, 1',
],
'items' => [
['sku' => 'CANDLE-F', 'quantity' => 2],
],
'comment' => 'Позвоните за час',
'paid' => false,
'notify' => ['admin' => true, 'customer' => false],
], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.post(
"https://api.okeysait.ru/v1/orders",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}", "Idempotency-Key": "crm-order-81234"},
json={
"customer": {
"name": "Анна Лесная",
"phone": "+79990001122",
"email": "anna@example.com",
"address": "Москва, ул. Лесная, 1",
},
"items": [
{"sku": "CANDLE-F", "quantity": 2},
],
"comment": "Позвоните за час",
"paid": False,
"notify": {"admin": True, "customer": False},
},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/orders", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Idempotency-Key": "crm-order-81234",
"Content-Type": "application/json",
},
body: JSON.stringify({
customer: {
name: "Анна Лесная",
phone: "+79990001122",
email: "anna@example.com",
address: "Москва, ул. Лесная, 1",
},
items: [
{ sku: "CANDLE-F", quantity: 2 },
],
comment: "Позвоните за час",
paid: false,
notify: { admin: true, customer: false },
}),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Idempotency-Key", "crm-order-81234");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Покупатель = Новый Структура;
Покупатель.Вставить("name", "Анна Лесная");
Покупатель.Вставить("phone", "+79990001122");
Покупатель.Вставить("email", "anna@example.com");
Покупатель.Вставить("address", "Москва, ул. Лесная, 1");
Данные.Вставить("customer", Покупатель);
Позиции = Новый Массив;
Позиция = Новый Структура;
Позиция.Вставить("sku", "CANDLE-F");
Позиция.Вставить("quantity", 2);
Позиции.Добавить(Позиция);
Данные.Вставить("items", Позиции);
Данные.Вставить("comment", "Позвоните за час");
Данные.Вставить("paid", Ложь);
Уведомления = Новый Структура;
Уведомления.Вставить("admin", Истина);
Уведомления.Вставить("customer", Ложь);
Данные.Вставить("notify", Уведомления);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"customer": {
"name": "Анна Лесная",
"phone": "+79990001122",
"email": "anna@example.com",
"address": "Москва, ул. Лесная, 1"
},
"items": [
{
"sku": "CANDLE-F",
"quantity": 2
}
],
"comment": "Позвоните за час",
"paid": false,
"notify": {
"admin": true,
"customer": false
}
}`)
req, err := http.NewRequest("POST", "https://api.okeysait.ru/v1/orders", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Idempotency-Key", "crm-order-81234")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 201
{
"id": 518,
"number": "518",
"status": {
"id": 1,
"name": "Новый"
},
"paid": false,
"paid_at": null,
"delivery_id": 1,
"payment_method_id": 2,
"page_url": "https://my-shop.okeysait.ru/order/7d3f9a0c5b1e48a2b6c4e8f0a1d2c3b4",
"customer": {
"user_id": null,
"name": "Анна Лесная",
"email": "anna@example.com",
"phone": "+79990001122",
"address": "Москва, ул. Лесная, 1"
},
"comment": "Позвоните за час",
"manager_note": "",
"items": [
{
"product_id": 101,
"variant_id": 77,
"sku": "CANDLE-F",
"name": "Свеча «Лес»",
"price": "1290.00",
"quantity": 2,
"total": "2580.00"
}
],
"delivery_price": "0.00",
"discount_percent": 0,
"coupon_code": "",
"total": "2580.00",
"currency": "RUB",
"created_at": "2026-10-30T09:31:07+00:00",
"updated_at": "2026-10-30T09:31:07+00:00"
}Другие ответы: 400, 401, 403, 409, 422, 429 — коды ошибок.
Заказ
GET/orders/{id}право orders:read
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Пример запроса
curl https://api.okeysait.ru/v1/orders/518 \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/orders/518');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/orders/518",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/orders/518", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders/518");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/orders/518", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 518,
"number": "518",
"status": {
"id": 1,
"name": "Новый"
},
"paid": false,
"paid_at": null,
"delivery_id": 1,
"payment_method_id": 2,
"page_url": "https://my-shop.okeysait.ru/order/7d3f9a0c5b1e48a2b6c4e8f0a1d2c3b4",
"customer": {
"user_id": null,
"name": "Анна Лесная",
"email": "anna@example.com",
"phone": "+79990001122",
"address": "Москва, ул. Лесная, 1"
},
"comment": "Позвоните за час",
"manager_note": "",
"items": [
{
"product_id": 101,
"variant_id": 77,
"sku": "CANDLE-F",
"name": "Свеча «Лес»",
"price": "1290.00",
"quantity": 2,
"total": "2580.00"
}
],
"delivery_price": "0.00",
"discount_percent": 0,
"coupon_code": "",
"total": "2580.00",
"currency": "RUB",
"created_at": "2026-10-30T09:31:07+00:00",
"updated_at": "2026-10-30T09:31:07+00:00"
}Другие ответы: 401, 403, 404, 429 — коды ошибок.
Изменить заказ
PATCH/orders/{id}право orders:write
Можно сменить статус (status_id), отметить оплату (paid: true), записать заметку менеджера и комментарий.
Оплата закрывает заказ и списывает остатки, как оплата на сайте. Не хватает товара — 409 insufficient_stock, в заказе ничего не меняется. Снять отметку оплаты нельзя (paid: false — 422 unpay_not_supported). Повторная отметка уже оплаченного заказа ничего не делает. Номера статусов — в панели магазина, в разделе заказов; неизвестный номер — 422 bad_status.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
status_id | целое | Номер статуса из панели. |
paid | true / false | Только true. Снять оплату нельзя. |
manager_note | строка | |
comment | строка |
Пример запроса
curl -X PATCH https://api.okeysait.ru/v1/orders/518 \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"status_id": 2,
"manager_note": "Отправлено, трек 123456"
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/orders/518');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['status_id' => 2, 'manager_note' => 'Отправлено, трек 123456'], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.patch(
"https://api.okeysait.ru/v1/orders/518",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={"status_id": 2, "manager_note": "Отправлено, трек 123456"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/orders/518", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ status_id: 2, manager_note: "Отправлено, трек 123456" }),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/orders/518");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("status_id", 2);
Данные.Вставить("manager_note", "Отправлено, трек 123456");
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ВызватьHTTPМетод("PATCH", Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"status_id": 2,
"manager_note": "Отправлено, трек 123456"
}`)
req, err := http.NewRequest("PATCH", "https://api.okeysait.ru/v1/orders/518", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 518,
"number": "518",
"status": {
"id": 1,
"name": "Новый"
},
"paid": false,
"paid_at": null,
"delivery_id": 1,
"payment_method_id": 2,
"page_url": "https://my-shop.okeysait.ru/order/7d3f9a0c5b1e48a2b6c4e8f0a1d2c3b4",
"customer": {
"user_id": null,
"name": "Анна Лесная",
"email": "anna@example.com",
"phone": "+79990001122",
"address": "Москва, ул. Лесная, 1"
},
"comment": "Позвоните за час",
"manager_note": "",
"items": [
{
"product_id": 101,
"variant_id": 77,
"sku": "CANDLE-F",
"name": "Свеча «Лес»",
"price": "1290.00",
"quantity": 2,
"total": "2580.00"
}
],
"delivery_price": "0.00",
"discount_percent": 0,
"coupon_code": "",
"total": "2580.00",
"currency": "RUB",
"created_at": "2026-10-30T09:31:07+00:00",
"updated_at": "2026-10-30T09:31:07+00:00"
}Другие ответы: 400, 401, 403, 404, 409, 422, 429 — коды ошибок.
Способы доставки и оплаты
GET/checkoutправо orders:read
Включённые в магазине способы доставки и оплаты — для собственной корзины на вашем сайте. free_from — сумма товаров, начиная с которой доставка бесплатна: цена берётся, только пока сумма меньше free_from (0 — доставка всегда бесплатна, цена не берётся). payment_method_ids — какие включённые оплаты подходят к доставке; пустой список — подойдёт любая включённая оплата. online: true — оплата проходит на странице заказа (page_url), online: false — вне сайта (наличными, переводом).
Пример запроса
curl https://api.okeysait.ru/v1/checkout \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/checkout');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/checkout",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/checkout", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/checkout");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/checkout", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"deliveries": [
{
"id": 1,
"name": "Курьер",
"description": "По городу",
"price": "300.00",
"free_from": "5000.00",
"separate_payment": false,
"payment_method_ids": [
1,
2
]
}
],
"payment_methods": [
{
"id": 1,
"name": "Наличными при получении",
"description": "",
"online": false
},
{
"id": 2,
"name": "Банковской картой",
"description": "",
"online": true
}
],
"currency": "RUB"
}Другие ответы: 401, 403, 429 — коды ошибок.