Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ошибка с платежным шлюзом 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

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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.