/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: RUB

billingContact

Type: Contact

merchantId

Type: string<uuid>

metadata

Type: string

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

orderAmount

Type: string<double>

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

Example: 123.45

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

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

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

coupons

Type: Coupon[]

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

discounts

Type: Discount[]

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

externalId

Type: string

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

measurements

Type: Measurements

total

Type: CartTotal

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

Contact

Name

Description

email

Type: string

firstName

Type: string

lastName

Type: string

phone

Type: string

phoneAdditionalCode

Type: string

secondName

Type: string

PaymentMethod

Name

Description

methodType*

Type: string

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

cardLast4

Type: string

cardNetwork

Type: string

Платежная система

Enum: AMEX, DISCOVER, JCB, MASTERCARD, MAESTRO, VISAELECTRON, VISA, MIR, UNIONPAY, UZCARD, HUMOCARD, UNKNOWN, UNDEFINED, null

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: DIRECT, PICKUP, COURIER, YANDEX_DELIVERY

courierOption

Type: CourierOption

если methodType == COURIER

pickupOption

Type: PickupOption

если methodType == PICKUP

yandexDeliveryOption

Type: YandexDeliveryOption

если methodType == YANDEX_DELIVERY

CartItem

Name

Description

productId*

Type: string

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

quantity*

Type: ItemQuantity

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

description

Type: string

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

discountedUnitPrice

Type: string<double>

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

Example: 123.45

features

Type: CartItemFeatures

Промо параметры товара

finalPrice

Type: string<double>

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

Example: 123.45

measurements

Type: Measurements

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

pointsAmount

Type: string<double>

Количество баллов Плюса

Поле только для чтения. Переданные значения будут проигнорированы.

Example: 123.45

receipt

Type: ItemReceipt

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

subtotal

Type: string<double>

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

Example: 123.45

title

Type: string

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

total

Type: string<double>

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

Example: 123.45

type

Type: string

Тип товара. Важен для интеграции с доставками

Default: UNSPECIFIED

Enum: PHYSICAL, DIGITAL, UNSPECIFIED

unitPrice

Type: string<double>

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

Example: 123.45

Coupon

Name

Description

value*

Type: string

Код купона

description

Type: string

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

status

Type: string

Enum: VALID, INVALID, EXPIRED, null

Discount

Name

Description

amount*

Type: string<double>

Сумма скидки

Example: 123.45

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: 123.45

pointsAmount

Type: string<double>

Количество баллов Плюса

Поле только для чтения. Переданные значения будут проигнорированы.

Example: 123.45

Location

Name

Description

latitude*

Type: number<float>

longitude*

Type: number<float>

CourierOption

Name

Description

amount*

Type: string<double>

Стоимость доставки

Example: 123.45

category*

Type: string

Enum: EXPRESS, TODAY, STANDARD

courierOptionId*

Type: string

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

title*

Type: string

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

allowedPaymentMethods

Type: string[]

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

Enum: CARD, SPLIT, CASH_ON_DELIVERY, CARD_ON_DELIVERY

customerChoice

Type: FlexibleCustomerChoice

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

fromDate

Type: string<date>

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

fromTime

Type: string

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

provider

Type: 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

Type: ItemReceipt

timeIntervals

Type: FlexibleTimeIntervals

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

toDate

Type: string<date>

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

toTime

Type: string

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

type

Type: string

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

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

Default: PLAIN

Enum: PLAIN, FLEXIBLE

PickupOption

Name

Description

address*

Type: string

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

location*

Type: Location

pickupPointId*

Type: string

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

title*

Type: string

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

allowedPaymentMethods

Type: string[]

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

Enum: CARD, SPLIT, CASH_ON_DELIVERY, CARD_ON_DELIVERY

amount

Type: string<double>

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

Example: 123.45

description

Type: string

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

fromDate

Type: string<date>

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

phones

Type: string[]

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

provider

Type: string

Тип точки вывоза.

Enum: YANDEX_MARKET, BOXBERRY, CDEK, IN_STORE, RUSSIAN_POST, PICKPOINT, DPD

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: 123.45

category*

Type: string

Enum: EXPRESS, TODAY, STANDARD

title*

Type: string

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

yandexDeliveryOptionId*

Type: string

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

allowedPaymentMethods

Type: string[]

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

Enum: CARD, SPLIT, CASH_ON_DELIVERY, CARD_ON_DELIVERY

fromDatetime

Type: string<date-time>

receipt

Type: ItemReceipt

toDatetime

Type: string<date-time>

ItemQuantity

Name

Description

count*

Type: string<double>

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

Example: 123.45

available

Type: string<double>

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

Example: 123.45

CartItemFeatures

Name

Description

pointsDisabled

Type: boolean

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

Default:

ItemReceipt

Name

Description

tax*

Type: integer

Описание значений: Ссылка

Enum: 1, 2, 3, 4, 5, 6

agent

Type: Agent

excise

Type: string<double>

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

Example: 123.45

markQuantity

Type: MarkQuantity

measure

Type: 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

Type: integer

Описание значений: Ссылка

Enum: 1, 2, 3, 4, 5, 6, 7, null

paymentSubjectType

Type: 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

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

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

Enum: GRID, VALUES

grid

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

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: 1, 2, 3, 4, 5, 6, 7

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*

Type: MerchantCreateOrderResponse

status*

Type: string

MerchantCreateOrderResponse

Name

Description

orderId*

Type: string

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

metadata

Type: string

redirectUrls

Type: MerchantRedirectUrls

ttl

Type: integer<int32>

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

Default: null

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: 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

reason

Type: string

status

Type: string

Default: fail

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