21 июня 2023, 11:52 версия 2-8-3 pl Вопросы / [miniShop2] Почему не подключается самописный сервис оплаты? 17 0
21 июня 2023, 11:38 Ну, вот я Ваш метод беру, вот этот: <?php if (!class_exists('msPaymentInterface')) { require_once dirname(__FILE__, 3) . '/handlers/mspaymenthandler.class.php'; } class EpayHalykBank extends msPaymentHandler implements msPaymentInterface { /** * EpayHalykBank constructor. * * @param xPDOObject $object * @param array $config */ function __construct(xPDOObject $object, $config = array()) { parent::__construct($object, $config); $siteUrl = $this->modx->getOption('site_url'); $assetsUrl = $this->modx->getOption('assets_url') . 'components/minishop2/'; $paymentUrl = $siteUrl . substr($assetsUrl, 1) . 'payment/mspepayhalykbank.php'; $this->config = array_merge(array( 'grant_type' => 'client_credentials', 'debug' => $modx->getOption('epay_debug'), 'epayTokenAuthUrl' => $this->config['debug'] == 1 ? $modx->getOption('epay_test_auth_url') : $modx->getOption('epay_prod_auth_url'), 'payPageUrl' => $this->config['debug'] == 1 ? $modx->getOption('epay_test_pay_page_url') : $modx->getOption('epay_pay_page_url'), 'scope' => 'webapi usermanagement email_send verification statement statistics payment', 'client_id' => $modx->getOption('epay_client_id'), 'client_secret' => $modx->getOption('epay_client_secret'), 'currency' => $modx->getOption('epay_payment_currency'), 'terminal_id' => $modx->getOption('epay_terminal_id'), 'postLink' => $modx->makeUrl($modx->getOption('epay_post_success_page_id')), 'failurePostLink' => $modx->makeUrl($modx->getOption('epay_post_error_page_id')) ), $config); } /** * Create Auth Token * * @param * * @return string */ public function paymentAuth(msOrder $order) { $authUrl = $this->config['epayTokenAuthUrl']; $params = array( 'grant_type' => $this->config['grant_type'], 'scope' => $this->config['scope'], 'client_id' => $this->config['client_id'], 'client_secret' => $this->config['client_secret'], 'invoiceID' => $this->getOrderHash($order), 'amount' => $order->get('cost'), 'currency' => $this->config['currency'], 'terminal' => $this->config['terminal_id'], 'postLink' => $this->config['postLink'], 'failurePostLink' => $this->config['failurePostLink'] ); $myCurl = curl_init(); curl_setopt_array($myCurl, array( CURLOPT_URL => $authUrl, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($params) )); $response = curl_exec($myCurl); curl_close($myCurl); return json_decode($response, true); } /** * Returns a direct link for continue payment process of existing order * * @param msOrder $order * * @return string */ public function getPaymentLink(msOrder $order) { $authResponse = $this->paymentAuth($order); $msAddress = $order->getOne('Address'); $orderPhone = $msAddress->get('phone'); $orderEmail = $msAddress->get('email'); $orderReceiver = $msAddress->get('receiver'); $orderComment = $msAddress->get('comment'); if(substr($orderPhone, 0, 1) == '7'){ $orderPhone = '+' . $orderPhone; } // if($authResponse['access_token']) // 'data' => "{\"statement\":{\"name\":\"Arman Ali\",\"invoiceID\":\"80000016\"}}", return $this->config['payPageUrl'] . '?' . http_build_query(array( 'action' => 'continue', 'msorder' => $order->get('id'), 'mscode' => $this->getOrderHash($order), 'invoiceId' => $this->getOrderHash($order), 'backLink' => $this->config['postLink'].'?action=success', 'failureBackLink' => $this->config['failurePostLink'].'?action=error', 'postLink' => $this->$siteUrl, 'failurePostLink' => $this->config['failurePostLink'].'?action=error', 'language' => 'rus', 'description' => 'Оплата в интернет магазине', 'accountId' => $this->config['client_id'], 'terminal' => $this->config['terminal_id'], 'amount' => $order->get('cost'), 'data' => array( 'name' => $orderReceiver, 'orderId' => $order->get('id'), 'invoiceId' => $this->getOrderHash($order), 'phone' => $orderPhone, 'email' => $orderEmail, 'comment' => $orderComment ), 'currency' => $this->config['currency'], 'phone' => $orderPhone, 'email' => $orderEmail, 'cardSave' => true, 'auth' => $authResponse )); } }Заменяю в require_once dirname(__FILE__, 3) . '/handlers/mspaymenthandler.class.php';путь на свой: require_once dirname(__FILE__, 3) . '/model/minishop2/mspaymenthandler.class.php';название класса оставляю прежним, регистрирую через if ($miniShop2 = $this->modx->getService('miniShop2')) { $miniShop2->addService('payment', 'EpayHalykBank', '{core_path}components/minishop2/custom/payment/epayhalykbank.class.php' ); }Может быть я что-то ещё упускаю? И ещё, а вот как это должно вообще работать (хотя бы в общих чертах)? После нажатия кнопки «Оплатить заказ» что должно происходить? в каких файлах какие функции должны отрабатывать? Для меня просто оплата в minishop2 пока новый опыт и я не совсем представляю как это вообще работает Вопросы / [miniShop2] Почему не подключается самописный сервис оплаты? 17 0
21 июня 2023, 11:23 а видели я пишу выше «регистрирую через $this->modx»? это я как раз про регистрацию в системе через консоль. делаю как раз по документации, на которую вы ссылаетесь. Создаю класс, подключаю его через консоль, в ms2_services сервис прописывается, {«cart»:[],«order»:[],«payment»:{«epayhalykbank»:"{core_path}components\/minishop2\/custom\/payment\/epayhalykbank.class.php"},«delivery»:[]} но класс-обработчик не появляется в выпадашке при создании нового способа оплаты Вопросы / Как создать новый метод оплаты для minishop2? 10 0
21 июня 2023, 11:18 я так и делаю, как раз по вашему топику, регистрирую в консоли, указываю свой название класса и файла, в сервисах путь появляется, но в выборе способа оплаты — пусто, только стандартный PayPal (я, кстати, тоже для ХалыкБанка пытаюсь сделать) Вопросы / [miniShop2] Почему не подключается самописный сервис оплаты? 17 0
20 июня 2023, 16:22 копирую Ваш код, регистрирую через $this->modx, но при создании оплаты, класс-обработчик всё равно не появляется disk.yandex.ru/d/xq_rjkOVRfquHQ только стандартный PayPal. Подскажите, пожалуйста, в чём может быть проблема Вопросы / Как создать новый метод оплаты для minishop2? 10 0
31 мая 2023, 13:25 Да, так сработало! Спасибо огромное! получается, в where можно и просто готовое условие вписать… учтём Вопросы / [msProducts] Как вывести товары у которых old_price больше чем price 9 0
31 мая 2023, 13:12 Тот же резальтат. SQL-запрос генерится с условием WHERE ( `msProduct`.`class_key` = 'msProduct' AND `Data`.`old_price` > 'Data.price' AND `Data`.`internet_magazin` = '1' AND `msProduct`.`parent` IN (21904, ...) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 )вот тут неправильно получается `Data`.`old_price` > 'Data.price'а должно быть `Data`.`old_price` > `Data`.`price`Если поменять руками запрос в PHPMySql, то всё работает, но как сделать так, чтобы сниппет msProducts эту часть правильно генерил? Кстати, есть вообще документация как правильно прописывать в сниппете условие where? Только не с типичными примерами, а что-то посложнее типа того что у меня Вопросы / [msProducts] Как вывести товары у которых old_price больше чем price 9 0
31 мая 2023, 12:33 Копирую ваш вариант, естественно со своими родителями, выдаёт всё равно все товары подряд и со скидкой и без. Если убрать условие по свойству internet_magazin, то выдаёт то же самое, все товары. Вот запрос: Added where condition: class_key=msProduct, Data.old_price:>=Data.price,… Вопросы / [msProducts] Как вывести товары у которых old_price больше чем price 9 0
30 мая 2023, 18:11 internet_magazin — это свойство товара, расширенное вручную, не через msAddField Вопросы / [msProducts] Как вывести товары у которых old_price больше чем price 9 0
14 февраля 2023, 18:01 не вопрос! Вопросы / Как контролировать изменение свойств товара при сохранении ресурса? 7 0
13 февраля 2023, 15:30 Спасибо! Это помогло) Вопросы / Как контролировать изменение свойств товара при сохранении ресурса? 7 0
12 февраля 2023, 09:14 тот же самый результат( Вопросы / Как контролировать изменение свойств товара при сохранении ресурса? 7 0
01 февраля 2023, 15:11 Спасибо за объяснение Вопросы / [pdoResources] Что такое prepareTVs и processTVs ? 2 0
20 октября 2022, 18:03 а как его подключить? Вопросы / Почему не выводятся значения переменных в чанке сниппета на fenom? 5 0
20 октября 2022, 17:44 да я эти варианты в первую очередь проверил, не выводит ничего Вопросы / Почему не выводятся значения переменных в чанке сниппета на fenom? 5 0
12 сентября 2022, 13:45 Я в классе уже дописал, но как говорится, есть нюанс. Получается, что у нас в начале выгрузки все товары с сайта пропадут, и будут появляться по мере работы выгрузки? Как-то это не очень хорошее решение. Может как-то можно сверять массивы ID товаров на сайте и в выгрузке и потом, положим, по тем ID, что нет в выгрузке пробегаться, и отключать эти товары? Вопросы / [mSync / mSklad] Деактивация товаров при выгрузке 5 0
12 сентября 2022, 11:36 У меня есть только событие mskladOnProductImport На него можно повесить? Или оно срабатывает на каждом ресурсе, а не до выгрузки? joxi.ru/5mdEGK0IJ49952 Вопросы / [mSync / mSklad] Деактивация товаров при выгрузке 5 0
08 сентября 2022, 16:09 Здравствуйте. Не могу обратиться с вопросом в техподдержу, поэтому попробую спросить здесь, может кто-то подскажет. У нас на сайте требуется произвести получение документов из 1С на сайт (Счета, Платежи и Отчеты за период), возможна ли реализация данного функционала через mSklad/mSync? Может быть, есть какие-то готовые решения или же сторонние модули, которые бы могли решить данную задачу? Передача данных из 1С (скорее всего, в xml формате). Необходимо получать данные и записывать их БД сайта. Новые дополнения и их версии / [mSync] Новая версия синхронизации с 1С 89 0
30 июня 2022, 18:01 Я их уже пробовал. Так же, как и у автора, у меня не работает Вопросы / Как получить значение из массива, установленного в плейсхолдер через fenom? 3 0
19 июня 2022, 15:57 Так контекстов предполагается много, плюс самих шаблонов там дофига. Нужно какое-то более универсальное решение Вопросы / [pdoMenu] Генерация меню на основе другого контекста 4 0
gtsAPI 1.1.7 — таблицы на TanStack, инлайн-редактирование как в Excel Prime Vue datatable тупит на 200+ строк и в виртуальном скролинге высота полей фиксирована. Вот нам в итоге и не подошло. Директор сказал расчет должен сразу показываться без пагин...
mxApi — быстрый внешний API для MODX Revolution • зафиксировать публичный контракт EndpointInterface / метаданных по semver, чтобы наш провайдер не ломался на обновлениях;Фактически это уже так, beta стоит просто на всякий случа...
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Заменяю в
путь на свой:
название класса оставляю прежним,
регистрирую через
Может быть я что-то ещё упускаю?
И ещё, а вот как это должно вообще работать (хотя бы в общих чертах)? После нажатия кнопки «Оплатить заказ» что должно происходить? в каких файлах какие функции должны отрабатывать? Для меня просто оплата в minishop2 пока новый опыт и я не совсем представляю как это вообще работает
Создаю класс, подключаю его через консоль, в ms2_services сервис прописывается,
{«cart»:[],«order»:[],«payment»:{«epayhalykbank»:"{core_path}components\/minishop2\/custom\/payment\/epayhalykbank.class.php"},«delivery»:[]}
но класс-обработчик не появляется в выпадашке при создании нового способа оплаты
вот тут неправильно получается
а должно быть
Если поменять руками запрос в PHPMySql, то всё работает, но как сделать так, чтобы сниппет msProducts эту часть правильно генерил? Кстати, есть вообще документация как правильно прописывать в сниппете условие where? Только не с типичными примерами, а что-то посложнее типа того что у меня
Вот запрос: Added where condition: class_key=msProduct, Data.old_price:>=Data.price,…
joxi.ru/5mdEGK0IJ49952
Не могу обратиться с вопросом в техподдержу, поэтому попробую спросить здесь, может кто-то подскажет.
У нас на сайте требуется произвести получение документов из 1С на сайт (Счета, Платежи и Отчеты за период), возможна ли реализация данного функционала через mSklad/mSync? Может быть, есть какие-то готовые решения или же сторонние модули, которые бы могли решить данную задачу?
Передача данных из 1С (скорее всего, в xml формате). Необходимо получать данные и записывать их БД сайта.