Создание заказа в данном случае можно осуществить, отправив POST-запрос с определенными полями на /fast_checkout.json.
В ответ этот JSON выдает номер заказа, ключ, id и другие данные, которые могут быть нужны для отправки в партнерские сети и другие внешние системы.
Принимает все те же поля, что и оформление заказа, т.е.:
client[email] | e-mail покупателя |
client[name] | имя покупателя |
client[phone] | телефон (если в настройках поля включена проверка формата, то она будет действовать и при оформлении заказа через fast_checkout.json), обязательное поле |
order[delivery_variant_id] | id способа доставки (можно взять шаблонизатором через массив account.delivery_variants), обязательное поле |
order[payment_gateway_id] | id способа оплаты (можно взять шаблонизатором через массив account.payment_gateways), обязательное поле |
Все собственные поля, созданные в разделе Настройки - Оформление заказа также можно отправить. Но их нельзя взять шаблонизатором, это значит что прописывать их в форме для fast_checkout нужно жестко с использованием их идентификаторов. Привязка способов оплаты к способам доставки также учитывается, т.е. если отправить в форме способ оплаты, который не привязан к отправленному вместе с ним способу оплаты, то заказ создан не будет.
Привязка способов доставки к регионам так же действует при таком оформлении заказа.
Все поля, отмеченные в разделе Настройки - Оформление заказа как обязательные, являются обязательными и в случае оформления заказа через fast_checkout.
Помимо описанных полей на оформление заказа также будет отправлена вся покупательская корзина. Поэтому если она пуста, то следует отправить в нее товар до отправки формы быстрого заказа.
Для создания заказа требуется хотя бы один товар, способ доставки, способ оплаты и заполнение всех полей, указанных как обязательные (по умолчанию это имя покупателя и телефон).
$.post('/fast_checkout.json', {
client: {
email: 'client@mail.ru',
name: 'Антон',
phone: '+7 (111) 111 11 11'
},
order: {
delivery_variant_id: 123456,
payment_gateway_id: 123456
}
})
.done(function (response) {
if (response.status == 'ok') {
console.log(response);
} else {
console.log(response);
}
})
.fail(function (fail) {
console.log(fail);
})