Не вызывает метод оплаты

Есть такой код покупки в один клик, отрабатывает хорошо, создает заказ в заказы минишопа, но не редиректит на оплату, в данном случае робокассу(id=3), через корзину все норм работает. Подскажите пожалуйста в чем может быть проблема.
$id = $_POST['idp'];
    $receiver = $_POST['receiver'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $count = 1;

    $output = array();
    $output['success'] = true;

    if($receiver!='' && $email!='' && $phone!='' && $id){
        // если проверка прошла успешно - оформляем заказ
        if($output['success']){
            // инициализируем miniShop2
            $scriptProperties = array(
        	  'json_response' => true,
        	  'max_count' => 1000,
        	  'allow_deleted' => false,
        	  'allow_unpublished' => false
        	);
        	
        	$miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
        	
        	// опции товара, если они необходимы
        	$option = array();
        	/*$option = array(
        	  "option1" => "value1",
        	  "option2" => "value2",
        	);*/
        	// инициализируем miniShop2 в текущем контексте
        	$miniShop2->initialize($modx->context->key, $scriptProperties);
        	// чистим корзину
        	$miniShop2->cart->clean();
        	$miniShop2->order->clean();
        	// добавляем товар в корзину
        	$arr = json_decode($miniShop2->cart->add($id, $count, $option), true);

        	$modx->log(E_ERROR, print_r($arr,1));
        	
        	// формируем заказ
        	$miniShop2->order->add('receiver', $receiver);
        	$miniShop2->order->add('email', $email);
        	$miniShop2->order->add('phone', $phone);
        	//$miniShop2->order->add('comment', $comment);
        	$miniShop2->order->add('payment', 3);
        	$miniShop2->order->add('delivery', 1);
            $orderfeed = $miniShop2->order->submit();
        	$arr = json_decode($orderfeed,true);
        	$modx->log(E_ERROR, print_r($arr,1));
        	
            $output['success'] = true;
            $output['message'] = "Ваш заказ оформлен";
        }
    }else{
        $output['success'] = false;
        $output['message'] = "Данные не прошли проверку валидности или у вас не указан ID товара";
    }

echo json_encode($output);
alex
18 декабря 2020, 06:51
modx.pro
539
0

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

Артем
18 декабря 2020, 16:51
0
    Артур Шевченко
    18 декабря 2020, 23:46
    0
    Не редиректит на оплату, потому что в коде этого нет. Вы же не стали расширять класс msOrderHandler, а написали свой сниппет или плагин, который создает объект msOrder, но не использует стандартный класс. Вообще это можно сделать проще. Если быстрый заказ работает для одного товара на просто отправить POST-запрос
    $.post(document.location.href, {'ms2_action':'cart/add', 'id': product_id, 'ctx':'web', 'count':1},function(response){
    response = JSON.parse(response);
    if(response.success){
    $.post(document.location.href, {'ms2_action':'order/create', 'id': product_id, 'ctx':'web', 'count':1},function(response){});
    }
    });
    Если нужно предварительно очищать корзину, то обернуть всё в ещё один запрос 'cart/clean', ну и в :'order/create' там больше данных передавать надо, можно всю форму целиком, главное чтобы поля были правильно названы.

    И вот ещё вариант modstore.pro/packages/integration/msoneclick )))
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2