Всего 125 668 комментариев

Alexey
14 февраля 2021, 22:31
1
+2
Привет! В файле core/components/minishop2/custom/payment/robokassa.class.php заменить метод getPaymentLink на следующий код:

public function getPaymentLink(msOrder $order)
    {
        $id = $order->get('id');
        $sum = number_format($order->get('cost'), 2, '.', '');
	//список товаров в заказе
	$order_goods = $this->modx->getCollection('msOrderProduct', ['order_id' => $id]);
	$tmp = [];
	foreach($order_goods as $key => $good) {
	    $tmp[$key]['name'] = $good->name;
	    $tmp[$key]['quantity'] = $good->count;
	    $tmp[$key]['sum'] = $good->cost;
	    $tmp[$key]['tax'] = 'none';
	}
		
        //номенклатура заказа
        $receipt = ['items' => array_values($tmp)];
	$receipt_json = json_encode($receipt, JSON_UNESCAPED_UNICODE);
	$SignatureValue = md5($this->config['login'] . ':' . $sum . ':' . $id. ':' . $receipt_json . ':' . $this->config['pass1']);
        $request = array(
            'url' => $this->config['checkoutUrl'],
            'MrchLogin' => $this->config['login'],
            'OutSum' => $sum,
            'InvId' => $id,
            'Desc' => 'Payment #' . $id,
            'IncCurrLabel' => $this->config['currency'],
            'Culture' => $this->config['culture'],
            'Receipt' => $receipt_json,
            'SignatureValue' => $SignatureValue,
        );
        
        if (!empty($this->config['test_mode'])) {
            $request['isTest'] = 1;
        }
        $link = $this->config['checkoutUrl'] . '?' . http_build_query($request);
        return $link;
    }

Компонент давно не обновляется, нужна была оперативность, поэтому правил исходники компонента. Нужно иметь в виду, что если выйдет апдейт, то эти правки будут затерты. Про расширение классов, думаю, можно немало информации найти, хотя бы здесь.

Делал под конкретный сайта, поэтому передавал только необходимые параметры. Советую почитать тут ( skrinshoter.ru/s/140221/5d2fQ6PK?a ), возможно, нужно передать другую систему налогообложения, налоговую ставку и т.д…
Евгений Мельников
14 февраля 2021, 20:41
0
Добрый день!
В связи с введением новых правил, в чеках теперь должны быть указаны товары. Кто-нибудь решил такую задачу? Можете подсказать решение?
dokreg
14 февраля 2021, 18:20
0
спасибо большое, так работает
Андрей
14 февраля 2021, 18:17
+1
Попробуй так:
'where' => ['resid:=' => $_modx->resource.id]
Иван Бочкарев
14 февраля 2021, 15:47
+1
Обновление дополнения доступно в репозитории
Sergey
14 февраля 2021, 15:02
0
Спасибо большое! Работает
Николай Савин
14 февраля 2021, 14:58
+1
Решение.
Открываем файл core/components/minishop2/model/minishop2/msproductdata.class.php
Находим строку 648
Меняем
$data = array_merge($data, $response['data']);
на
$data = array_merge($data, $response['data']['data']);
Обновление исправляющее ошибку официально выйдет в ближайшие дни
Иван Бочкарев
14 февраля 2021, 14:39
0
Это не решение. Фикс будет возможно сегодня.
Николай Савин
14 февраля 2021, 11:54
+2
Обратиться в modstore — это конечно хорошо. Но компонент был приобретен в 2018 году и прекрасно работал до вчерашнего дня. А значит нам нужно будет платить только за то, что что-то пошло не так после обновления.
Странное у вас понимание проблемы. Авторизация не на ровном месте же сломалась. Она полностью изменилась со стороны AMO. У вас в любом случае она больше бы не работала.

Несколько десятков проектов обновились — и ничего работают. Проблем нет.

Платить вас никто не заставляет конечно — ровно как и меня вам помогать.
Единственное что я могу вам посоветовать вслепую не щупая проблему — Попробуйте саму интеграцию удалить, создайте заново, прямо с нуля с новым client ID -
Futuris
14 февраля 2021, 11:29
0
То что написано ошибка авторизации — это у меня хватило ума прочитать. Вопрос только что с этим делать? Я уже не один раз создавал новые ключи авторизации и обновлял данные в настройках. Но это не помогает, также как и полная очистка папки кеша на сервере.
Как уже писал заказы из корзины перестают работать уже после установки компонента, даже без всяких настроек, и их внесение не меняет ситуацию.

Обратиться в modstore — это конечно хорошо. Но компонент был приобретен в 2018 году и прекрасно работал до вчерашнего дня. А значит нам нужно будет платить только за то, что что-то пошло не так после обновления.

