Убрать переадресацию на форму оплаты при оформлении заказа.
Заказчик попросил сделать так, чтоб если пользователь выбирает оплату с карты, то его не сразу переводило на страницу оплаты при создании заказа, а только после того, как менеджер проверит заказ и созвонится с клиентом. Т.е. алгоритм такой: клиент делает заказ, ему приходит письмо с составом заказа, но без ссылки на оплату, менеджер проверяет заказ, созванивается с клиентом, и ставит заказу статус, например «проверено», после этого клиент получает письмо со ссылкой на оплату.
Во всей этой схеме я не могу понять только как сделать так, чтоб при оформлении заказа не происходила переадресация на форму оплаты.
Мои измышления и код под катом.
Из того, что я понимаю, надо написать кастомный класс обработки заказа и в нём убрать редирект на оплату. Но я боюсь, что вместе с редиректом можно вообще случайно сломать привязку объекта оплаты к заказу.
Вся движня происходит тут:
Во всей этой схеме я не могу понять только как сделать так, чтоб при оформлении заказа не происходила переадресация на форму оплаты.
Мои измышления и код под катом.
Из того, что я понимаю, надо написать кастомный класс обработки заказа и в нём убрать редирект на оплату. Но я боюсь, что вместе с редиректом можно вообще случайно сломать привязку объекта оплаты к заказу.
Вся движня происходит тут:
// 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']);
}
?
Поблагодарить автора
Отправить деньги
Комментарии: 1
В минишопе есть статусы заказов, ими и пользуйтесь для обработки и отправки писем. А на странице заказа сделайте фейковый выбор метода оплаты и записывайте выбранный способ в поле с комментарием, что бы менеджер знал какой метод выбрать при отправке ссылки на оплату. Реальные методы оплаты скройте на странице заказа и по-умолчанию пускай будет метод оплаты без привязки платежной системы, что бы при оформлении заказа не было перехода на оплату.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.