Заказы и оплата

С помощью этих методов вы можете рассчитать корзину, создать заказ от имени клиента, отправить его на оплату и показать актуальное состояние.

Для регулярных списаний и периодов доступа используйте отдельный сервис управления подписками.

Подготовка

Перед созданием заказа:

  1. Получите товары из каталога.
  2. Получите актуальные ID доставки, оплаты и магазина из справочников витрины.
  3. Рассчитайте корзину.
  4. Авторизуйте клиента и получите Counterparty Bearer.

Для расчёта корзины достаточно App Token. Для создания и чтения заказа дополнительно нужен Counterparty Bearer клиента.

Порядок работы

  1. Отправьте товары в POST /api/counterparty/orders/precalculate.
  2. Покажите клиенту final_price и возможную ошибку промокода.
  3. Создайте заказ через POST /api/counterparty/orders.
  4. Если в ответе есть payment_link, перенаправьте клиента на оплату.
  5. После возврата получите заказ методом GET /api/counterparty/orders/{id}.
  6. Выдавайте товар или доступ только по состоянию, подтверждённому Gigma.

Возврат клиента с платёжной страницы не подтверждает оплату.

Рассчитать корзину

Метод
POST
URL
https://api.gigma.ru/api/counterparty/orders/precalculate
Авторизация
App Token
Headers
Token: {application_token}; Content-Type: application/json
Успешный ответ
200

Метод рассчитывает стоимость и проверяет товары, остатки, упаковку и промокод до создания заказа.

Параметры запроса

  • products (array, обязательный) — позиции корзины;
  • products[].id (integer, обязательный) — ID товара;
  • products[].quantity (integer, обязательный) — количество, от 1;
  • promo_code (string, опционально) — промокод: латинские буквы, цифры и дефис, до 64 символов.

Пример запроса

{
	"products": [
		{
			"id": 28504,
			"quantity": 3
		}
	],
	"promo_code": "WELCOME-10"
}

Ответ

{
	"price": 1952.4,
	"discount": 195.24,
	"total": 1657.16,
	"quantity_pack": 3,
	"original_price": 1952.4,
	"product_discount_amount": 195.24,
	"promo_discount_amount": 100,
	"total_discount_amount": 295.24,
	"final_price": 1657.16,
	"applied_discount": {
		"id": 7,
		"code": "WELCOME-10",
		"name": "Приветственная скидка",
		"type": "fixed",
		"value": 100
	},
	"discount_error": null,
	"products": [
		{
			"id": 28504,
			"price": 650.8,
			"quantity": 3,
			"pieces_per_pack": 1,
			"quantity_pack": 3,
			"wholesale": false
		}
	]
}

Для нового интерфейса используйте original_price, product_discount_amount, promo_discount_amount, total_discount_amount и final_price. Поля price, discount и total сохранены для совместимости.

Если промокод нельзя применить, Gigma вернёт цены без промо-скидки и объект discount_error. Ошибка товара или остатка возвращается с кодом 422.

Создать заказ

Метод
POST
URL
https://api.gigma.ru/api/counterparty/orders
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}; Content-Type: application/json
Успешный ответ
200

Передавайте ID только из справочников текущего Application. Состав тела зависит от выбранного способа доставки.

Параметры запроса

  • delivery_type_id (integer, обязательный) — ID способа доставки;
  • delivery_subtype_id (integer, опционально) — требуется при delivery_type_id = 2;
  • delivery_subtype_param_id (integer, опционально) — требуется при delivery_subtype_id = 1;
  • shop_id (integer, опционально) — требуется при delivery_type_id = 1;
  • address (string, опционально) — требуется при delivery_subtype_id = 2;
  • payment_type_id (integer, опционально) — ID способа оплаты;
  • payment_method_type (string, опционально) — тип онлайн-оплаты; в ответе возвращается как yookassa_payment_method_type;
  • promo_code (string, опционально) — промокод;
  • products (array, обязательный) — позиции корзины;
  • products[].id (integer, обязательный) — ID товара;
  • products[].quantity (integer, обязательный) — количество, от 1.

Пример запроса

{
	"delivery_type_id": 2,
	"delivery_subtype_id": 2,
	"payment_type_id": 2,
	"address": "115477, г Москва, ул Деловая, д 20",
	"promo_code": "WELCOME-10",
	"products": [
		{
			"id": 28504,
			"quantity": 3
		}
	]
}

Ответ

