Владимир

Владимир

С нами с 10 сентября 2018; Место в рейтинге пользователей: #1062
Владимир
10 июля 2019, 14:51
0
Все нормик! Спасибо!
Владимир
10 июля 2019, 14:21
+1
//Сниппеты из бд в чанках и на странице
{'snippetName' | snippet: [
    ...params...
]}

Работает! Ты мой спаситель! Прям от души благодарю!
Владимир
10 июля 2019, 14:14
0
Спасибо огромное! Буду пробовать
Владимир
10 июля 2019, 13:58
0
Fenom теги заработали (огромное спасибо!), а сниппеты все так же не обрабатываються (даже в феном вызове)
Владимир
10 июля 2019, 13:51
0
а fenom теги и вызов сниппетов такая ситуация
Владимир
10 июля 2019, 13:45
0
Стандартные теги показывает, тобишь переменные которые передаються в чанк h, l1, l2, l3 (показывает через такой вызов
[[+h]]
)
Владимир
10 июля 2019, 13:40
0
Спасибо за помощь, но тоже не работает(
Владимир
10 июля 2019, 12:16
0
Подставлял уже методом тыка в каждую строку, как не читало fenom теги и снипеты, так и не читает. Есть подозрение что где-то упускаю, что-то но не консоль не чего не показывает, ни сам разобраться не могу(
Владимир
08 июля 2019, 14:59
0
Ребята, подскажите пожалуйста! Как в ajax файле form.php подключить после вызова чанка обработку fenom тегов и снипетов? Вот содержимое файла form.php
<?php
	if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest' || empty($_POST['action'])) {
		return;
	}

	define('MODX_API_MODE', true);

	require dirname(dirname(dirname(__FILE__))) . '/index.php';
	
	$modx->getService('error','error.modError');
	$modx->setLogLevel(modX::LOG_LEVEL_ERROR);
	$modx->setLogTarget('FILE');
	
	
	if ($_POST['action'] == "1" && isset($_POST['mass'])) {
		//Получаем значение для второго селектора

		$output = $modx->getChunk('mass',array(
            'mass' => strval($_POST['mass']),
            'h' => strval($_POST['h']),
            'l1' => strval($_POST['l1']),
            'l2' => strval($_POST['l2']),
            'l3' => strval($_POST['l3']),
        ));

		$result = array($output, 'success');
	}
	else {
		$result = array('Некорректный запрос', 'error');
	}
	
	if (!empty($result)) {
		die(json_encode($result));
	}
Владимир
27 мая 2019, 21:34
0
В общем через создание нового класса так и не получилось (виснет корзина, а при обновлении страницы пишет корзина пуста), но засветилась ошибка в логах, о конфликте с компонентом msExtraFields, снес компонент и выбранная валюта стала передаваться в LiqPay, в общем огромное спасибо! Напишу скрипт на выбор гривны при загрузке страницы и удаления выпадающего списка и будет все ок). Еще раз спасибо!
Владимир
27 мая 2019, 18:04
0
На данный момент в minishope в выборе класса оплаты нельзя вбить свой, а в выпадающем меню только PayPal и LiqPay. Есть ли возможность откорректировать родительский класс?
Владимир
27 мая 2019, 16:43
0
На сколько я понял скрипт находиться здесь core/components/minishop2/custom/payment/liqpay.class.php
<?php

if (!class_exists('msPaymentInterface')) {
	require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/mspaymenthandler.class.php';
}

class LiqPay extends msPaymentHandler implements msPaymentInterface {
	public $config;
	public $modx;

	function __construct(xPDOObject $object, $config = array()) {
		$this->modx = & $object->xpdo;
		$siteUrl = $this->modx->getOption('site_url');
		$assetsUrl = $this->modx->getOption('minishop2.assets_url', $config, $this->modx->getOption('assets_url').'components/minishop2/');
		$paymentUrl = $siteUrl . substr($assetsUrl, 1) . 'payment/liqpay.php';
		$this->config = array_merge(array(
			'paymentUrl' => $paymentUrl
			,'checkoutUrl' => $this->modx->getOption('ms2_payment_liqpay_url', null, 'https://www.liqpay.com/api/pay', true)
			,'public_key' => $this->modx->getOption('ms2_payment_liqpay_public_key')
			,'private_key' => $this->modx->getOption('ms2_payment_liqpay_private_key')
			,'currency' => $this->modx->getOption('ms2_payment_liqpay_currency', 'USD')
			,'culture' => $this->modx->getOption('ms2_payment_liqpay_culture', 'ru')
			,'sandbox' => $this->modx->getOption('ms2_payment_liqpay_sandbox')
			,'payway' => $this->modx->getOption('ms2_payment_liqpay_payway', 'card, liqpay, delayed, invoice, privat24', true)
		), $config);
	}

	/* @inheritdoc} */
	public function send(msOrder $order) {
		$link = $this->getPaymentLink($order);
		return $this->success('', array('redirect' => $link));
	}

	public function getPaymentLink(msOrder $order) {
		$id = $order->get('id');
		$successUrl = $this->config['paymentUrl']."?action=success&order_id=".$id;
		$sum = number_format($order->get('cost'), 2, '.', '');
        $description='Payment #'.$id;
        $signature = base64_encode(sha1($this->config['private_key'].$sum.$this->config['currency'].$this->config['public_key'].$id.'buy'.$description.$successUrl.$this->config['paymentUrl'],1));
		$request = array(
			'url' => $this->config['checkoutUrl']
			,'public_key' => $this->config['public_key']
			,'amount' => $sum
			,'order_id' => $id
			,'type' => 'buy'
			,'pay_way' => $this->config['payway']
			,'language' => $this->config['culture']
			,'sandbox' => $this->config['sandbox']
			,'signature' => $signature
			,'description' => $description
			,'result_url'=> $successUrl
			,'server_url' => $this->config['paymentUrl']
			,'currency' => $this->config['currency']
		);
		$link = $this->config['checkoutUrl'] .'?'. http_build_query($request);
		return $link;
	}

