Проверка статуса оплаты из backend

День добрый!

Делаю плагин оплаты на основе существующих webmoney и прочего.

Мне надо реализовать функционал проверки статуса платежа из админки магазина.

То есть в админке при просмотре заказа должна быть кнопка "Проверить статус оплаты". При нажатии на кнопку должен вызываться метод check() из плагина и, при необходимости, менять статус заказа.

В существующих плагинах не нашел ничего похожего.

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

Спасибо.

1 ответ

  • 1
    Максим Сердюков 20 ноября 2018 20:27 #

    У вас несколько вариантов.
    Первое - обычно менять статус заказа это дело плагинов. Почти все новые плагины, получают от банка информацию, что заказ оплачен/отменен и т.д. После плагин самостоятельно меняет статус заказа без вашего участия. Поэтому пинайте разработчиков ваших плагинов.

    Второе - вы можете писать кастомный код, в ваших плагинах оплаты (или новом плагине). Который будет идти в банк и опрашивать его о статусе заказа.(если банк это позволяет). После получения информации вы будете менять статус заказа. Обработка заказов - можете почитать эту док-у, чтобы поизучать, как меняется статус заказов. И изучите код плагинов (Тинькофф, Сбербанк, Яндекс.Деньги). Вам нужно из этого сделать смесь.

    • +1
      Антон Смирнов Антон Смирнов 20 ноября 2018 20:37 #

      Спасибо за ответ.

      Видимо, Вы меня не совсем верно поняли.

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

      Но. Что если в момент перенаправления клиента обратно в магазин случится нечто: закрашится браузер, сядет телефон и т.д.

      Тогда плагин не получит запрос от банка и не поменяет статус заказа. Хотя, по факту, деньги списались. 

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

      • +1
        Максим Сердюков Максим Сердюков 20 ноября 2018 22:24 #

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

        Поэтому я сказал вам второй вариант. Если ваш банк не гарантирует коллбеки или у него вообще их нет, то надо разрабатывать плагин.
        Либо делать один плагин который умеет обращаться к разным банкам или дорабатывать уже существующие плагины (делать к примеру публичный метод getOrderStatus, который будет возвращать информацию о заказе). В вашем новом плагине вы после получения информации о заказе используете shopWorkflow и меняете статус заказа.

        В любом случае реализация этого требует немного блэкджека.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите