Не вызывает метод оплаты
Есть такой код покупки в один клик, отрабатывает хорошо, создает заказ в заказы минишопа, но не редиректит на оплату, в данном случае робокассу(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);
Комментарии: 2
Не редиректит на оплату, потому что в коде этого нет. Вы же не стали расширять класс msOrderHandler, а написали свой сниппет или плагин, который создает объект msOrder, но не использует стандартный класс. Вообще это можно сделать проще. Если быстрый заказ работает для одного товара на просто отправить POST-запрос
И вот ещё вариант modstore.pro/packages/integration/msoneclick )))
$.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 )))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.