Почему YooMoney может не цеплять обработчик?

ЗАКРЫТО InstantCMS 2.X
#1 11 декабря 2021 в 19:10

Добрый вечер! Возникла тут в общем неразрешимая для меня проблема. Есть сайт, на котором есть тип контента, и в нем у каждой записи есть форма оплаты. Реализована при помощи YooMoney.

Код формы:

  1. <form method="POST" action="https://yoomoney.ru/quickpay/confirm.xml">
  2. <input type="hidden" name="receiver" value="<?php echo $item['money2']; ?>"/>
  3. <input type="hidden" name="formcomment" value="Оплата товара <?php html($item['title']); ?> в маркетплейсе <?php echo $market; ?>"/>
  4. <input type="hidden" name="short-dest" value="Продавец: <?php html($item['user']['nickname']); ?>"/>
  5. <input type="hidden" name="label" value="<?php echo $id; ?>"/>
  6. <input type="hidden" name="successURL" value="<?php echo $ahurl; ?>"/>
  7. <input type="hidden" name="quickpay-form" value="shop"/>
  8. <input type="hidden" name="targets" value="Оплата товара <?php html($item['title']); ?> в маркетплейсе <?php echo $market; ?>"/>
  9. <input type="hidden" name="sum" value="<?php echo $order; ?>" data-type="number"/>
  10. <input type="hidden" name="comment" value="Продавец: <?php html($item['user']['nickname']); ?>"/>
  11. <input type="hidden" name="need-fio" value="true"/>
  12. <input type="hidden" name="need-email" value="true"/>
  13. <input type="hidden" name="need-phone" value="false"/>
  14. <input type="hidden" name="need-address" value="false"/>
  15. <div class="form-check form-check-inline">
  16. <input class="form-check-input" type="radio" id = "m1" name="paymentType" value="PC">
  17. <label class="form-check-label" for="m1">ЮMoney</label>
  18. </div>
  19. <div class="form-check form-check-inline">
  20. <input class="form-check-input" type="radio" id = "m2" name="paymentType" value="AC">
  21. <label class="form-check-label" for="m2">Банковская карта</label>
  22. </div>
  23.  
  24. <input class = "btn btn-sm btn-secondary" style = "display: block; margin-top: 15px;" type="submit" value="Купить онлайн"/>
  25. </form>

Обработчик формы лежит в корне сайта и содержит такой код:

  1. <?php
  2.  
  3. $hash = sha1($_POST['notification_type'].'&'.
  4. $_POST['operation_id'].'&'.
  5. $_POST['amount'].'&'.
  6. $_POST['currency'].'&'.
  7. $_POST['datetime'].'&'.
  8. $_POST['sender'].'&'.
  9. $_POST['codepro'].'&'.
  10. 'ЗДЕСЬ_СЕКРЕТ_КЕЙ'.'&'.
  11. $_POST['label']);
  12.  
  13. if ($_POST['sha1_hash'] != $hash or $_POST['codepro'] === true or $_POST['unaccepted'] === true) exit('Error');
  14.  
  15. file_put_contents('info.php', $_POST['datetime'] . ' Через YooMoney на сумму ' . $_POST['amount'] . '<br>', FILE_APPEND );
  16.  
  17. die('OK');
  18.  
  19. ?>

После оплаты в файле info.php появляются записи о проведенных платежах. Проблема в том, что если я отправляю уведомление со страницы настроек YooMoney — то запись в info.php успешно записывается. Если же я делаю реальный платеж, то в info.php строка не записывается. Первый раз работаю с платежными системами, и немного не врубаюсь — чего не так. Ткниже пжл носом, где накосячил.

А цель формы в общем то следующая — получить данные о платеже, далее я эти данные получаю на странице товара, ну и уже совершаю нужные действия — увеличиваю число покупок, показываю ссылки на скачивание и тд.

#2 11 декабря 2021 в 22:20

Если же я делаю реальный платеж, то в info.php строка не записывается.

Make

Стоит проверить: а) прошел ли этот платеж(есть ли пополнение счета)? б) был ли факт post-запроса к yoursite.ru/обработчик.php(может yoomaney вам и не шлет ничего)? То есть в обработчике вы сначала пишете $_POST в какой-то лог, а уж потом реализуете логику, что у вас приведена. Вам нужно определить сейчас какое звено не срабатывает.

#3 12 декабря 2021 в 13:23

 

Проблема в том, что если я отправляю уведомление со страницы настроек YooMoney — то запись в info.php успешно записывается.

Make

Ну если всё действительно так, то остаётся  только проверить это

Изображение

Добавлено спустя 20 минут

И ещё вспомнил, если реальная оплата была с мобильного, то вот как раз при оплате с мобильного http уведомления у них не отправляются. По крайней  мере год назад так было (и в документации указано), вряд ли что то изменилось в этом плане

#4 12 декабря 2021 в 13:26

 Нил™, хм. Действительно, платеж проводил с приложения. Проверю, спасибо! 

#5 12 декабря 2021 в 13:38

 Make, немного не понял про приложение, уточню, уведомление не приходит при оплате с баланса телефона, если оплата картой или кошельком, тип устройства не имеет значения) 

#6 12 декабря 2021 в 14:01

 Нил™, да, немного не понял. Платеж и с карты, и с кошелька. Уже и не знаю в чем может быть проблема. В сети информации об этом ноль, а официальное API юманей не дает исчерпывающего ответа на все вопросы. Написал им в поддержку, может они подскажут.

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.