← Back to ROBOKASSA for Shopaholic Support
The order status changes only at the first payment. ("New" -> "Complete")
If you make a payment of another product, the order will have the status of "New". If you make an order and pay from another account, the order will also have the status "New". It looks like caching.
When canceling payment, the status is always changed. ("New" -> "Canceled")
Last updated
Добрый день. Тут не обязательно писать на английском языке.
Можете пожалуйста подробнее расписать ваш порядок действий, чтобы мы могли воспроизвести его для обнаружении проблемы локально.
- Включаете тестовый платеж в настройках
- На странице товара жмете кнопку оплатить
- Вас перекидывает на сайт Робокассы, если посмотреть вкладку Orders, то заказ уже будет иметь статус - "New".
- На странице Робокассы жмете кнопку - "Оплатить", далее жмете кнопку - "Успешная оплата", затем жмете кнопку - "Вернуться в магазин".
- Вас перекидывает в магазин, если это был первый заказ за день или между заказами прошло достаточно долгое время, то на вкладке Orders заказ будет иметь статус - "Complete".
Если между заказами прошло 5-10-20 минут, то у всех заказов, кроме первого статус будет - "New", хотя при успешной оплате он должен поменяться на "Complete". Все заказы после первого будут иметь статус - "New", даже если они делаются под другим аккаунтом и в другом браузере. Это похоже на какой-то кеш.
В случае если на странице Робокассы жмете кнопку - "Оплатить", далее жмете кнопку - "Неудачная оплата", затем жмете кнопку - "Вернуться в магазин". То на вкладке Orders заказ будет иметь статус - "Canceled", то есть все работает как надо, даже если между заказами проходит пара секунд.
Проверьте что ваш сайт не закрыт. Любой пользователь из интернета должен иметь возможность зайти на него. Иначе Робокасса не сможет достучаться до него и прислать уведомление с результатом оплаты.
Никакого кеширования нет, вы можете сами удостоверится открыв файл:
plugins/bizmark/robokassashopaholic/classes/helper/PaymentGateway.php
Конкретно следующие методы отвечают за установку статусов об оплате:
processAnswerRequest() processSuccessURL() processFailURL()
Проверьте что ResultURL, SuccessURL и FailURL открываются (ResultURL методом POST).
В файле PaymentGateway.php Находим функцию processSuccessURL() Вместо строки $this->setWaitPaymentStatus(); Пишем $this->setSuccessStatus();
Вот после этого всё работает правильно. Если так не сделать, то setWaitPaymentStatus будет перезаписывать статус "Complete" на "New".
1-5 of 5