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