/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",
                "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

Contact

cart*

Cart

Корзина

currencyCode*

string

Трехбуквенный код валюты заказа (ISO 4217)
Enum: RUB

merchantId

string<uuid>

metadata

string

Произвольные данные, переданные при инициализации кнопки

orderAmount

string<double>

Полная стоимость заказа к оплате с учётом возвратов, доставки, скидок и промокодов
Example: 123.45

orderId

string

Id существующего заказа на стороне продавца, переданный при инициализации кнопки

paymentMethod

PaymentMethod

Выбранный способ оплаты

shippingAddress

Address

Адрес доставки доступен, если выбран метод COURIER

shippingContact

Contact

shippingMethod

ShippingMethod

Выбранный способ доставки

Contact

Name

Type

Description

email

string

firstName

string

lastName

string

phone

string

phoneAdditionalCode

string

secondName

string

Cart

Корзина

Name

Type

Description

cartId

string

Внутренний идентификатор корзины Яндекс Пэй.

Бэкенд продавца должен использовать этот параметр как идентификатор корзины покупателя и как ключ идемпотентности для запроса /order/create. Если бэкенд продавца получает повторный запрос /order/create, то необходимо вернуть уже созданный номер заказа. На одну корзину (cartId) бэкенд продавца может создать не больше одного заказа (orderId).

coupons

Coupon[]

Купоны, применённые к корзине

discounts

Discount[]

Скидки, применённые к корзине

externalId

string

Переданный продавцом идентификатор корзины

items*

CartItem[]

Позиция корзины

measurements

Measurements

Размеры и вес товара. Обязательно для товара типа PHYSICAL

total

CartTotal

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

PaymentMethod

Выбранный способ оплаты

Name

Type

Description

cardLast4

string

cardNetwork

string

Платежная система
Enum: AMEX, DISCOVER, JCB, MASTERCARD, MAESTRO, VISAELECTRON, VISA, MIR, UNIONPAY, UZCARD, HUMOCARD, UNKNOWN, UNDEFINED, null

methodType*

string

Enum: CARD, SPLIT, SBP, SPLIT_SBP, CASH_ON_DELIVERY, CARD_ON_DELIVERY

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

Location

region

string

room

string

street

string

zip

string

ShippingMethod

Выбранный способ доставки

Name

Type

Description

courierOption

CourierOption

если methodType == COURIER

methodType*

string

Enum: DIRECT, PICKUP, COURIER, YANDEX_DELIVERY

pickupOption

PickupOption

если methodType == PICKUP

yandexDeliveryOption

YandexDeliveryOption

если methodType == YANDEX_DELIVERY

Coupon

Name

Type

Description

description

string

Описание. Например, "Скидка 3%"

status

string

Enum: VALID, INVALID, EXPIRED, null

value*

string

Код купона

Discount

Name

Type

Description

amount*

string<double>

Сумма скидки
Example: 123.45

description*

string

Текстовое описание

discountId*

string

Идентификатор скидки в системе мерчанта

CartItem

Name

Type

Description

description

string

Описание товара

discountedUnitPrice

string<double>

Цена за единицу товара с учётом скидок на позицию
Example: 123.45

finalPrice

string<double>

Цена за единицу товара с учётом всех скидок на позицию и на корзину
Example: 123.45

measurements

Measurements

Размеры и вес товара. Обязательно для товара типа PHYSICAL

productId*

string

Id товара в системе продавца. В параметрах запроса каждый идентификатор товара productId должен быть уникальным

quantity*

ItemQuantity

Количество товара в заказе

receipt

ItemReceipt

Данные для формирования чека

subtotal

string<double>

Суммарная цена за позицию без учета скидок
Example: 123.45

title

string

Наименование товара

total

string<double>

Суммарная цена за позицию с учётом скидок на позицию
Example: 123.45

type

string

Тип товара. Важен для интеграции с доставками
Enum: PHYSICAL, DIGITAL, UNSPECIFIED
Default: UNSPECIFIED

unitPrice

string<double>

Полная цена за единицу товара без учетка скидки
Example: 123.45

Measurements

Размеры и вес товара. Обязательно для товара типа PHYSICAL

Name

Type

Description

height*

number<float>

Высота, в метрах

length*

number<float>

