Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Підтримка] Создание QR-кода для банковского перевода


pogankin

Recommended Posts

Создание QR-кода для банковского перевода


Создание QR-кода для банковского перевода


OCMOD, добавляющий генерацию QR-кода в стандартный модуль "Банковский перевод". QR-код отображается в следующих документах:

  • История заказов (для пользователя) / просмотр свойств заказа;
  • Email с оповещением о новом заказе (для пользователя);
  • Заказы (для администратора) / просмотр свойств заказа;
  • Email с оповещением о новом заказе (для администратора).

 

Для генерации изображения с QR-кодом используется сервис "Генератор QR кодов". В указанные документы вставляется ссылка с запросом к указанному сервису. Созданное изображение нигде не сохраняется. В email-клиенте может быть включена блокировка загрузки картинок со сторонних ресурсов, из-за чего QR-код не будет отображаться, пока его загрузку не подтвердить вручную.

 

Более красивым решением, конечно, было бы встраивание библиотеки для генерации QR-кодов в OpenCart, но добиться корректной работы ни от phpqrcode, ни от QR Code Generator пока не удалось (хотя демо страничка на сайте последнего генератора создаёт корректный код).

 

Для генерации QR-кода в настройки модуля "Банковский перевод" (в любое место текста инструкции, но лучше в начало) нужно добавить следующий блок данных:

 

Цитата

{QRCODE}ST00012|Name=ООО "Рога и копыта"|PayeeINN=9876856765|KPP=345437436|

PersonalAcc=40708407654768768769|BankName=АО "АЛЬФА-БАНК"|BIC=044525593|CorrespAcc=30101810200000000593|
LastName={LASTNAME}|FirstName={FIRSTNAME}|MiddleName={MIDDLENAME}|
PayerAddress={ADDRESS}|Purpose=Оплата заказа {NORDER}|Sum={TOTAL}{/QRCODE}

 

Расшифровка параметров:

  • Name — наименование получателя платежа;
  • PayeeINN — ИНН получателя платежа;
  • KPP — КПП получателя платежа;
  • PersonalAcc — номер счета получателя платежа;
  • BankName — наименование банка получателя платежа;
  • BIC — БИК банка получателя платежа;
  • CorrespAcc — номер кор./сч. банка получателя платежа;
  • Sum — сумма платежа, в копейках;
  • Purpose — наименование платежа (назначение);
  • LastName — фамилия плательщика;
  • FirstName — имя плательщика;
  • MiddleName — отчество плательщика;
  • PayerAddress — адрес плательщика.

 

Значения параметров Name, PayeeINN, KPP, PersonalAcc, BankName, BIC, CorrespAcc нужно заполнить реквизитами вашей компании. Остальные будут заполняться данными из заказа. На этапе подготовки данных производится перекодировка UTF-8 → Windows-1251. Соответственно, использования символов, которых нет в Windows-1251, стоит избегать. Набор полей подбирался с оглядкой на ГОСТ Р 56042-2014, но полномасштабного соответствия, разумеется, нет. Наладка производилась при помощи Android-приложения Сбербанк-Онлайн. Корректная работа с приложениями других банков не гарантируется.

 

Установка - стандартная, через раздел "Установка расширений". После этого нужно обновить модификаторы.

 

Модуль тестировался только на OpenCart 2.1.0.2, на стандартной теме. С большой вероятностью будет работать на OpenCart 2.x и на ocStore 2.x.


  • Автор
  • долучення
    13.10.17
  • Категорія
  • Системные требования
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • ocStore
    2.1
  • OpenCart.Pro, ocShop
  • Звернення до сервера розробника

 

Надіслати
Поділитися на інших сайтах

  • 1 month later...
  • 1 month later...
  • 1 month later...

 

В 24.11.2017 в 20:11, Bobster2005 сказал:

Добрый день, очень заинтересовал ваш модуль. Но выходит вот такая штука (Что-то делаю неправильно).

