Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Ошибка с платежным шлюзом Yandex.Money Payment Gateway

Здраствуйте установил я себе приложения Yandex.Money Payment Gateway 1.0.2 https://invisioncommunity.com/files/file/9355-yandexmoney-payment-gateway/ Yandex.Money_Gateway_1.0.2.zip

Настроил хотел сделать тестовую покупку но яндекс выдает мне ошибку помогите кто знает в чем проблема

Скрытый текст

Screenshot_1.thumb.png.45f39efaa71eeeb0e605b8af7e88b181.png

 

Изменено пользователем Lesovsky
Формулируйте заголовки темы корректно, обязательно указывайте содержание вопроса

Рекомендованные сообщения

А версия форума какая?

  • Автор
16 часов назад, siv1987 сказал:

А версия форума какая?

4.4.10

  • Автор

@siv1987, возможно какое-то решение буду очень благодарен

  • Автор

Я есть люди которые смогут помочь очень нужно ребята

Какая валюта указана в настройках метода?
Откройте applications/yandexmoney/interface/yandexmoney.php

Найти
$order = \IPS\Request::i()->nexustransactionid;

Добавить после
print_r([$transaction->amount->currency, $transaction->amount->amount, getCurs($transaction->amount->currency), $transactionAmount]); exit;

Выполнить платеж и привести отладочную информацию.
Эта так называемую функция "getCurs" возвращает FALSE в случае неудачного ответа или неправильных данных, а результат никак не проверяется, и при умножении на цену получаем сумму в ноль. Замените return false; на return 1; А по хорошему всю функцию на, для использование кеша

function getCurs( $moneyCode )
{
	$moneyCode = mb_strtoupper( $moneyCode );
	$xmlString = '';
	
	if( \IPS\Data\Store::i()->exists( 'currencyRate' ) )
	{
		$xmlString = \IPS\Data\Store::i()->get( 'currencyRate' );
		
		$date = \IPS\DateTime::create();
		$date->setTimezone( new \DateTimeZone( 'Europe/Moscow' ) );

		preg_match( '/Date="(.*?)"/', $xmlString, $match );
		if( $match[1] != $date->format('d.m.Y') )
		{
			$xmlString = '';
		}
	}
	if( !$xmlString )
	{
		$xmlString = (string) \IPS\Http\Url::external('http://www.cbr.ru/scripts/XML_daily.asp')->request()->get();
		if( $xmlString )
		{
			\IPS\Data\Store::i()->set( 'currencyRate', $xmlString );
		}
	}
	
	if( $xml = @simplexml_load_string( $xmlString ) )
	{
		$row = $xml->xpath('/ValCurs/Valute[./CharCode[text()="'.$moneyCode.'"]]')[0];
		if( $row )
		{
			return (string) \str_replace( '.', ',', $row->Value );
		}
	}
	
	return 1;
}

 

  • Автор

Спасибо большое я заменил но ошибка

Цитата

Что-то пошло не так. Пожалуйста, попробуйте еще раз.

 

Замените moneyCurs на getCurs, ошибся в названии функции.

  • Автор
42 минуты назад, siv1987 сказал:

Замените moneyCurs на getCurs, ошибся в названии функции.

Так сейчас и так стоит getCurs

Внимательно поиском па файлу посмотрите.

  • Автор
1 час назад, siv1987 сказал:

Внимательно поиском па файлу посмотрите.

 

Скрытый текст

Screenshot_2.thumb.png.8f6747f4293951e42ac484fdff7a1bb9.png

 

Я в этом файле не вижу правки которые выше указал сделать. Слелайте правку и приведите отладочную информацию от нее. Также я ничего не услышал о настройках метода оплаты. Больше я тут ничем помочь не могу. Логика написана довольно корява (как обычно), возможно вам лучше обратится к его автору, он между прочим русскоязычный как я понял.

  • Автор

Менял все что писали мне выше ошибка

Скрытый текст

Что-то пошло не так. Пожалуйста, попробуйте еще раз.

yandexmoney.php

Автор не отвечает писал уже

Приложения все настроил ранее работало обновил форум перестало работать

Изменено пользователем Back

В папке /uploads/logs/ должны быть логи этой ошибки, покажите их.

  • Автор

пусто 🤷‍♂️

Поставил к нам, аналогичная проблема.

17.06.2020 в 01:35, siv1987 сказал:

Откройте applications/yandexmoney/interface/yandexmoney.php

Найти
$order = \IPS\Request::i()->nexustransactionid;

Добавить после
print_r([$transaction->amount->currency, $transaction->amount->amount, getCurs($transaction->amount->currency), $transactionAmount]); exit;

Array ( [0] => руб [1] => IPS\Math\Number Object ( [positive:protected] => 1 [beforeDecimalPoint:protected] => 1 [numberOfDecimalPlaces:protected] => 0 [afterDecimalPoint:protected] => 0 ) [2] => [3] => 1.00 ) 

 

14 часов назад, siv1987 сказал:

В папке /uploads/logs/ должны быть логи этой ошибки, покажите их.

В логах ничего не создаётся, т.к. Request идет к Яндекс.Деньгам, вот он и выдёт ошибку как у ТС в начале поста.

 

Сделал предложенные правки @siv1987 вот результат:

 

Скрытый текст

image.png

 

UPD:

Но радость была не долгой, сработало раз, изменил цену на 2 рубля, попробовал снова, начала выбивать ошибка:

image.png

В логах пусто.

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.