Данное решение создавалось для павильона быстрого питания, чтобы обеспечить возможность быстрого формирования заказа в зале и передачи его на кухню. А также это решение дало возможность создавать счета для онлайн-оплаты и оплачивать их сразу на мобильном
Меню выглядит так:
Как работает сканирование QR:
- Отройте эту страницу в браузере мобильного телефона, оснащенного задней камерой и разрешите странице доступ к камере.
- Нажмите на значок QR-кода, размещенный под кнопкой корзины
- Наведите на QR-код товара, он будет автоматически добавлен в корзину
Скрипт для сканирования QR
Плагин для доступа к камере через JS и распознавания QR
<script src='https://unpkg.com/html5-qrcode@2.3.8/html5-qrcode.min.js'></script>
Стили для офоромления контейнера вывода изображения с камеры
<style>
#enscart_qr_wrapper {
text-align: center;
position: fixed;
top: 150px;
right: 20px;
z-index: 1140;
width: 60px;
cursor: pointer;
background-color: #eee9;
border-radius: 5px;
}
</style>
Обработчки для инициализации плагина камеры и добавления товара в корзину при успешном распознании QR
<script>
document.addEventListener("EasyNetShopLoaded", function(event) {
let ens_QRReader = '<div id="ens_reader" style="display:none;"></div>';
var html5QrCode;
var qrCodeSuccessCallback;
var config;
ens_jQuery('body').append(ens_QRReader).ready(function () {
html5QrCode = new Html5Qrcode("ens_reader");
qrCodeSuccessCallback = (decodedText, decodedResult) => {
if (ens_jQuery(".easynetshop-modalcontainer").css('display') == 'none'){
easynetshop_buy(decodedText);
$( "#ens_reader" ).hide();
html5QrCode.stop();
}
};
config = { fps: 1, qrbox: { width: 350, height: 350 } };
});
let ens_QRscanButton = '<div id="enscart_qr_wrapper"><img src="https://lk.easynetshop.ru/box/scan-qr-code.svg" width="40"></div>';
ens_jQuery('body').append(ens_QRscanButton).click(function(){
if ($('#ens_reader').is(":hidden")) {
$( "#ens_reader" ).show();
html5QrCode.start({ facingMode: "environment" }, config, qrCodeSuccessCallback);
} else {
$( "#ens_reader" ).hide();
html5QrCode.stop();
}
});
}, false);
</script>