Сделать заказ в minishop2
Добрый день. Не могу разобраться как сделать заказ что бы он появился в заказах в minishop2. Пытаюсь реализовать покупку в одик клик. Сделал обращение через аякс к снипиту, передаю в него айди, цену и т д, но какой код написать в самом снипите для добавления заказа не могу разобраться.
думаю что должно быть что то типо такого:
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($modx->context->key);
$miniShop2->order->add( 'receiver', trim( 34 ) );
$miniShop2->order->add( 'email', trim( 314 ) );
$miniShop2->order->add( 'delivery', 1 ); // id метода доставки
$miniShop2->order->add( 'payment', 1 ); // id метода оплаты
Подскажите пожалуйста.
думаю что должно быть что то типо такого:
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($modx->context->key);
$miniShop2->order->add( 'receiver', trim( 34 ) );
$miniShop2->order->add( 'email', trim( 314 ) );
$miniShop2->order->add( 'delivery', 1 ); // id метода доставки
$miniShop2->order->add( 'payment', 1 ); // id метода оплаты
Подскажите пожалуйста.
Комментарии: 6
Нужно использовать
$miniShop2->cart->add();
У меня такой сниппет QuickOrdera — остался еще от старых программистов $context = $modx->context->get('key');
if ($context == 'mgr' || empty($_POST['quick_order']) || empty($_POST['id']) || empty($_POST['customer'])) {
return;
}
/**
* @var miniShop2 $miniShop2
*/
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize($context, array(
'json_response' => false,
));
if (!($miniShop2 instanceof miniShop2)) {
return;
}
$_POST['customer'] = array_merge(array(
'delivery' => 1,
'payment' => 1,
'adress' => 'Quickbuy',
), $_POST['customer']);
foreach (array('email', 'phone', 'receiver', 'delivery', 'payment','adress') as $field) {
$response = $miniShop2->order->add($field, $modx->getOption($field, $_POST['customer'], ''));
if (empty($response['success'])) {
return;
}
}
$response = $miniShop2->cart->clean();
if (empty($response['success'])) {
return;
}
$response = $miniShop2->cart->add($_POST['id'], $modx->getOption('count', $_POST, 1), $modx->getOption('options', $_POST, array()));
if (empty($response['success'])) {
return;
}
$miniShop2->order->submit();
Не помог ваш код, почему то $miniShop2->order->submit(); не отрабатывает, добавление в корзину срабатывает, а именно с сабмитом проблемы ((
if (empty($response['success'])) {
return;
}
Значит эту проверку не проходит. Посмотрите что у вас в массиве $response обычным дебагом.Посмотрите еще в $_POST['customer'] после
$_POST['customer'] = array_merge(array(
'delivery' => 1,
'payment' => 1,
'adress' => 'Quickbuy',
), $_POST['customer']);
В общем я делаю вот так
Fatal error: Call to a member function submit() on null in /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/cache/includes/elements/modsnippet/94.include.cache.php on line 40
если убрать $minishop2->order->submit(); добавление в корзину сработает
с чем это связано?
$id = $_POST['id'];
$id = $_POST['id'];
$miniShop2 = $modx->getService('minishop2');
$miniShop2->initialize('web');
$miniShop2->order->add( 'receiver', 'sss' );
$miniShop2->order->add( 'email', 'kepamuk@yandex.ru' );
// $miniShop2->order->add( 'delivery', 1 );
$miniShop2->order->add( 'payment', 1 );
$miniShop2->cart->add($_POST['id'], 1);
$minishop2->order->submit();
После чего выходит такая ошибкаFatal error: Call to a member function submit() on null in /home/s/spbsiayx/spbsiayx.bget.ru/public_html/core/cache/includes/elements/modsnippet/94.include.cache.php on line 40
если убрать $minishop2->order->submit(); добавление в корзину сработает
с чем это связано?
С невнимательностью.
$miniShop2->cart->add($_POST['id'], 1);
$minishop2->order->submit();
Ничего не замечаешь в именах переменных?
Уже справился
1) Если указать $miniShop2->order->add( 'delivery', 1 ); то почему то письмо не приходит, не знаю чем доставка мешает отправке.
2) Если поставить $miniShop2->cart->clean(); то отправится один товар как надо, но тогда если в корзине были товары, они удалятся, получается мне нужно как то сохранять текущие товары корзины, потому запускать этот скрипт и после него опять вставлять сохраненые товары в корзину так?
$scriptProperties = array(
'json_response' => true, // возвращать ответы в JSON
'max_count' => 1, // максимальное число товаров для добавления за один раз
'allow_deleted' => false, // не добавлять в корзину товары с deleted = 1
'allow_unpublished' => false, // не добавлять в корзину товары с published = 0
);
$miniShop2 = $modx->getService('minishop2','miniShop2', MODX_CORE_PATH . 'components/minishop2/model/minishop2/', $scriptProperties);
// Инициализируем класс в текущий контекст
$miniShop2->initialize($modx->context->key, $scriptProperties);
$miniShop2->cart->clean();
$miniShop2->cart->add($_POST['id']);
$miniShop2->order->add('reciever','test');
$miniShop2->order->add('email','kepamuk34@gmail.com');
$miniShop2->order->add( 'payment', 1 );
// $miniShop2->order->add( 'delivery', 1 );
$miniShop2->order->submit();
Но есть еще пара вопросов:1) Если указать $miniShop2->order->add( 'delivery', 1 ); то почему то письмо не приходит, не знаю чем доставка мешает отправке.
2) Если поставить $miniShop2->cart->clean(); то отправится один товар как надо, но тогда если в корзине были товары, они удалятся, получается мне нужно как то сохранять текущие товары корзины, потому запускать этот скрипт и после него опять вставлять сохраненые товары в корзину так?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.