Покупка товара в один клик
        Привет всем. На сайте всего несколько товаров и хочется реализовать покупку в один клик без корзины.
То есть человек нажал на кнопку купить и сразу перешёл в платёжную систему.
Возможно это реализовать через Minishop2 или разумнее написать свой сниппет.
Подскажите разумный подход в решении этой задачи.
    
    
                                                                                
            То есть человек нажал на кнопку купить и сразу перешёл в платёжную систему.
Возможно это реализовать через Minishop2 или разумнее написать свой сниппет.
Подскажите разумный подход в решении этой задачи.
Комментарии: 3
                костыль:
1) нажимаем кнопку купить, товар летит в корзину, идет редирект на страницу «тест»
2) страница тест по загрузке делает $('#msOrder').submit(); с левыми полями изначально заполнеными на уровне верстки, с выбранонной платежкой по умолчанию и редиректит на оплату
3) profit
ну или сделать это все грамотно на уровне сниппета через ajaxform
            
                    1) нажимаем кнопку купить, товар летит в корзину, идет редирект на страницу «тест»
2) страница тест по загрузке делает $('#msOrder').submit(); с левыми полями изначально заполнеными на уровне верстки, с выбранонной платежкой по умолчанию и редиректит на оплату
3) profit
ну или сделать это все грамотно на уровне сниппета через ajaxform
                Потребуется свой сниппет, который запустит всего 2 метода minishop2:
                    $minishop2->cart->add($productId, $count);
$orderData = array(/* Здесь много полей, имеющихся в стандартной форме заказа */);
$minishop2->order->submit($orderData);            
                Недавно делал на сайте вот так:
Вызов сниппета через AjaxForm
И вот сам сниппет QuickOrder
JS Callback для отправки формы:
                    Вызов сниппета через AjaxForm
[[!AjaxForm?
	&snippet=`QuickOrder`
	&form=`order.form`
]]И вот сам сниппет QuickOrder
<?php
$errors = array();
if ( empty( trim( $_POST['total'] ) ) OR !is_numeric( trim( $_POST['total'] ) ) ) {
    $errors['total'] = 'Вы не заполнили кол-во человек';
}
if ( empty( trim( $_POST['phone'] ) ) ) {
    $errors['phone'] = 'Вы не заполнили телефон';
}
if ( !empty( $errors ) ) {
    return $AjaxForm->error( 'В форме содержатся ошибки!', $errors );
} else {
    $miniShop2 = $modx->getService( 'minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties );
    if ( !( $miniShop2 instanceof miniShop2 ) ) {
        return $AjaxForm->error( 'Ошибка скрипта!' );
    }
    
    $miniShop2->initialize($modx->context->key, $scriptProperties);
    
    $miniShop2->order->add( 'receiver', trim( $_POST['receiver'] )  );
    $miniShop2->order->add( 'email', trim( $_POST['email'] ) );
    $miniShop2->order->add( 'delivery', 1 ); // id метода доставки
    $miniShop2->order->add( 'payment', 1 ); // id метода оплаты
    
    $miniShop2->cart->add($_POST['id'], $modx->getOption('count', $_POST, 1), $modx->getOption('options', $_POST, array()));
    
    return $AjaxForm->success( 'Форма успешно отправлена. Сейчас вы перейдете на страницу оплаты.' );
}JS Callback для отправки формы:
$( document ).on('af_complete', function( event, response ) {
    if( response.success ) {
        response.form[0].submit();
    }
})            
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.