Back to ROBOKASSA for Shopaholic Support

Ivan
Ivan

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.

Alt text

When canceling payment, the status is always changed. ("New" -> "Canceled")

Last updated

Biz-Mark
Biz-Mark

Добрый день. Тут не обязательно писать на английском языке.

Можете пожалуйста подробнее расписать ваш порядок действий, чтобы мы могли воспроизвести его для обнаружении проблемы локально.

Ivan
Ivan
  1. Включаете тестовый платеж в настройках
  2. На странице товара жмете кнопку оплатить
  3. Вас перекидывает на сайт Робокассы, если посмотреть вкладку Orders, то заказ уже будет иметь статус - "New".
  4. На странице Робокассы жмете кнопку - "Оплатить", далее жмете кнопку - "Успешная оплата", затем жмете кнопку - "Вернуться в магазин".
  5. Вас перекидывает в магазин, если это был первый заказ за день или между заказами прошло достаточно долгое время, то на вкладке Orders заказ будет иметь статус - "Complete".

Если между заказами прошло 5-10-20 минут, то у всех заказов, кроме первого статус будет - "New", хотя при успешной оплате он должен поменяться на "Complete". Все заказы после первого будут иметь статус - "New", даже если они делаются под другим аккаунтом и в другом браузере. Это похоже на какой-то кеш.

В случае если на странице Робокассы жмете кнопку - "Оплатить", далее жмете кнопку - "Неудачная оплата", затем жмете кнопку - "Вернуться в магазин". То на вкладке Orders заказ будет иметь статус - "Canceled", то есть все работает как надо, даже если между заказами проходит пара секунд.

Biz-Mark
Biz-Mark

Проверьте что ваш сайт не закрыт. Любой пользователь из интернета должен иметь возможность зайти на него. Иначе Робокасса не сможет достучаться до него и прислать уведомление с результатом оплаты.

Никакого кеширования нет, вы можете сами удостоверится открыв файл:

plugins/bizmark/robokassashopaholic/classes/helper/PaymentGateway.php

Конкретно следующие методы отвечают за установку статусов об оплате:

processAnswerRequest() processSuccessURL() processFailURL()

Проверьте что ResultURL, SuccessURL и FailURL открываются (ResultURL методом POST).

Ivan
Ivan

В файле PaymentGateway.php Находим функцию processSuccessURL() Вместо строки $this->setWaitPaymentStatus(); Пишем $this->setSuccessStatus();

Вот после этого всё работает правильно. Если так не сделать, то setWaitPaymentStatus будет перезаписывать статус "Complete" на "New".

1-5 of 5