{
	"order": {
		"id": 169,
		"status": {
			"id": 1,
			"name": "Ожидает оплаты"
		},
		"price": "1657.16",
		"promo_code": "WELCOME-10",
		"original_price": 1952.4,
		"product_discount_amount": 195.24,
		"promo_discount_amount": 100,
		"total_discount_amount": 295.24,
		"final_price": 1657.16,
		"delivery_type": {},
		"delivery_subtype": {},
		"delivery_subtype_param": null,
		"payment_type": {},
		"yookassa_payment_method_type": null,
		"address": "115477, г Москва, ул Деловая, д 20",
		"shop": null,
		"products": [],
		"payment_link": "https://yoomoney.ru/checkout/...",
		"created_at": "2026-08-16T10:00:00+00:00",
		"redeem_token": null,
		"redeemed_count": 0,
		"total_tickets": 0,
		"last_redeemed_at": null
	}
}

Сохраните order.id. Если payment_link не равен null, перенаправьте клиента по этой ссылке.

Если платёж не удалось создать, Gigma отменит заказ и вернёт 502. Ошибки цены, промокода, доставки или остатка возвращаются с кодом 422.

Если результат запроса неизвестен из-за тайм-аута или 5xx, сначала получите список заказов клиента. Не повторяйте создание, пока не убедитесь, что заказ отсутствует.

Получить заказы клиента

Метод
GET
URL
https://api.gigma.ru/api/counterparty/orders
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}
Успешный ответ
200

Gigma вернёт только заказы текущего клиента в текущем Application.

Ответ

{
	"orders": [
		{
			"id": 169,
			"status": {
				"id": 1,
				"name": "Ожидает оплаты"
			},
			"final_price": 1657.16,
			"payment_link": "https://yoomoney.ru/checkout/...",
			"created_at": "2026-08-16T10:00:00+00:00"
		}
	],
	"ordersCount": 1
}

Ошибки

  • 401 — App Token или Counterparty Bearer отсутствует либо недействителен.

Получить заказ

Метод
GET
URL
https://api.gigma.ru/api/counterparty/orders/{id}
Авторизация
App Token + Bearer token
Headers
Token: {application_token}; Authorization: Bearer {counterparty_token}
Успешный ответ
200

Передайте order.id в адресе запроса. Gigma проверит клиента и Application.

Параметры пути

  • id (integer, обязательный) — ID заказа.

Ответ

{
	"order": {
		"id": 169,
		"status": {
			"id": 1,
			"name": "Ожидает оплаты"
		},
		"final_price": 1657.16,
		"payment_link": "https://yoomoney.ru/checkout/...",
		"redeem_token": null,
		"redeemed_count": 0,
		"total_tickets": 0,
		"last_redeemed_at": null
	}
}

Для билетов и пропусков ответ может содержать redeem_token, redeemed_count, total_tickets и last_redeemed_at.

Ошибки

  • 401 — App Token или Counterparty Bearer отсутствует либо недействителен;
  • 404 — заказа нет, он принадлежит другому клиенту или другому Application.

Заказ без входа

Создать заказ из контактной формы

Метод
POST
URL
https://api.gigma.ru/api/counterparty/contact_form
Авторизация
App Token
Headers
Token: {application_token}; Content-Type: application/json
Успешный ответ
200

Используйте этот метод только для простой формы заявки. Он создаёт клиента и заказ без предварительного входа, но фиксирует курьерскую доставку и не поддерживает полный сценарий оформления заказа.

Параметры запроса

  • first_name (string, обязательный) — имя клиента;
  • last_name (string, обязательный) — фамилия клиента;
  • middle_name (string|null, опционально) — отчество;
  • phone (string, обязательный) — телефон;
  • address (string, обязательный) — адрес;
  • payment_type_id (integer, обязательный) — ID способа оплаты;
  • products (array, обязательный) — позиции заказа;
  • products[].id (integer, обязательный) — ID товара;
  • products[].quantity (integer, обязательный) — количество.

Пример запроса

{
	"first_name": "Иван",
	"last_name": "Иванов",
	"middle_name": null,
	"phone": "79991234567",
	"address": "г Москва, ул Деловая, д 20",
	"payment_type_id": 2,
	"products": [
		{
			"id": 28504,
			"quantity": 1
		}
	]
}

Ответ

API возвращает объект order той же формы, что и обычное создание заказа.

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

После оплаты

  1. Получите заказ методом GET /api/counterparty/orders/{id}.
  2. Проверьте order.status.
  3. При наличии вебхука order.paid повторно запросите заказ после получения события.
  4. Только после проверки выдайте товар, билет или доступ.

Дальнейшие шаги