	/* @inheritdoc} */
	public function receive(msOrder $order, $params = array()) {
		$id = $order->get('id');
		$success =
            isset($_POST['amount']) &&
            isset($_POST['currency']) &&
            isset($_POST['public_key']) &&
            isset($_POST['description']) &&
            isset($_POST['order_id']) &&
            isset($_POST['type']) &&
            isset($_POST['status']) &&
            isset($_POST['transaction_id']) &&
            isset($_POST['sender_phone']);
        if (!$success) { die(); }
        $amount = $_POST['amount'];
        $currency = $_POST['currency'];
        $public_key = $_POST['public_key'];
        $description = $_POST['description'];
        $order_id = $_POST['order_id'];
        $type = $_POST['type'];
        $status = $_POST['status'];
        $transaction_id = $_POST['transaction_id'];
        $sender_phone = $_POST['sender_phone'];
        $insig = $_POST['signature'];
        if ($order_id!=$id) { die(); }
        $private_key = $this->config['private_key'];
        $gensig = base64_encode(sha1(join('',compact(
            'private_key',
            'amount',
            'currency',
            'public_key',
            'order_id',
            'type',
            'description',
            'status',
            'transaction_id',
            'sender_phone'
        )),1));
        if ($insig != $gensig) { die(); }
        if ($status == 'sandbox' || $status == 'success') {
        	/* @var miniShop2 $miniShop2 */
			$miniShop2 = $this->modx->getService('miniShop2');
			@$this->modx->context->key = 'mgr';
			$miniShop2->changeOrderStatus($order->get('id'), 2);
			exit('OK');
        } elseif ($status == 'failure') {
            $this->paymentError('Err: wrong signature.', $params);
        }
	}

	public function paymentError($text, $request = array()) {
		$this->modx->log(modX::LOG_LEVEL_ERROR,'[miniShop2:LiqPay] ' . $text . ', request: '.print_r($request,1));
		header("HTTP/1.0 400 Bad Request");

		die('ERR: ' . $text);
	}
}
Вот только как прикрутить к нему выше указанный Вами код, реально не выкупаю. Буду весьма признателен за помощь
Владимир
27 мая 2019, 16:35
0
Ребята, добрый день! Нужна помощь, использую модуль мультивалютности, задача конвертировать цену передаваемую в LiqPay c евро в гривны, вобщем разработчики модуля
msmulticurrency
дали мне этот кусок кода, а куда вставить реально не пойму
$convertCurrencyId = 2; // ID валюты в которую нужно конвертировать цену.
$msmc = $modx->getService('msmulticurrency', 'MsMC');
$convertPrice =  $msmc->getPrice($price, 0, $convertCurrencyId, 0, false);
Владимир
27 мая 2019, 15:44
0
Огромное спасибо! Буду пробовать
Владимир
27 мая 2019, 14:37
0
Ребята, добрый день! Нужна ваша помощь. В общем проблема с выводом конвертированной суммы на страницу оплаты через liqPay.
Коротко о поставленной мне задачи:
У товаров основной валютой должно быть Евро, но в корзине и на страницу оплаты через Liqpay должна быть цена пересчитанная в грн. В общем все настроил, только вот в LiqPay заходит сумма не 3000 грн, 100 грн, где 100 это цена товара в евро.
Владимир
10 сентября 2018, 20:49
0
Ребята, решение отличное! Поставил работает четко, но нужна ваша помощь по скрипту. Использую данное решение для онлайн калькулятора с плагином jAutoCalc, при использовании функции добавить новую форму расчета он копирует контейнер первого без заполненных полей, так вот, класс контейнера и имена селектов естественно не меняють и при выборе в новой скопированной форме первого селекта, второй селект обновляеться в обоих формах, возможно привязать данное действие передачи информации с первого во второй селект с привязкой действия к родительскому контейнеру каждой формы? При копировании форм код получаеться такой:
[[!pdoMenu?
        &level=`1`
        &parents=`2`
        &tplOuter=`@INLINE [[+wrapper]]`
        &tpl=`@INLINE <option value="[[+id]]">[[+menutitle]]</option>`
        &toPlaceholder=`selector-1`
    ]]
<form name="form-calc">
    
Основная форма

    <div class="line_items">
        <select name="selector-1">
            <option selected disabled>Выберите услугу</option>
            [[+selector-1]]
        </select>
        <select name="selector-2">
            <option value="" selected disabled>Выберите врача</option>
        </select>
    </div>

Первая копия

    <div class="line_items">
        <select name="selector-1">
            <option selected disabled>Выберите услугу</option>
            [[+selector-1]]
        </select>
        <select name="selector-2">
            <option value="" selected disabled>Выберите врача</option>
        </select>
    </div>

Вторая копия

    <div class="line_items">
        <select name="selector-1">
            <option selected disabled>Выберите услугу</option>
            [[+selector-1]]
        </select>
        <select name="selector-2">
            <option value="" selected disabled>Выберите врача</option>
        </select>
    </div>

    и т.д.

</form>