Протестируйте работу интернет-магазина

1. Найдите тестовый товар с НДС (картинка снизу).

vent_600_2017172899

2. Нажмите кнопку "в корзину" - перейдите в корзину - нажмите кнопку "оформить заказ".

3. Выберите способ доставки и платежа.

4. На следующем этапе Вы можете зарегистрироваться как ГОСТЬ или КЛИЕНТ с указанием адреса доставки (предоставляется доступ в меню ИНТЕРНЕТ-МАГАЗИН --> УПРАВЛЕНИЕ ЗАКАЗАМИ)

5. Распечатать счет на оплату (после подтверждения заказа модератором) можно здесь --> ИНТЕРНЕТ-МАГАЗИН --> УПРАВЛЕНИЕ ЗАКАЗАМИ --> ЗАКАЗЫ --> ДЕЙСТВИЯ

6. Наличие товара на складе актуально

Как заказать товар, если его нет в наличии

1. Пройдите регистрацию (авторизацию)

2. Найдите тестовый товар с НДС (картинка снизу) или любой другой.

vent_600_2017172899

3. Нажмите кнопку "Под заказ" - перейдите в корзину "Товары под заказ" - убедитесь, что товар в корзине.

4. Перейдите в меню ИНТЕРНЕТ-МАГАЗИН --> УПРАВЛЕНИЕ ЗАКАЗАМИ (для зарегистр.).

5. На вкладке ТОВАРЫ ПОД ЗАКАЗ будет список товаров, которые Вы хотите приобрести - Вы можете задать ему название (только нажмите кнопку "сохранить")

6. Распечатайте заказ или нажмите кнопку @ ПОДЕЛИТЬСЯ и отправьте нам сообщение на электронную почту.

7. После Вам поступит сообщение - предзаказ по товару возможен или нет.

Вторник, 22 сентября

В первой части  "Создаем плагин Hikashop (счет на оплату) - часть 1 мы организовали вывод счета  на оплату на платежной странице плагина самым простым способом - "в лоб" - создали теги HTML и подставили в поля с помощью PHP параметры созданного заказа.  Создали режим отладки  (кнопка вкл./выкл.), задействовали служебную функцию   writeToLog  и  создали свою logger для просмотра информации о параметрах

и совершаемых действиях , а также попробовали организовать процесс уведомлений об оплате и подтвержения заказа на примере  кода от плагина PalPay . 

Отмечу сразу,  для правильной работы платежного плагина  значение параметра ' notification ' должно быть включено - "получать уведомления о статусе заказа (об оплате)". Должен быть настроен и параметр ' notify_url '   , об этом сразу говорят разработчики Hikashop.  

 Не смотря на свое потраченное время для поиска нужной информации, хочется поделиться "секретами", о которых я узнал, изучая PHP и отлаживая работу плагина HIKASHOP по оплате банковской картой через платежный шлюз Сбербанка.

СЕКРЕТ №1

Начнем, казалось с самого простого - использования функции writeToLog  в режиме отладки.   Функция упоминается почти в каждом плагине от Hikashop - от 1-ого раза до 50-и раз - и ни одной ссылки, ни одного пояснения на русском языке, куда потом смотреть, чтобы видеть  результаты её работы.

Разработчики Hikashop вскользь упоминают - " Файл журнала платежей доступен в конфигурации HikaShop в разделе файлов - и всё.  Меня лично очень задело, что я долго не мог найти этот чёртов журнал, даже "создал" (читай --> нашел в интернете и скопировал + понял  как работает)  за это время 2-3 шт.  аналогичных функций, которые создавали свой лог-файл ( .log) уже внутри папки нашего модифицированного плагина banktransfer (в моем случае "bank" )

 Местонажождение "журнала платежей" оказалось тривиально простым --> заходим в    конфигурацию  HIKASHOP (система -> конфигурация) 

Находите на вкладке конфигурация пункт  файлы  --> наводите курсор и попадаете на вкладку файлы --> находите поле лог файл оплат и нажимаете кнопку  Просмотреть отчет 

 В зависимости от количества использования функции writeToLog в плагине отладочная информация может отображаться либо в виде строки или массива, при этом отбражаюся время создания (использования) и название плагина в системе Hikashop (в нашем примере - "bank")

Сам файл по умолчанию сохраняется по пути :    media/com_hikashop/upload/safe/logs/report_210632903.log    

Не поленился, зашёл в папку   logs   - там всего 1 файл  с невероятным количеством строчек непроведенных платежей с ошибкой Could not load any order for your notification 521 - ( "Не удалось загрузить заказ для вашего уведомления 521** " )

** - в данном случае ошибка возникала из-за простого "тупого" копирования функции writeToLog из одной функции в другую без изменения параметров.