Длина, в метрах

weight*

number<float>

Вес, в килограммах

width*

number<float>

Ширина, в метрах

CartTotal

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

Name

Type

Description

amount*

string<double>

Стоимость корзины с учетом всех скидок, и без учета доставки
Example: 123.45

label

string

Location

Name

Type

Description

latitude*

number<float>

longitude*

number<float>

CourierOption

если methodType == COURIER

Name

Type

Description

allowedPaymentMethods

string[]

Индивидуальные методы оплаты для метода доставки. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в availablePaymentMethods. Если параметр не указан, то используются все методы оплаты, перечисленные в availablePaymentMethods.
Enum: CARD, SPLIT, CASH_ON_DELIVERY, CARD_ON_DELIVERY

amount*

string<double>

Стоимость доставки
Example: 123.45

category*

string

Enum: EXPRESS, TODAY, STANDARD

courierOptionId*

string

id выбранного варианта доставки в системе продавца

customerChoice

FlexibleCustomerChoice

Выбранные пользователем дата и интервал. Только для type: FLEXIBLE

fromDate

string<date>

Ближайшая дата доставки для type: PLAIN. Начало интервала выбора даты доставки для type: FLEXIBLE

fromTime

string

Начало интервала времени доставки. Только для type: PLAIN

provider

string

Тип службы доставки.
Enum: BOXBERRY, CDEK, RUSSIAN_POST, EMS, COURIER, DHL, EXPRESS_DELIVERY, FIVEPOST, OZON_ROCKET, DPD, SBER_LOGISTICS, PEK, PICKPOINT, KCE, PONY_EXPRESS, YANDEX_DELIVERY, null

receipt

ItemReceipt

Данные для формирования чека

timeIntervals

FlexibleTimeIntervals

Кодирует интервалы времени доставки, доступные для выбора. Только для type: FLEXIBLE

title*

string

Название способа доставки. Показывается пользователю в списке вариантов

toDate

string<date>

Самая поздняя дата доставки для type: PLAIN. Конец интервала выбора даты доставки для type: FLEXIBLE

toTime

string

Конец интервала времени доставки. Только для type: PLAIN

type

string

Тип опции. Для FLEXIBLE вариантов доставки пользователю дается возможность выбрать желаемые дату и интервал:

  • дата доставки выбирается покупателем в отрезке [fromDate, toDate]
  • чтобы предоставить пользователю выбор интервала в течении дня, заполните timeIntervals Для PLAIN вариантов такой выбор отсутствует.
    Enum: PLAIN, FLEXIBLE
    Default: PLAIN

PickupOption

если methodType == PICKUP

Name

Type

Description

address*

string

Адрес в виде строки

allowedPaymentMethods

string[]

Индивидуальные методы оплаты для выбранного способа самовывоза. Доступные методы оплаты заказа при выбранном способе самовывоза. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в availablePaymentMethods. Если параметр не указан, то используются все методы оплаты, перечисленные в availablePaymentMethods.
Enum: CARD, SPLIT, CASH_ON_DELIVERY, CARD_ON_DELIVERY

amount

string<double>

Стоимость доставки в точку
Example: 123.45

description

string

Дополнительное описание

fromDate

string<date>

YYYY-MM-DD. Ближайшая возможная дата доставки

location*

Location

phones

string[]

Телефоны для связи

pickupPointId*

string

Уникальный id точки самовывоза в системе продавца

provider

string

Тип точки вывоза.
Enum: YANDEX_MARKET, BOXBERRY, CDEK, IN_STORE, RUSSIAN_POST, PICKPOINT, DPD

receipt

ItemReceipt

Данные для формирования чека

schedule

PickupSchedule[]

График работы точки

storagePeriod

integer<int32>

Опционально. Срок хранения товара в точке самовывоза в днях

title*

string

Название точки самовывоза

toDate

string<date>

YYYY-MM-DD. Самая поздняя дата доставки

YandexDeliveryOption

если methodType == YANDEX_DELIVERY

Name

Type

Description

allowedPaymentMethods

string[]

Индивидуальные методы оплаты для метода доставки. Этот параметр нужно использовать, если нужно ограничить методы оплаты, указанные в availablePaymentMethods. Если параметр не указан, то используются все методы оплаты, перечисленные в availablePaymentMethods.
Enum: CARD, SPLIT, CASH_ON_DELIVERY, CARD_ON_DELIVERY