Николай Савин
13 февраля 2021, 22:12
0
Ну очевидно же — что то идет не так с авторизацией.
Попробуйте очистить кэш, а конкретно удалить в кэше каталог amocrm, затем заново создайте в личном кабинете ключ авторизации (он всего 20 минут действует), обновите эти данные в системных настройках сайта и сделайте заказ.
Если не поможет — пишите в техподдержку на modstore — разберемся.
yuri
13 февраля 2021, 20:56
0
тоже надо было.
вот ответ — [[#[[*parent]].alias]]
Futuris
13 февраля 2021, 18:35
0
Здравствуйте! У нас стояла старая версия amoCRM, которая была настроена еще старым методом через API в кабинете AMO и веб-хуки. Все это работало и заказы поступали в AMO. А вот после обновления компонента и установки связи новым методом (т.е. по новой инструкции с ID интеграции, секретным ключом и кодом авторизации) — перестали отправляться заказы из корзины сайта. Т.е. при нажатии кнопки «Отправить заказ» страница виснет.
Причем, заказы перестают отправляться уже после установки компонента даже без настроек, а после внесения настроек эта ситуация не меняется.

В логах выдает ошибку запроса, код — 401, см. скриншот.

olik
13 февраля 2021, 17:16
0
Вернутся к пакету minishop2-2.6.0 ошибка пропадает.
Фарит
Фарит
13 февраля 2021, 16:22
0
Site sucker
Mandarins
13 февраля 2021, 15:34
0
core/components/pdotools/model/pdotools/pdotools.class.php 446
Ошибка пипец как смущает, после обновления, 6 мегабайт уже.
Ошибка пишет тут
// Processing given placeholders
            if (!empty($properties)) {
                $pl = $this->makePlaceholders($properties);
               $content = str_replace($pl['pl'], $pl['vl'], $content);
            }
Что делать и как устранить её?
Klike
13 февраля 2021, 15:29
0
Может я что-то делаю не так, но на стандартных чанках tpl.msCart и tpl.msOrder перестало считать общую сумму корзины и заказа, стоимость при этом меняется.



Артур Шевченко
13 февраля 2021, 12:29
0
Если сайт на modx, то вытаскивать верстку, чтобы превратить её в статику, кажется ещё более некошерным. Создайте новый контекст и заливайте туда новую информацию.
atrox
13 февраля 2021, 11:34
0
спасибо, буду решать с хостингом
Дмитрий Танцирев
13 февраля 2021, 08:33
+3
Привет!) Исправляюсь)
Я уж если честно, забыл совсем про этот коммит.
Мне уведомления приходят, что тут какая-то движуха происходит, но всё как-то времени не было посмотреть нормально.

@Андрей Шевяков протестировал верно. На сколько я вижу, тестировал он именно в корзине. Если тест производился в карточке товара — то не ок.
Не ок в том плане — что мой коммит работает тогда не верно =)

Логика:
1. Кладём товар в корзину с любой опцией (с выбранным размером, цветом, фасоном, хоть с чем).
2. Теперь идём в корзину (именно в корзину) и по аналогии с кол-вом товара, мы можем менять и опции товара.

Если мы зашли в карточку товара, положили этот товар с опцией в корзину, остались в карточке этого товара и снова добавили этот же товар в корзину но с другой опцией — то в корзину должен упасть «новый» товар. Т.е. этот же товар, но с другой опцией.
Если же вместо этого поменялась опция — то мой коммит работает НЕ верно.
Ибо в этом случае не возможно будет заказать несколько позиций одного и того же товара, но с разными опциями (с разным размером, цветом и т.п.).
Тобишь коммит должен работать только в корзине.

Тест:
1. Положили товар в корзину с опцией.
2. Положили этот же товар еще раз в корзину но с другой опцией — если добавился новый товар — то всё ок.
Если же у товара в корзине обновилась опция — то можно прекращать тест — мой код работает не верно.
3. Идём в корзину. В &tpl сниппета msCart, как и писал @Андрей Шевяков по аналогии с кол-вом товара добавляем:

<form method="post" class="ms2_form">
        <input type="hidden" name="key" value="{$product.key}">
        <input type="hidden" name="count" value="1">
        <input type="text" name="options[size]" value="{$product.options.size}">
        <button type="submit" name="ms2_action" value="cart/change">Изменить размер</button>
    </form>
Ну и собственно пытаемся изменить размер.

По поводу лексикона:
— просто добавить новый лексикон и надеется что всё заработает — не получится =)
— коммит изменяет стандартную функцию $miniShop2->cart->change(). А она в свою очередь предназначалась только для изменения кол-ва товара.
Соответственно нужно дописывать код и смотреть что именно изменяется.
Если изменилось кол-во — то выводить одно уведомление.
Если изменилась опция — то выводить другое уведомление.
Если изменилось и то и другое — то ваш сайт удалится =) шучу =)