- Request
- Body
- Cart
- Contact
- PaymentMethod
- Address
- ShippingMethod
- CartItem
- Coupon
- Discount
- Measurements
- CartTotal
- Location
- CourierOption
- PickupOption
- YandexDeliveryOption
- ItemQuantity
- CartItemFeatures
- ItemReceipt
- FlexibleCustomerChoice
- FlexibleTimeIntervals
- PickupSchedule
- Agent
- MarkQuantity
- Supplier
- TimeInterval
- FlexibleTimeIntervalsGridDescriptor
- PaymentsOperator
- TransferOperator
- Responses
- 200 OK
- 400 Bad Request
/v1/order/create
Запрос на валидацию или создание заказа на стороне продавца.
В параметрах запроса передается заполненная корзина с ценами товаров, выбранным способом доставки
и полной ценой заказа (orderAmount
). Продавец проверяет корректность цен и состава корзины.
Если корзина корректна, то продавец резервирует товар на 30 минут и отвечает успешным кодом ответа в бэкенд Яндекс Пэй. Бэкенд Яндекс Пэй в течении 30 минут должен прислать нотификации о статусе оплаты. Так же продавец может poll-ить статус заказа через ручку получения деталей заказа в Yandex Pay API.
Если корзина корректна, то продавец резервирует товар на 30 минут и отправляет успешный код ответа с номером заказа. Если продавец не получил нотификацию о изменении статуса оплаты заказа в течении 30 минут, то необходимо синхронно получить детали заказа перед снятием резерва на товар.
Важно
Только после получении статуса оплаты FAILED
продавец может снимать резерв с товаров и отмечать
заказ отмененным.
В случае получения 4xx ответа валидация заказа считается неуспешной, оплата заказа не будет проводиться, повторных попыток проверки заказа осуществляться не будет. В случае получения 5xx ответа запрос будет повторен.
Request
POST
https://example.merchant.ru/v1/order/create
Production
POST
https://sandbox.example.merchant.ru/v1/order/create
Sandbox
Body
application/json
{
"billingContact": {
"email": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneAdditionalCode": "string",
"secondName": "string"
},
"cart": {
"cartId": "string",
"coupons": [
{
"description": "string",
"status": "VALID",
"value": "string"
}
],
"discounts": [
{
"amount": "123.45",
"description": "string",
"discountId": "string"
}
],
"externalId": "string",
"items": [
{
"description": "string",
"discountedUnitPrice": "123.45",
"features": {
"pointsDisabled": false
},
"finalPrice": "123.45",
"measurements": {
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"pointsAmount": "123.45",
"productId": "string",
"quantity": {
"available": "123.45",
"count": "123.45"
},
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"subtotal": "123.45",
"title": "string",
"total": "123.45",
"type": "PHYSICAL",
"unitPrice": "123.45"
}
],
"measurements": {
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"total": {
"amount": "123.45",
"pointsAmount": "123.45"
}
},
"currencyCode": "RUB",
"merchantId": "c3073b9d-edd0-49f2-a28d-b7ded8ff9a8b",
"metadata": "string",
"orderAmount": "123.45",
"orderId": "string",
"paymentMethod": {
"cardLast4": "string",
"cardNetwork": "AMEX",
"methodType": "CARD"
},
"shippingAddress": {
"addressLine": "string",
"building": "string",
"comment": "string",
"country": "string",
"district": "string",
"entrance": "string",
"floor": "string",
"intercom": "string",
"locale": "string",
"locality": "string",
"location": {
"latitude": 0,
"longitude": 0
},
"region": "string",
"room": "string",
"street": "string",
"zip": "string"
},
"shippingContact": {
"email": "string",
"firstName": "string",
"lastName": "string",
"phone": "string",
"phoneAdditionalCode": "string",
"secondName": "string"
},
"shippingMethod": {
"courierOption": {
"allowedPaymentMethods": [
"CARD"
],
"amount": "123.45",
"category": "EXPRESS",
"courierOptionId": "string",
"customerChoice": {
"date": "string",
"time": {
"end": "string",
"start": "string"
}
},
"fromDate": "string",
"fromTime": "string",
"provider": "BOXBERRY",
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"timeIntervals": {
"grid": {
"duration": "string",
"end": "string",
"start": "string",
"step": "string"
},
"type": "GRID",
"values": [
{
"end": "string",
"start": "string"
}
]
},
"title": "string",
"toDate": "string",
"toTime": "string",
"type": "PLAIN"
},
"methodType": "DIRECT",
"pickupOption": {
"address": "string",
"allowedPaymentMethods": [
"CARD"
],
"amount": "123.45",
"description": "string",
"fromDate": "string",
"location": {
"latitude": 0,
"longitude": 0
},
"phones": [
"string"
],
"pickupPointId": "string",
"provider": "YANDEX_MARKET",
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"schedule": [
{
"fromTime": "string",
"label": "string",
"toTime": "string"
}
],
"storagePeriod": 0,
"title": "string",
"toDate": "string"
},
"yandexDeliveryOption": {
"allowedPaymentMethods": [
"CARD"
],
"amount": "123.45",
"category": "EXPRESS",
"fromDatetime": "2022-12-29T18:02:01Z",
"receipt": {
"agent": {
"agentType": 1,
"operation": "string",
"paymentsOperator": {
"phones": [
"string"
]
},
"phones": [
"string"
],
"transferOperator": {
"address": "string",
"inn": "string",
"name": "string",
"phones": [
"string"
]
}
},
"excise": "123.45",
"markQuantity": {
"denominator": 0,
"numerator": 0
},
"measure": 0,
"paymentMethodType": 1,
"paymentSubjectType": 1,
"productCode": "string",
"supplier": {
"inn": "string",
"name": "string",
"phones": [
"string"
]
},
"tax": 1,
"title": "string"
},
"title": "string",
"toDatetime": "2022-12-29T18:02:01Z",
"yandexDeliveryOptionId": "string"
}
}
}
Name |
Description |
cart* |
Type: Cart Корзина |
currencyCode* |
Type: string Трехбуквенный код валюты заказа (ISO 4217) Enum: |
billingContact |
Type: Contact |
merchantId |
Type: string<uuid> |
metadata |
Type: string Произвольные данные, переданные при инициализации кнопки |
orderAmount |
Type: string<double> Полная стоимость заказа к оплате с учётом возвратов, доставки, скидок и промокодов Example: |
orderId |
Type: string Id существующего заказа на стороне продавца, переданный при инициализации кнопки |
paymentMethod |
Type: PaymentMethod Выбранный способ оплаты |
shippingAddress |
Type: Address Адрес доставки доступен, если выбран метод COURIER |
shippingContact |
Type: Contact |
shippingMethod |
Type: ShippingMethod Выбранный способ доставки |
Cart
Name |
Description |
items* |
Type: CartItem[] Позиция корзины |
cartId |
Type: string Внутренний идентификатор корзины Яндекс Пэй. Бэкенд магазина должен использовать этот параметр как идентификатор корзины покупателя и как ключ идемпотентности для запроса |
coupons |
Type: Coupon[] Купоны, применённые к корзине |
discounts |
Type: Discount[] Скидки, применённые к корзине |
externalId |
Type: string Переданный продавцом идентификатор корзины |
measurements |
Type: Measurements |
total |
Type: CartTotal Итоговая стоимость корзины, которая пойдет в оплату |
Contact
Name |
Description |
|
Type: string |
firstName |
Type: string |
lastName |
Type: string |
phone |
Type: string |
phoneAdditionalCode |
Type: string |
secondName |
Type: string |
PaymentMethod
Name |
Description |
methodType* |
Type: string Enum: |
cardLast4 |
Type: string |
cardNetwork |
Type: string Платежная система Enum: |
Address
Name |
Description |
building* |
Type: string |
country* |
Type: string |
addressLine |
Type: string Полный адрес |
comment |
Type: string |
district |
Type: string |
entrance |
Type: string |
floor |
Type: string |
intercom |
Type: string |
locale |
Type: string |
locality |
Type: string |
location |
Type: Location |
region |
Type: string |
room |
Type: string |
street |
Type: string |
zip |
Type: string |
ShippingMethod
Name |
Description |
methodType* |
Type: string Enum: |
courierOption |
Type: CourierOption если methodType == COURIER |
pickupOption |
Type: PickupOption если methodType == PICKUP |
yandexDeliveryOption |
Type: YandexDeliveryOption если methodType == YANDEX_DELIVERY |
CartItem
Name |
Description |
productId* |
Type: string Id товара в системе продавца. В параметрах запроса каждый идентификатор товара |
quantity* |
Type: ItemQuantity Количество товара в заказе |
description |
Type: string Описание товара |
discountedUnitPrice |
Type: string<double> Цена за единицу товара с учётом скидок на позицию Example: |
features |
Type: CartItemFeatures Промо параметры товара |
finalPrice |
Type: string<double> Цена за единицу товара с учётом всех скидок на позицию и на корзину Example: |
measurements |
Type: Measurements Размеры и вес товара. Обязательно для товара типа |
pointsAmount |
Type: string<double> Количество баллов Плюса Поле только для чтения. Переданные значения будут проигнорированы. Example: |
receipt |
Type: ItemReceipt Данные для формирования чека |
subtotal |
Type: string<double> Суммарная цена за позицию без учета скидок Example: |
title |
Type: string Наименование товара |
total |
Type: string<double> Суммарная цена за позицию с учётом скидок на позицию Example: |
type |
Type: string Тип товара. Важен для интеграции с доставками Default: Enum: |
unitPrice |
Type: string<double> Полная цена за единицу товара без учетка скидки Example: |
Coupon
Name |
Description |
value* |
Type: string Код купона |
description |
Type: string Описание. Например, "Скидка 3%" |
status |
Type: string Enum: |
Discount
Name |
Description |
amount* |
Type: string<double> Сумма скидки Example: |
description* |
Type: string Текстовое описание |
discountId* |
Type: string Идентификатор скидки в системе мерчанта |
Measurements
Name |
Description |
height* |
Type: number<float> Высота, в метрах |
length* |
Type: number<float> Длина, в метрах |
weight* |
Type: number<float> Вес, в килограммах |
width* |
Type: number<float> Ширина, в метрах |
CartTotal
Name |
Description |
amount* |
Type: string<double> Стоимость корзины с учетом всех скидок. Example: |
pointsAmount |
Type: string<double> Количество баллов Плюса Поле только для чтения. Переданные значения будут проигнорированы. Example: |
Location
Name |
Description |
latitude* |
Type: number<float> |
longitude* |
Type: number<float> |
CourierOption
Name |
Description |
amount* |
Type: string<double> Стоимость доставки Example: |
category* |
Type: string Enum: |
courierOptionId* |
Type: string id выбранного варианта доставки в системе продавца |
title* |
Type: string Название способа доставки. Показывается пользователю в списке вариантов |
allowedPaymentMethods |
Type: string[] Индивидуальные методы оплаты для метода доставки. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в Enum: |
customerChoice |
Type: FlexibleCustomerChoice Выбранные пользователем дата и интервал. Только для |
fromDate |
Type: string<date> Ближайшая дата доставки для |
fromTime |
Type: string Начало интервала времени доставки. Только для |
provider |
Type: string Тип службы доставки. Enum: |
receipt |
Type: ItemReceipt |
timeIntervals |
Type: FlexibleTimeIntervals Кодирует интервалы времени доставки, доступные для выбора. Только для |
toDate |
Type: string<date> Самая поздняя дата доставки для |
toTime |
Type: string Конец интервала времени доставки. Только для |
type |
Type: string Тип опции.
Для
Default: Enum: |
PickupOption
Name |
Description |
address* |
Type: string Адрес в виде строки |
location* |
Type: Location |
pickupPointId* |
Type: string Уникальный id точки самовывоза в системе продавца |
title* |
Type: string Название точки самовывоза |
allowedPaymentMethods |
Type: string[] Индивидуальные методы оплаты для выбранного способа самовывоза. Доступные методы оплаты заказа при выбранном способе самовывоза. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в Enum: |
amount |
Type: string<double> Стоимость доставки в точку Example: |
description |
Type: string Дополнительное описание |
fromDate |
Type: string<date> YYYY-MM-DD. Ближайшая возможная дата доставки |
phones |
Type: string[] Телефоны для связи |
provider |
Type: string Тип точки вывоза. Enum: |
receipt |
Type: ItemReceipt |
schedule |
Type: PickupSchedule[] График работы точки |
storagePeriod |
Type: integer<int32> Опционально. Срок хранения товара в точке самовывоза в днях |
toDate |
Type: string<date> YYYY-MM-DD. Самая поздняя дата доставки |
YandexDeliveryOption
Name |
Description |
amount* |
Type: string<double> Стоимость доставки Example: |
category* |
Type: string Enum: |
title* |
Type: string Название способа доставки. Показывается пользователю в списке вариантов |
yandexDeliveryOptionId* |
Type: string Id предложения Яндекс Доставки |
allowedPaymentMethods |
Type: string[] Индивидуальные методы оплаты для метода доставки. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в Enum: |
fromDatetime |
Type: string<date-time> |
receipt |
Type: ItemReceipt |
toDatetime |
Type: string<date-time> |
ItemQuantity
Name |
Description |
count* |
Type: string<double> Количество товара в заказе Example: |
available |
Type: string<double> Максимально доступное количество товара Example: |
CartItemFeatures
Name |
Description |
pointsDisabled |
Type: boolean Не распределять баллы Плюса. Используется только при создании заказа. Если это поле не указано, то баллы будут распределены на товар Default: |
ItemReceipt
Name |
Description |
tax* |
Type: integer Описание значений: Ссылка Enum: |
agent |
Type: Agent |
excise |
Type: string<double> Не должно содержать больше двух знаков после запятой. Например: 1.12, 5.1, 10, 11.00 . Example: |
markQuantity |
Type: MarkQuantity |
measure |
Type: integer Описание значений: Ссылка Enum: |
paymentMethodType |
Type: integer Описание значений: Ссылка Enum: |
paymentSubjectType |
Type: integer Описание значений: Ссылка Enum: |
productCode |
Type: string<base64> Код товара (base64 кодированный массив от 1 до 32 байт) |
supplier |
Type: Supplier |
title |
Type: string |
FlexibleCustomerChoice
Name |
Description |
date* |
Type: string<date> |
time |
Type: TimeInterval |
FlexibleTimeIntervals
Name |
Description |
type* |
Type: string Если указан тип Enum: |
grid |
Type: FlexibleTimeIntervalsGridDescriptor Кодирует интервалы в виде сетки. Используйте этот формат, если необходимо задать больше 20 интервалов доставки.
Пример: |
values |
Type: TimeInterval[] Задаёт список интервалов напрямую. Подходит для небольшого количества интервалов доставки. Рекомендуемое максимальная количество интервалов - 20 |
PickupSchedule
Name |
Description |
fromTime* |
Type: string HH:mm, "08:00" |
label* |
Type: string Например, "пн-пт" |
toTime* |
Type: string HH:mm, "20:00" |
Agent
Name |
Description |
agentType* |
Type: integer Признак агента по предмету расчёта. См. значения Enum: |
operation |
Type: string |
paymentsOperator |
Type: PaymentsOperator |
phones |
Type: string[] |
transferOperator |
Type: TransferOperator |
MarkQuantity
Name |
Description |
denominator* |
Type: integer<int32> |
numerator* |
Type: integer<int32> |
Supplier
Name |
Description |
inn |
Type: string |
name |
Type: string |
phones |
Type: string[] |
TimeInterval
Name |
Description |
end* |
Type: string Время конца интервала |
start* |
Type: string Время начала интервала |
FlexibleTimeIntervalsGridDescriptor
Name |
Description |
duration* |
Type: string Продолжительность каждого интервала |
end* |
Type: string Максимальное время начала самого последнего интервала |
start* |
Type: string Время начала самого первого интервала |
step* |
Type: string Разница во времени между началами двух соседних интервалов |
PaymentsOperator
Name |
Description |
phones |
Type: string[] |
TransferOperator
Name |
Description |
address |
Type: string |
inn |
Type: string |
name |
Type: string |
phones |
Type: string[] |
Responses
200 OK
success
Body
application/json
{
"data": {
"metadata": "string",
"orderId": "string",
"redirectUrls": {
"onAbort": "string",
"onError": "string",
"onSuccess": "string"
},
"ttl": null
},
"status": "string"
}
Name |
Description |
data* |
|
status* |
Type: string |
MerchantCreateOrderResponse
Name |
Description |
orderId* |
Type: string ID созданного заказа на стороне продавца |
metadata |
Type: string |
redirectUrls |
Type: MerchantRedirectUrls |
ttl |
Type: integer<int32> Время жизни заказа (в секундах) Default: |
MerchantRedirectUrls
Name |
Description |
onError* |
Type: string Обязательное поле только для онлайн-магазинов. Ссылка для переадресации пользователя в случае возникновения ошибки во время оплаты, или если срок ссылки на оплату истек. |
onSuccess* |
Type: string Обязательное поле только для онлайн-магазинов. Ссылка для переадресации пользователя в случае успешной оплаты. |
onAbort |
Type: string Ссылка для переадресации пользователя в случае отмены процесса оплаты. Отмену оплаты осуществляет пользователь на форме для оплаты. |
400 Bad Request
bad request
Body
application/json
{
"reason": "string",
"reasonCode": "FORBIDDEN",
"status": "fail"
}
Name |
Description |
reasonCode* |
Type: string Enum: |
reason |
Type: string |
status |
Type: string Default: |
No longer supported, please use an alternative and newer version.