Jump to content
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

 

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

Featured Replies

  • Author
16 часов назад, siv1987 сказал:

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

4.4.10

  • Author

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

  • Author

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

Какая валюта указана в настройках метода?
Откройте 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;
}

 

  • Author

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

Цитата

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

 

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

  • Author
42 минуты назад, siv1987 сказал:

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

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

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

  • Author
1 час назад, siv1987 сказал:

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

 

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

Screenshot_2.thumb.png.8f6747f4293951e42ac484fdff7a1bb9.png

 

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

  • Author

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

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

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

yandexmoney.php

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

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

Edited by Back

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

  • Author

пусто 🤷‍♂️

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

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

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

Create an account or sign in to comment

Recently Browsing 0

  • No registered users viewing this page.

Account

Navigation

Search

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.