minishop2 вызов оплаты
Добрый день, возникла очень серьезная проблема, мне нужно вызвать оплату уже у сформированного заказа в minishop2, т.е. пользователь пишет номер заказа и если он не оплачен, то должны отображаться способы оплаты и сама кнопка оплатить. Потратил на это несколько дней, просто не могу понять даже в какую сторону копать, мог бы кто пожалуйста подсказать?
Комментарии: 2
Для нормального ответа не хватает некоторой информации, например: Где это должно происходить? На фронте личном кабинете или в админке?
Если в общих чертах, то:
1) При получении id заказа (кстати а откуда мы его получаем) проверяем его статус. Если статус «Оплачен», то выходим. Иначе идем дальше.
2) Получаем и выводим доступные методы оплаты. Примеры корректного получения можно посмотреть в исходниках минишоп (не забываем, что они связаны со способами доставки).
3) Для запуска метода оплаты смотрим сюда и реализовываем.
Вродь как алгоритм есть!)
Если в общих чертах, то:
1) При получении id заказа (кстати а откуда мы его получаем) проверяем его статус. Если статус «Оплачен», то выходим. Иначе идем дальше.
2) Получаем и выводим доступные методы оплаты. Примеры корректного получения можно посмотреть в исходниках минишоп (не забываем, что они связаны со способами доставки).
3) Для запуска метода оплаты смотрим сюда и реализовываем.
Вродь как алгоритм есть!)
да, кажется я не совсем точно вопрос задал, но спасибо за ответ, в следующий раз буду точнее формулировать). У меня все получилось вот таким вот образом, пришлось убрать редирект потому что надо открывать страницу оплаты при нажатии на кнопку «Оплатить», т.е. я отправляю массив, и уже при помощи js подставляю ссылку на кнопку. Надеюсь кому поможет, только исключения под свои нужды.
<?php
if ($modx->event->name == 'OnLoadWebDocument')
if (isset($_POST['order_status_check']))
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
$status = $modx->lexicon('popup_status_order_message_error');
if (preg_match('/[\d]*\/[\d]*/', $_POST['order_status_check'])) {
$order = $modx->getObject('msOrder', array('num' => $_POST['order_status_check']));
if ($payment = $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'])) {
//тут отправляю массив в котором ссылка на оплату
print_r($response);
exit;
} elseif (!empty($response['data']['msorder'])) {
} else {
// $modx->sendRedirect($modx->context->makeUrl($modx->resource->id));
}
return $this->success();
}
}
}
exit;
}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.