Убрать переадресацию на форму оплаты при оформлении заказа.

Заказчик попросил сделать так, чтоб если пользователь выбирает оплату с карты, то его не сразу переводило на страницу оплаты при создании заказа, а только после того, как менеджер проверит заказ и созвонится с клиентом. Т.е. алгоритм такой: клиент делает заказ, ему приходит письмо с составом заказа, но без ссылки на оплату, менеджер проверяет заказ, созванивается с клиентом, и ставит заказу статус, например «проверено», после этого клиент получает письмо со ссылкой на оплату.
Во всей этой схеме я не могу понять только как сделать так, чтоб при оформлении заказа не происходила переадресация на форму оплаты.

Мои измышления и код под катом.

Из того, что я понимаю, надо написать кастомный класс обработки заказа и в нём убрать редирект на оплату. Но я боюсь, что вместе с редиректом можно вообще случайно сломать привязку объекта оплаты к заказу.
Вся движня происходит тут:
// Trying to set status "new"
$response = $this->ms2->changeOrderStatus($order->get('id'), 1);
if ($response !== true) {
    return $this->error($response, array('msorder' => $order->get('id')));
} /** @var msPayment $payment */
elseif ($payment = $this->modx->getObject('msPayment',
    array('id' => $order->get('payment'), 'active' => 1))
) {
    $response = $payment->send($order);
    if ($this->config['json_response']) {
        @session_write_close();
        exit(is_array($response) ? json_encode($response) : $response);
    } else {
        if (!empty($response['data']['redirect'])) {
            $this->modx->sendRedirect($response['data']['redirect']);
        } elseif (!empty($response['data']['msorder'])) {
            $this->modx->sendRedirect(
                $this->modx->context->makeUrl(
                    $this->modx->resource->id,
                    array('msorder' => $response['data']['msorder'])
                )
            );
        } else {
            $this->modx->sendRedirect($this->modx->context->makeUrl($this->modx->resource->id));
        }

        return $this->success();
    }
}
Я так понимаю, что тут редиректит либо на оплату, либо на текущую страницу, но чёт больно много непонятных условий. Достаточно ли просто закомментить этот кусок:
if (!empty($response['data']['redirect'])) {
     $this->modx->sendRedirect($response['data']['redirect']);
}
?
Антон
08 февраля 2019, 13:08
modx.pro
651
0
Поблагодарить автора Отправить деньги

Комментарии: 1

Андрей
08 февраля 2019, 13:32
0
В минишопе есть статусы заказов, ими и пользуйтесь для обработки и отправки писем. А на странице заказа сделайте фейковый выбор метода оплаты и записывайте выбранный способ в поле с комментарием, что бы менеджер знал какой метод выбрать при отправке ссылки на оплату. Реальные методы оплаты скройте на странице заказа и по-умолчанию пускай будет метод оплаты без привязки платежной системы, что бы при оформлении заказа не было перехода на оплату.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1