amount*

string<double>

Стоимость доставки
Example: 123.45

category*

string

Enum: EXPRESS, TODAY, STANDARD

fromDatetime

string<date-time>

receipt

ItemReceipt

Данные для формирования чека

title*

string

Название способа доставки. Показывается пользователю в списке вариантов

toDatetime

string<date-time>

yandexDeliveryOptionId*

string

Id предложения Яндекс Доставки

ItemQuantity

Количество товара в заказе

Name

Type

Description

available

string<double>

Максимально доступное количество товара
Example: 123.45

count*

string<double>

Количество товара в заказе
Example: 123.45

label

string

Название единиц измерения, например "кг" или "шт"

ItemReceipt

Данные для формирования чека

Name

Type

Description

agent

Agent

excise

string<double>

Не должно содержать больше двух знаков после запятой. Например: 1.12, 5.1, 10, 11.00 .
Example: 123.45

markQuantity

MarkQuantity

measure

integer

Описание значений: Ссылка
Enum: 0, 10, 11, 12, 20, 21, 22, 30, 31, 32, 40, 41, 42, 50, 51, 70, 71, 72, 73, 80, 81, 82, 83, 255, null

paymentMethodType

integer

Описание значений: Ссылка
Enum: 1, 2, 3, 4, 5, 6, 7, null

paymentSubjectType

integer

Описание значений: Ссылка
Enum: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, null

productCode

string<base64>

Код товара (base64 кодированный массив от 1 до 32 байт)

supplier

Supplier

tax*

integer

Описание значений: Ссылка
Enum: 1, 2, 3, 4, 5, 6

title

string

FlexibleCustomerChoice

Выбранные пользователем дата и интервал. Только для type: FLEXIBLE

Name

Type

Description

date*

string<date>

time

TimeInterval

Среда

FlexibleTimeIntervals

Кодирует интервалы времени доставки, доступные для выбора. Только для type: FLEXIBLE

Name

Type

Description

grid

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"}]

type*

string

Если указан тип GRID, то необходимо задать поле grid. Если указан тип VALUES, то необходимо задать поле values
Enum: GRID, VALUES

values

TimeInterval[]

Задаёт список интервалов напрямую. Подходит для небольшого количества интервалов доставки. Рекомендуемое максимальная количество интервалов - 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

Описание значений: Ссылка
Enum: 1, 2, 3, 4, 5, 6, 7

operation

string

paymentsOperator

PaymentsOperator

phones

string[]

transferOperator

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

application/json
{
    "data": {
        "metadata": "string",
        "orderId": "string",
        "redirectUrls": {
            "onAbort": "string",
            "onError": "string",
            "onSuccess": "string"
        },
        "ttl": null
    },
    "status": "string"
}

Name

Type

Description

data*

MerchantCreateOrderResponse

status*

string

MerchantCreateOrderResponse

Name

Type

Description

metadata

string

orderId*

string

ID созданного заказа на стороне продавца

redirectUrls

MerchantRedirectUrls

ttl

integer<int32>

Время жизни заказа (в секундах)
Default: null

MerchantRedirectUrls

Name

Type

Description

onAbort

string

Ссылка для переадресации пользователя в случае отмены процесса оплаты

onError*

string

Ссылка для переадресации пользователя в случае возникновения ошибки во время оплаты, или если срок ссылки на оплату истек

onSuccess*

string

Ссылка для переадресации пользователя в случае успешной оплаты

400 Bad Request

bad request

Body

application/json
{
    "reason": "string",
    "reasonCode": "FORBIDDEN",
    "status": "fail"
}

Name

Type

Description

reason

string

reasonCode*

string

Enum: FORBIDDEN, ITEM_NOT_FOUND, ORDER_NOT_FOUND, ORDER_AMOUNT_MISMATCH, ORDER_DETAILS_MISMATCH, OUT_OF_INVENTORY, PICKUP_POINT_NOT_FOUND, SHIPPING_DETAILS_MISMATCH, OTHER, UNAUTHORIZED, TOKEN_EXPIRED, CONFLICT

status

string

Default: fail

Предыдущая
Следующая