Запись в базу данных MdOrder в RBSPayment (Cбер) | Opencart | NikonoroW.ru

Данная статья посвящена уникальному идентификатору заказа (MdOrder) в плагине RBSPayment (в платёжной системе Cбер) и его записи в базу данных MySQLi на CMS Opencart.

Запись в базу данных MdOrder в RBSPayment (Cбер) Opencart


Зачем это нужно? Иногда бухгалтерам бывает недостаточно данных о заказе из коробки Опенкарта, чтобы проверить платеж клиента необходима знать уникальный номер заказа в Сбер эквайринге. Это может пригодится, как для вывода данных в админ-панели сайта, так и для интеграции с различными CRM-системами.

Приступим к работе: для начала нам нужно создать таблицу с любым названием, куда мы будем записывать эти данные. В примере ниже указано название oc_order_rbs, но вы можете выбрать любое другое. Я уже описывал способ создания таблиц в данной статье, но сегодня все будет немного проще. Создаем необходимые поля (столбцы таблицы) — order_id (порядковый номер заказа в CMS Opencart) и md_order (Номер заказа, уникален в пределах системы. Отсутствует, если регистрация заказа не удалась по причине ошибки).

Пишем запрос SQL:

CREATE TABLE `oc_order_rbs` (
  `order_id` int(20) NOT NULL PRIMARY KEY,
  `md_order` varchar(255) NOT NULL
)

Следующим этапом будет изменение контроллера плагина, путь к файлу:

/catalog/controller/extension/payment/rbs.php

Находим строку № 219, где начинается комментарий — «Колбек для возвращения покупателя из ПШ в магазин». Заменяем всю функцию после комментария на следующий код:

public function callback()
    {
        // переместил переменные выше для дальнейшей записи order_number в бд
        $this->load->model('checkout/order');
        $order_number = $this->session->data['order_id'];
        $order_info = $this->model_checkout_order->getOrder($order_number);

        if (isset($this->request->get['orderId'])) {
            $order_id = $this->request->get['orderId'];
            // заполните данные вашей бд, данный фрагмент отвечает за подключение к бд
            $conn = new mysqli("localhost", "username", "password", "dbname", "port");
            if ($conn->connect_error) {
                die("Ошибка: " . $conn->connect_error);
            }
            
            // подготавливаем наши данные для записи в таблицы
            $md_order = $conn->real_escape_string($order_id);
            $oc_order_id = $conn->real_escape_string($order_number);
            // производим запись наших данных
            $sql = "INSERT INTO oc_order_sber (order_id, md_order) VALUES ('$oc_order_id ', '$md_order')";
            if ($conn->query($sql)) {
                $mdconn = "Данные успешно добавлены";
            } else {
                $mdconn = "Ошибка: " . $conn->error;
            }
            $conn->close();
        } else {
            die('Illegal Access');
        }

        if ($order_info) {
            $this->initializeRbs();

            $response = $this->rbs->get_order_status($order_id);
            if (($response['errorCode'] == 0) && (($response['orderStatus'] == 1) || ($response['orderStatus'] == 2))) {

                // set order status
                $this->model_checkout_order->addOrderHistory($order_number, $this->config->get('rbs_order_status_id'));

                $this->response->redirect($this->url->link('checkout/success', '', true));
            } else {
                $this->response->redirect($this->url->link('checkout/failure', '', true));
            }
        }
    }

Внимательно смотрите комментарии в коде, не забывайте заполнить данные для подключения к вашей базе данных MySQLi. И не оставляйте скобки { } открытыми.

Готово, ваш уникальный номер заказа в системе эквайринга Сбера теперь успешно записывается на стороне вашего сайта после совершения оплаты клиентом. Теперь можно смело выводить эти данные, например, в админ-панели в разделе просмотра заказа.

Протестировано на OcStore 2.3

Дата создания статьи: 17.11.2022

Рубрика: Веб-разработка

Комментарии

Оставьте Ваше сообщение

Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии

Смотрите далее

Ознакомьтесь с другими работами

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x