Версия ocStore 2.3.0.2.2

ошибка qrкод.png

 

Здравствуйте, такая же проблема. Не поскажите как решили данную ошибку?

Змінено користувачем uskirill
Надіслати
Поділитися на інших сайтах


  • 7 months later...
  • 1 year later...
  • 3 months later...
В 13.10.2017 в 17:11, pogankin сказал:

Более красивым решением, конечно, было бы встраивание библиотеки для генерации QR-кодов в OpenCart, но добиться корректной работы ни от phpqrcode, ни от QR Code Generator пока не удалось (хотя демо страничка на сайте последнего генератора создаёт корректный код).

Делал для ocStore 3.0, получилось примерно так:
скачал библиотеку phpqrcode и положил ее в директорию helper движка магазина,
сделал "генератор картинки qr.php такого вида, положил в корень сайта:

<?php
include('/var/www/ocstore/system/helper/phpqrcode/qrlib.php');
QRcode::png(base64_decode($_GET['qr']));

в шаблоне catalog/view/theme/default/template/account/order_info.twig строку

<td class="text-left">{{ history.comment }}</td>

меняем на

<td class="text-left">
{{ history.comment }}
{% if history.qr_show %}
<br><img src="{{ history.qr_img|raw }}"></img>
{% endif %}
</td>

контроллеры:
catalog/controller/account/order.php:

$data['histories'][] = array(
    'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
    'status'     => $result['status'],
    'comment'    => $result['notify'] ? nl2br($result['comment']) : ''
);

на

if(preg_match('|\{QRCODE\}(.+)\{/QRCODE\}|s', $result['comment'], $qr_matches)) {
        $qr_str = $qr_matches[1];
        $qr_img_show = true;

        $qr_str = str_replace('{LASTNAME}', $order_info['payment_lastname'], $qr_str);
        $qr_str = str_replace('{FIRSTNAME}', $order_info['payment_firstname'], $qr_str);
        $qr_str = str_replace('{ADDRESS}', $order_info['payment_address_1'], $qr_str);
        $qr_str = str_replace('{NORDER}', $data['order_id'], $qr_str);
        $qr_str = str_replace('{TOTAL}', number_format ($totals[count($totals)-1]['value'], 2, ".", ""), $qr_str);

        $qr_img_png = 'http://адрес-сайта-магазина/qr.php?qr='.urlencode(base64_encode($qr_str));
        $tmp_comment = $result['comment'];
        $result['comment'] = preg_replace('|\{QRCODE\}(.+)\{/QRCODE\}|s', '', $tmp_comment);
} else {
        $qr_img_show = false;
        $qr_img_png = '';
}
$data['histories'][] = array(
        'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
        'status'     => $result['status'],
        'comment'    => $result['notify'] ? nl2br($result['comment']) : '',
        'qr_show'    => $qr_img_show,
        'qr_img'     => $qr_img_png
);

catalog/controller/extension/payment/bank_transfer.php

$data['bank'] = nl2br($this->config->get('payment_bank_transfer_bank' . $this->config->get('config_language_id')));

на:

$bank_text = $this->config->get('payment_bank_transfer_bank' . $this->config->get('config_language_id'));
if(preg_match('|\{QRCODE\}(.+)\{/QRCODE\}|s', $bank_text, $qr_matches)) {
        $bank_text = preg_replace('|\{QRCODE\}(.+)\{/QRCODE\}|s', '', $bank_text)."\n\nПосле подтверждения заказа, для удобства оплаты, будет сформирован QR-код.\nОплатить по нему вы сможете на странице информации о заказе.";
}
$data['bank'] = nl2br($bank_text);

Протестировано совместно с UniShop2 на ocStore 3.0.2.0, т. к. файлы UniShop не затронуты - должно работать на чистом ocStore.

Надіслати
Поділитися на інших сайтах


  • 2 months later...
  • 1 year later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.