Jump to content

Лог ошибок модуля яндекс.деньги


Recommended Posts

Добрый вечер!

 

Друзья, может быть кто-то может подсказать где посмотреть по следующему вопросу. К симпле подключен модуль оплаты яндекс.деньгами. И периодически возникают проблемы с оплатой, оказалось оплата не проходит из-за нехватки товара на складе. При этом например при оплате картой через этот модуль - яндекс долго думает, а потом сообщает что произошла техническая проблема и предлагает обратиться в саппорт. 

 

Хранится ли где-то в файлике лог подобных ошибок, где можно было бы посмотреть эту информацию? Чтобы можно было самому смотреть причину не прохождения платежа, а не ждать миллион лет ответа их поддержки?

Edited by Alexspb
Link to post
Share on other sites

если не работает оплата яндекса то там в модуле оплаты небольшая ошибка

в файле yandexmoney.php или yandex.php есть строчка где генерируется кнопка

примерно так:

$button = '<form method="POST" action="'.$payment_url.'">
....

и там есть 

<input type="hidden" name="customerNumber" value="'.$order->id.'">

вот его заменить на 

<input type="hidden" name="orderNumber" value="'.$order->id.'">

и все будет работать.

ну еще на хостинге у вас должен быть установлен сертификат ssl

 

а проверка наличия:

в коллбек.пхп изменить вот так

////////////////////////////////////
// Проверка наличия товара
////////////////////////////////////
$purchases = $simpla->orders->get_purchases(array('order_id'=>intval($order->id)));
foreach($purchases as $purchase)
{
	$variant = $simpla->variants->get_variant(intval($purchase->variant_id));
	if(empty($variant)/* || (!$variant->infinity && $variant->stock < $purchase->amount)*/)
	{
		print_error("Нехватка товара $purchase->product_name $purchase->variant_name");
	}
}

Edited by batanov
Link to post
Share on other sites

 

если не работает оплата яндекса то там в модуле оплаты небольшая ошибка

 

а проверка наличия:

в коллбек.пхп изменить вот так

////////////////////////////////////
// Проверка наличия товара
////////////////////////////////////
$purchases = $simpla->orders->get_purchases(array('order_id'=>intval($order->id)));
foreach($purchases as $purchase)
{
	$variant = $simpla->variants->get_variant(intval($purchase->variant_id));
	if(empty($variant)/* || (!$variant->infinity && $variant->stock < $purchase->amount)*/)
	{
		print_error("Нехватка товара $purchase->product_name $purchase->variant_name");
	}
}

 

 

Спасибо.

 

Модуль у меня работает в основном, и сертификат установлен. По наличию товара у меня другая история немного, связанная с синхронизацией в сервисе МойСклад. Вопрос заключается в том - ведется ли где-то в системных файлах симплы лог-файл ошибок оплаты и их причин? Т.к. яндекс со своей стороны просто говорит о проблеме, но никак не отражает ее сути.

 

 

А что именно делает фрагмент пхп, который вы предложили добавить? На какой стадии он проверяет нехватку товара и в какой ситуации об этом сообщает?

Link to post
Share on other sites

Вопрос заключается в том - ведется ли где-то в системных файлах симплы лог-файл ошибок оплаты и их причин?

Нет, такого удовольствия не предоставлено. И это, конечно, плохо...
Link to post
Share on other sites

Спасибо.

 

Модуль у меня работает в основном, и сертификат установлен. По наличию товара у меня другая история немного, связанная с синхронизацией в сервисе МойСклад. Вопрос заключается в том - ведется ли где-то в системных файлах симплы лог-файл ошибок оплаты и их причин? Т.к. яндекс со своей стороны просто говорит о проблеме, но никак не отражает ее сути.

 

 

А что именно делает фрагмент пхп, который вы предложили добавить? На какой стадии он проверяет нехватку товара и в какой ситуации об этом сообщает?

этот кусок кода проверят наличие товара, что б оплата не ушла в обработку если нет наличи на складе...  и нужно не добавить а сравнить что у вас есть с этим, и сделать вот так

if(empty($variant)/* || (!$variant->infinity && $variant->stock < $purchase->amount)*/
Link to post
Share on other sites
  • 2 years later...

Вопросм решен. Может понадобиться тем, кто пользуется Яндекс.Кассой и собирается отправлять чеки клиентам по новому закону 54-ФЗ.

 

в файле payment/YandexMoney/YandexMoney.php после

$payment_type = ($payment_sitemode)?$settings['yandex_paymenttype']:'';

вставляем

$purchases = $this->orders->get_purchases(array('order_id'=>$order->id));

$customerContact = ($order->email)?htmlspecialchars($order->email, ENT_QUOTES):htmlspecialchars(preg_replace("/[-+() ]/",'',$order->phone), ENT_QUOTES);

$items = array();
foreach($purchases as $purchase) {
	$quantity = $purchase->amount;
	$amount = $purchase->price;
	$text = ($purchase->variant_name)?htmlspecialchars($purchase->product_name, ENT_QUOTES).' '.$purchase->variant_name:htmlspecialchars($purchase->product_name, ENT_QUOTES);
	$items[] = '{ "quantity": '.$quantity.', "price": {"amount": '.$amount.', "currency": "RUB"}, "tax": 1, "text": "'.$text.'"}';
}

далее в кнопку $button перед

<input type="submit" name="submit-button" value="'.$button_text.'" class="checkout_button btn"> 

добавляем

<input type="hidden" name="receipt" value="{ "customerContact": "'.$customerContact.'", "items": ['.implode(',',$items).'] }"/> 

В цене товара не учитываются скидки или купоны, поэтому этот вопрос решайте отдельно, в зависимости у кого как реализовано.

 

 
В итоге получим в форме оплаты список товаров для передачи данных в чек согласно инструкции от Яндекса.
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...