Модуль оплаты Robokassa и успешная оплата Новый

Дополнение: mspRobokassa

В системных настройках модуля есть переменная ms2_payment_rbks_success_id, с помощю которой указывается ID страницы, на которую возвращается пользователь после успешной оплаты. Как можно сделать так, чтобы после успешной оплаты товара А, пользователь попадал на страницу 1. А после оплаты товара Б, на страницу 2. Ну, а если случится такое, что пользователь купил А+Б, то на страницу 3.

Сейчас у меня срабатывает плагин на событие msOnChangeOrderStatus и производятся некоторые действия, однако, как при этом перенаправить пользователя туда, куда надо я ума не приложу.
16 ноября 2017, 22:48    Роман   
1    84 0

Комментарии (10)

  1. Роман 18 ноября 2017, 23:16 # 0
    можно ли как-то из этого плагина по событию msOnChangeOrderStatus передать на страницу с благодарностью параметр. Типа плейсхолдера?
    Чтобы уже на странице вставить типа такой конструкции [[+key:is=`1`:then=`пашем А`:else=`пишем Б`]]
    1. Воеводский Михаил 20 ноября 2017, 11:28 # 0
      Как указывается страница информации об успешной оплате?
      1. Роман 20 ноября 2017, 11:48 # 0
        В системных настройках модуля есть переменная ms2_payment_rbks_success_id, с помощю которой указывается ID страницы, на которую возвращается пользователь после успешной оплаты
        1. Воеводский Михаил 20 ноября 2017, 13:13 # +1
          В таком случае, скорее всего, необходимо в указанном плагине при статусе 1 менять эту настройку «на лету» без сохранения:
          $modx->config['ms2_payment_rbks_success_id'] = $page_id_A_or_B;
          1. Роман 20 ноября 2017, 13:50 # 0
            Спасибо! Буду пробовать.
            Нашел ещё вариант через установку плейсхолдера и на странице выводить в зависимости от его значения.

            Я вот чего спросить хотел: вот здесь modx.pro/help/12964/ используется setOption, а у Вас config[...] Чего правильнее?
            1. Воеводский Михаил 20 ноября 2017, 13:53 # +1
              public function setOption($key, $value) {
                      $this->config[$key]= $value;
                  }
              Надеюсь, данный код является исчерпывающим ответом на вопрос.
              Правильнее через setOption, но фактически выполняется одно и то же.
      2. Роман 20 ноября 2017, 18:52 # 0
        хотелось бы еще от Василия комментарий услышать. У меня подозрение, что событие msOnChangeOrderStatus срабатывает после перехода на страницу успешной оплаты.

        Где это можно поискать?
        1. Воеводский Михаил 20 ноября 2017, 23:28 # +1
          В исходниках. Сначала создаётся заказ со статусом 0, затем срабатывает событие при изменении статуса на 1. И уже только после этого происходит переход в платёжную систему.
          1. Роман 21 ноября 2017, 08:12 # 0
            Это я знаю. Меня интересует возврат обратно из платежной системы, когда статус заказа изменяется на 2.
            Как раз здесь и не ясно: сначала определяется на какую страницу будет возврат (успешной оплаты или нет), а потом меняется статус. Или сначала меняется статус (срабатывает событие изменение статуса), а потом определяется страница возврата.

            Во втором случае успешно сработает код плагина, который Вы подсказали ранее. А в первом он сработает поздно, т.к. страница возврата к тому времени уже определена.
            1. Воеводский Михаил 21 ноября 2017, 13:33 # 0
              github.com/bezumkin/mspRobokassa/blob/master/assets/components/minishop2/payment/robokassa.php
              Посмотрите этот файл. Ваше решение вопроса — плагин на событие OnMODXInit для подмены ID страницы. Ловите принимаемые параметры и запрашиваемые адрес.
        Вы должны авторизоваться, чтобы оставлять комментарии.