Прочитать записи функции writeToLog  в разделе function onPaymentNotification(&$statuses)  у Вас не получиться, пока Вы не организуете самостоятельно передачу данных от сайта к платежному шлюзу и обратно, т.е. не наладите получение уведомлений. 

СЕКРЕТ №2

 Разработчики модулей оплаты  неохотно берутся за  адаптацию платежного плагина  HIKASHOP_JOOMLA  для оплаты через СБЕРБАНК - в отличие от других платформ интернет-магазинов, таких как JOOMSHOPPING_JOOMLA , VIRTUEMART_JOOMLA , где все манипуляции с запросами осуществляются только в  основном (единственном) файле ,   в Hikashop  при реализации скриптов php задействованы файла: основной файл php и end-файл php  (файл  может отвечать за отправку данных, внешний вид и ещё за кое-что),  при этом всё управление (отправка и получение дополнительных запросов), как правило,   осуществляется в основном файле - в этом вся и  заморочка.

Если перейти в end-файл и выполнить отправку данных на шлюз, то Вы потеряете управление (из end-файла вызвать функцию через $this-> становиться невозможно - теряется контекст (запрос отвечает ошибкой №5).

И все же реализовать оплату через платежный шлюз Сбербанка без уведомлений  по методу REST для новичка-разработчика скриптов php дело не такое уж сложное - достаточно подготовить данные для запроса (через $requestData) и использовать стандартную функцию запроса  - $response = $this->gateway('register.do', $requestData);

define('GATEWAY_URL', 'https://3dsec.sberbank.ru/payment/rest/');
$method = 'register.do';

function gateway($method, $data) {
        $curl = curl_init();                      // Инициализируем запрос
        curl_setopt_array($curl, array(
            CURLOPT_URL => GATEWAY_URL.$method,   // Полный адрес метода
            CURLOPT_RETURNTRANSFER => true,       // Возвращать ответ
            CURLOPT_POST => true, // Метод POST
            CURLOPT_POSTFIELDS => http_build_query($data) // Данные в запросе
        ));
        $response = curl_exec($curl);             // Выполняем запрос
         
        $response = json_decode($response, true); // Декодируем из JSON в массив
        curl_close($curl);                        // Закрываем соединение
        return $response;                         // Возвращаем ответ
    }

 То есть достаточно выполнить в   public function onAfterOrderConfirm(&$order,&$methods,$method_id)  3-4 процедуры:

 - получить$requestData = array ( со всеми обязательными паметрами )

- обеспечить кодировку json (приведена часть кода): $requestData['orderBundle'] = json_encode($order_bundle, JSON_UNESCAPED_UNICODE);

- осуществить правильный запрос по методу Сбербанка -( register.do   и др. стандартные методы) - с помощью созданной функции  public function gateway($method, $data) - через запись $this->gateway('register.do', $requestData);

- использовать полученные параметры ($requestData и $response) для страницы END

Личный кабинет Сбербанка, доступ к которому осуществляется на этапе тестирования скрипта оплаты, в отличие от других платежных систем не предоставляет почти никакой информации по организации уведомлений о платежах, т.е. не предоставляет возможности создания страницы успешной оплаты, страницы неудачной транзакции, нет там и протокола HTTP по уведомлениям с указанием пути notification.php, как это организовано, например в TINKOFF (тинькофф-банк) или RFICB (рфи-банк).

Помощи от программистов Сбербанка на этапе разработки плагина  не будет, будет лишь ссылка все на тот же сайт https://developer.sberbank.ru - "вся информация  для разработки плагина Вам предоставлена"

 СЕКРЕТ №3

Формат общения  между нашим платежным плагином  и платежным шлюзом стандартный - через формат JSON.

Обработка файлов из  json - формата банка в  php-формат   (по методу REST осуществляется через библиотеку  cURL) необходима для передачи  покупателю ссылки на страницу оплаты Сбербанка  и  уникального идентификационного номера платежа  ,

{"orderId":"6d47c3d5-f262-7e25-8168-cae15e3b7f98",   "formUrl":"Страница оплаты - URL сбербанка - тестовый режим"}

Конечно, "настоящие" php-программисты с своим уровнем знаний просто посмеются над моими рассуждениями - но наша задача : "малой кровью" обеспечить работоспособность плагина. Поэтому продолжаем..

Основная трудность  заключается в следущем  - как и где в HIKASHOP, уже выйдя из  основного файла php со всеми его публичными и приватными функциями, снова отдать URL-страницу шлюза с его данными на обработку php-скрипту.

статья в редактировании ...

телефоны
+7 (902) 327-81-10 (Мегафон)
адрес
Чебоксары, Гражданская ул., д. 78, к. 149
часы работы
с 8:00 до 18:00 (сб, вс - с 9:00 до 15:00)