- Request
- Contact
- Cart
- PaymentMethod
- Address
- ShippingMethod
- Coupon
- Discount
- CartItem
- Measurements
- CartTotal
- Location
- CourierOption
- PickupOption
- YandexDeliveryOption
- ItemQuantity
- 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
method |
url |
description |
|
|
|
Body
{
"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": [
{
"discountedUnitPrice": "123.45",
"finalPrice": "123.45",
"measurements": {
"height": 0,
"length": 0,
"weight": 0,
"width": 0
},
"productId": "string",
"quantity": {
"available": "123.45",
"count": "123.45",
"label": "string"
},
"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",
"label": "string"
}
},
"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 |
Type |
Description |
billingContact |
||
cart* |
Корзина |
|
currencyCode* |
string |
Трехбуквенный код валюты заказа (ISO 4217) |
merchantId |
string<uuid> |
|
metadata |
string |
Произвольные данные, переданные при инициализации кнопки |
orderAmount |
string<double> |
Полная стоимость заказа к оплате с учётом возвратов, доставки, скидок и промокодов |
orderId |
string |
Id существующего заказа на стороне продавца, переданный при инициализации кнопки |
paymentMethod |
Выбранный способ оплаты |
|
shippingAddress |
Адрес доставки доступен, если выбран метод COURIER |
|
shippingContact |
||
shippingMethod |
Выбранный способ доставки |
Contact
Name |
Type |
Description |
|
string |
|
firstName |
string |
|
lastName |
string |
|
phone |
string |
|
phoneAdditionalCode |
string |
|
secondName |
string |
Cart
Корзина
Name |
Type |
Description |
cartId |
string |
Внутренний идентификатор корзины Яндекс Пэй. Бэкенд продавца должен использовать этот параметр как идентификатор корзины покупателя и как ключ идемпотентности для запроса |
coupons |
Coupon[] |
Купоны, применённые к корзине |
discounts |
Discount[] |
Скидки, применённые к корзине |
externalId |
string |
Переданный продавцом идентификатор корзины |
items* |
CartItem[] |
Позиция корзины |
measurements |
Размеры и вес товара. Обязательно для товара типа |
|
total |
Итоговая стоимость корзины, которая пойдет в оплату |
PaymentMethod
Выбранный способ оплаты
Name |
Type |
Description |
cardLast4 |
string |
|
cardNetwork |
string |
Платежная система |
methodType* |
string |
Enum: |
Address
Адрес доставки доступен, если выбран метод COURIER
Name |
Type |
Description |
addressLine |
string |
Полный адрес |
building* |
string |
|
comment |
string |
|
country* |
string |
|
district |
string |
|
entrance |
string |
|
floor |
string |
|
intercom |
string |
|
locale |
string |
|
locality |
string |
|
location |
||
region |
string |
|
room |
string |
|
street |
string |
|
zip |
string |
ShippingMethod
Выбранный способ доставки
Name |
Type |
Description |
courierOption |
если methodType == COURIER |
|
methodType* |
string |
Enum: |
pickupOption |
если methodType == PICKUP |
|
yandexDeliveryOption |
если methodType == YANDEX_DELIVERY |
Coupon
Name |
Type |
Description |
description |
string |
Описание. Например, "Скидка 3%" |
status |
string |
Enum: |
value* |
string |
Код купона |
Discount
Name |
Type |
Description |
amount* |
string<double> |
Сумма скидки |
description* |
string |
Текстовое описание |
discountId* |
string |
Идентификатор скидки в системе мерчанта |
CartItem
Name |
Type |
Description |
discountedUnitPrice |
string<double> |
Цена за единицу товара с учётом скидок на позицию |
finalPrice |
string<double> |
Цена за единицу товара с учётом всех скидок на позицию и на корзину |
measurements |
Размеры и вес товара. Обязательно для товара типа |
|
productId* |
string |
Id товара в системе продавца |
quantity* |
Количество товара в заказе |
|
receipt |
Данные для формирования чека |
|
subtotal |
string<double> |
Суммарная цена за позицию без учета скидок |
title |
string |
Наименование товара |
total |
string<double> |
Суммарная цена за позицию с учётом скидок на позицию |
type |
string |
Тип товара. Важен для интеграции с доставками |
unitPrice |
string<double> |
Полная цена за единицу товара без учетка скидки |
Measurements
Размеры и вес товара. Обязательно для товара типа PHYSICAL
Name |
Type |
Description |
height* |
number<float> |
Высота, в метрах |
length* |
number<float> |
Длина, в метрах |
weight* |
number<float> |
Вес, в килограммах |
width* |
number<float> |
Ширина, в метрах |
CartTotal
Итоговая стоимость корзины, которая пойдет в оплату
Name |
Type |
Description |
amount* |
string<double> |
Стоимость корзины с учетом всех скидок, и без учета доставки |
label |
string |
Location
Name |
Type |
Description |
latitude* |
number<float> |
|
longitude* |
number<float> |
CourierOption
если methodType == COURIER
Name |
Type |
Description |
allowedPaymentMethods |
string[] |
Индивидуальные методы оплаты для метода доставки. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в |
amount* |
string<double> |
Стоимость доставки |
category* |
string |
Enum: |
courierOptionId* |
string |
id выбранного варианта доставки в системе продавца |
customerChoice |
Выбранные пользователем дата и интервал. Только для |
|
fromDate |
string<date> |
Ближайшая дата доставки для |
fromTime |
string |
Начало интервала времени доставки. Только для |
provider |
string |
Тип службы доставки. |
receipt |
Данные для формирования чека |
|
timeIntervals |
Кодирует интервалы времени доставки, доступные для выбора. Только для |
|
title* |
string |
Название способа доставки. Показывается пользователю в списке вариантов |
toDate |
string<date> |
Самая поздняя дата доставки для |
toTime |
string |
Конец интервала времени доставки. Только для |
type |
string |
Тип опции.
Для
|
PickupOption
если methodType == PICKUP
Name |
Type |
Description |
address* |
string |
Адрес в виде строки |
allowedPaymentMethods |
string[] |
Индивидуальные методы оплаты для выбранного способа самовывоза. Доступные методы оплаты заказа при выбранном способе самовывоза. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в |
amount |
string<double> |
Стоимость доставки в точку |
description |
string |
Дополнительное описание |
fromDate |
string<date> |
YYYY-MM-DD. Ближайшая возможная дата доставки |
location* |
||
phones |
string[] |
Телефоны для связи |
pickupPointId* |
string |
Уникальный id точки самовывоза в системе продавца |
provider |
string |
Тип точки вывоза. |
receipt |
Данные для формирования чека |
|
schedule |
График работы точки |
|
storagePeriod |
integer<int32> |
Опционально. Срок хранения товара в точке самовывоза в днях |
title* |
string |
Название точки самовывоза |
toDate |
string<date> |
YYYY-MM-DD. Самая поздняя дата доставки |
YandexDeliveryOption
если methodType == YANDEX_DELIVERY
Name |
Type |
Description |
allowedPaymentMethods |
string[] |
Индивидуальные методы оплаты для метода доставки. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в |
amount* |
string<double> |
Стоимость доставки |
category* |
string |
Enum: |
fromDatetime |
string<date-time> |
|
receipt |
Данные для формирования чека |
|
title* |
string |
Название способа доставки. Показывается пользователю в списке вариантов |
toDatetime |
string<date-time> |
|
yandexDeliveryOptionId* |
string |
Id предложения Яндекс Доставки |
ItemQuantity
Количество товара в заказе
Name |
Type |
Description |
available |
string<double> |
Максимально доступное количество товара |
count* |
string<double> |
Количество товара в заказе |
label |
string |
Название единиц измерения, например "кг" или "шт" |
ItemReceipt
Данные для формирования чека
Name |
Type |
Description |
agent |
||
excise |
string<double> |
Не должно содержать больше двух знаков после запятой.
Например: 1.12, 5.1, 10, 11.00 . |
markQuantity |
||
measure |
integer |
Описание значений: Ссылка |
paymentMethodType |
integer |
Описание значений: Ссылка |
paymentSubjectType |
integer |
Описание значений: Ссылка |
productCode |
string<base64> |
Код товара (base64 кодированный массив от 1 до 32 байт) |
supplier |
||
tax* |
integer |
Описание значений: Ссылка |
title |
string |
FlexibleCustomerChoice
Выбранные пользователем дата и интервал. Только для type: FLEXIBLE
Name |
Type |
Description |
date* |
string<date> |
|
time |
Среда |
FlexibleTimeIntervals
Кодирует интервалы времени доставки, доступные для выбора. Только для type: FLEXIBLE
Name |
Type |
Description |
grid |
Кодирует интервалы в виде сетки. Используйте этот формат, если необходимо задать больше 20 интервалов доставки.
Пример: |
|
type* |
string |
Если указан тип |
values |
Задаёт список интервалов напрямую. Подходит для небольшого количества интервалов доставки. Рекомендуемое максимальная количество интервалов - 20 |
PickupSchedule
Name |
Type |
Description |
fromTime* |
string |
HH:mm, "08:00" |
label* |
string |
Например, "пн-пт" |
toTime* |
string |
HH:mm, "20:00" |
Agent
Name |
Type |
Description |
agentType* |
integer |
Описание значений: Ссылка |
operation |
string |
|
paymentsOperator |
||
phones |
string[] |
|
transferOperator |
MarkQuantity
Name |
Type |
Description |
denominator* |
integer<int32> |
|
numerator* |
integer<int32> |
Supplier
Name |
Type |
Description |
inn |
string |
|
name |
string |
|
phones |
string[] |
TimeInterval
Среда
Name |
Type |
Description |
end* |
string |
Время конца интервала |
start* |
string |
Время начала интервала |
FlexibleTimeIntervalsGridDescriptor
Кодирует интервалы в виде сетки. Используйте этот формат, если необходимо задать больше 20 интервалов доставки.
Пример: {"start": "09:00", "end": "21:00", "duration": "00:20", "step": "01:00"}
трактуется как набор интервалов: [{"start": "09:00", "end": "09:20"}, {"start": "10:00", "end": "10:20"}, ..., {"start": "20:00", "end": "20:20"}]
Name |
Type |
Description |
duration* |
string |
Продолжительность каждого интервала |
end* |
string |
Максимальное время начала самого последнего интервала |
start* |
string |
Время начала самого первого интервала |
step* |
string |
Разница во времени между началами двух соседних интервалов |
PaymentsOperator
Name |
Type |
Description |
phones |
string[] |
TransferOperator
Name |
Type |
Description |
address |
string |
|
inn |
string |
|
name |
string |
|
phones |
string[] |
Responses
200 OK
success
Body
{
"data": {
"metadata": "string",
"orderId": "string",
"redirectUrls": {
"onError": "string",
"onSuccess": "string"
},
"ttl": null
},
"status": "string"
}
Name |
Type |
Description |
data* |
||
status* |
string |
MerchantCreateOrderResponse
Name |
Type |
Description |
metadata |
string |
|
orderId* |
string |
ID созданного заказа на стороне продавца |
redirectUrls |
||
ttl |
integer<int32> |
Время жизни заказа (в секундах) |
MerchantRedirectUrls
Name |
Type |
Description |
onError* |
string |
Ссылка для переадресации пользователя в случае возникновения ошибки во время оплаты, или если срок ссылки на оплату истек |
onSuccess* |
string |
Ссылка для переадресации пользователя в случае успешной оплаты |
400 Bad Request
bad request
Body
{
"reason": "string",
"reasonCode": "FORBIDDEN",
"status": "fail"
}
Name |
Type |
Description |
reason |
string |
|
reasonCode* |
string |
Enum: |
status |
string |
Default: |