Покупка товара в один клик

Привет всем. На сайте всего несколько товаров и хочется реализовать покупку в один клик без корзины.
То есть человек нажал на кнопку купить и сразу перешёл в платёжную систему.

Возможно это реализовать через Minishop2 или разумнее написать свой сниппет.
Подскажите разумный подход в решении этой задачи.
Павел
14 июня 2015, 20:44
modx.pro
8
4 682
0

Комментарии: 3

but1head
15 июня 2015, 02:40
0
костыль:

1) нажимаем кнопку купить, товар летит в корзину, идет редирект на страницу «тест»
2) страница тест по загрузке делает $('#msOrder').submit(); с левыми полями изначально заполнеными на уровне верстки, с выбранонной платежкой по умолчанию и редиректит на оплату
3) profit

ну или сделать это все грамотно на уровне сниппета через ajaxform

    Воеводский Михаил
    15 июня 2015, 02:44
    4
    +3
    Потребуется свой сниппет, который запустит всего 2 метода minishop2:

    $minishop2->cart->add($productId, $count);
    
    $orderData = array(/* Здесь много полей, имеющихся в стандартной форме заказа */);
    $minishop2->order->submit($orderData);
      Константин
      04 марта 2016, 15:30
      7
      +1
      Недавно делал на сайте вот так:

      Вызов сниппета через 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();
          }
      })
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        3