Fix lỗi Zalo Tài khoản này tạm thời không thể sử dụng chức năng này khi click vào nút zalo trên Website

Thời gian qua, lỗi Zalo Tài khoản này tạm thời không thể sử dụng chức năng này khi click vào nút zalo trên Website đã xuất hiện phổ biến trên hầu hết các tài khoản. Shopcode.vn đã tham khảo từ nhiều nguồn uy tín và rút kinh nghiệm từ các website triển khai cho khách hàng đã có giải pháp để fix lỗi này.

Lỗi Tài khoản này tạm thời không thể sử dụng chức năng này trên Zalo

Giải pháp được đề xuất:

Để khắc phục lỗi link Zalo.me/{sđt} trên website là sử dụng mã QR code của Zalo và truy cập trực tiếp đến ứng dụng Zalo thông qua Deep link thay vì thông qua trình duyệt web Zalo. Điều này có một số ưu điểm sau:

  1. Tương thích với mọi button/link zale.me/{sđt} trên website hiện có.
  2. Không cần phải chỉnh sửa mã nguồn của các button/link Zalo trên website.
  3. Hỗ trợ cho một hoặc nhiều số điện thoại Zalo trên cùng một trang web.
  4. Không cần tạo trang trung gian.
  5. Hỗ trợ trên các nền tảng iOS, Android, máy tính và trình duyệt (nếu máy tính chưa cài đặt ứng dụng Zalo).

Dưới đây là ví dụ cụ thể:

Nếu link Zalo gốc bị lỗi: https://zalo.me/0829666677 Bạn vẫn có thể truy cập link đó trên website shopcode.vn và click vào để trò chuyện như thường lệ. Điều này không đòi hỏi bạn phải chỉnh sửa mã nguồn của button đó.

Để triển khai giải pháp này, bạn cần thay thế số điện thoại và mã QR code tương ứng. Bạn có thể thêm nhiều số Zalo tùy theo yêu cầu của website của bạn.

Dưới đây là đoạn mã code cần được thêm vào file functions.php của theme bạn đang sử dụng:

/*
* Code sửa lỗi link zalo.me/{sđt}

*/
add_action('wp_footer', 'devvn_fix_zalome', 999);
function devvn_fix_zalome(){
?>
<script>
    var zalo_acc = {
        "sdtzalo1": "mã qr code 1",
        "sdtzalo2": "mã qr code 2",
    };
    function devvnCheckLinkAvailability(link, successCallback, errorCallback) {
        var hiddenIframe = document.querySelector("#hiddenIframe");
        if (!hiddenIframe) {
            hiddenIframe = document.createElement("iframe");
            hiddenIframe.id = "hiddenIframe";
            hiddenIframe.style.display = "none";
            document.body.appendChild(hiddenIframe);
        }
        var timeout = setTimeout(function () {
            errorCallback("Link is not supported.");
            window.removeEventListener("blur", handleBlur);
        }, 2500);
        var result = {};
        function handleMouseMove(event) {
            if (!result.x) {
                result = {
                    x: event.clientX,
                    y: event.clientY,
                };
            }
        }
        function handleBlur() {
            clearTimeout(timeout);
            window.addEventListener("mousemove", handleMouseMove);
        }
        window.addEventListener("blur", handleBlur);
        window.addEventListener(
            "focus",
            function onFocus() {
                setTimeout(function () {
                    if (document.hasFocus()) {
                        successCallback(function (pos) {
                            if (!pos.x) {
                                return true;
                            }
                            var screenWidth =
                                window.innerWidth ||
                                document.documentElement.clientWidth ||
                                document.body.clientWidth;
                            var alertWidth = 300;
                            var alertHeight = 100;
                            var isXInRange =
                                pos.x - 100 < 0.5 * (screenWidth + alertWidth) &&
                                pos.x + 100 > 0.5 * (screenWidth + alertWidth);
                            var isYInRange =
                                pos.y - 40 < alertHeight && pos.y + 40 > alertHeight;
                            return isXInRange && isYInRange
                                ? "Link can be opened."
                                : "Link is not supported.";
                        }(result));
                    } else {
                        successCallback("Link can be opened.");
                    }
                    window.removeEventListener("focus", onFocus);
                    window.removeEventListener("blur", handleBlur);
                    window.removeEventListener("mousemove", handleMouseMove);
                }, 500);
            },
            { once: true }
        );
        hiddenIframe.contentWindow.location.href = link;
    }
    Object.keys(zalo_acc).map(function (sdt, index) {
        let qrcode = zalo_acc[sdt];
        const zaloLinks = document.querySelectorAll('a[href*="zalo.me/' + sdt + '"]');
        zaloLinks.forEach((zalo) => {
            zalo.addEventListener("click", (event) => {
                event.preventDefault();
                const userAgent = navigator.userAgent.toLowerCase();
                const isIOS = /iphone|ipad|ipod/.test(userAgent);
                const isAndroid = /android/.test(userAgent);
                let redirectURL = null;
                if (isIOS) {
                    redirectURL = 'zalo://qr/p/' + qrcode;
                    window.location.href = redirectURL;
                } else if (isAndroid) {
                    redirectURL = 'zalo://zaloapp.com/qr/p/' + qrcode;
                    window.location.href = redirectURL;
                } else {
                    redirectURL = 'zalo://conversation?phone=' + sdt;
                    zalo.classList.add("zalo_loading");
                    devvnCheckLinkAvailability(
                        redirectURL,
                        function (result) {
                            zalo.classList.remove("zalo_loading");
                        },
                        function (error) {
                            zalo.classList.remove("zalo_loading");
                            redirectURL = 'https://chat.zalo.me/?phone=' + sdt;
                            window.location.href = redirectURL;
                        }
                    );
                }
            });
        });
    });
    //Thêm css vào site để lúc ấn trên pc trong lúc chờ check chuyển hướng sẽ không ấn vào thẻ a đó được nữa
    var styleElement = document.createElement("style");
    var cssCode = ".zalo_loading { pointer-events: none; }";
    styleElement.innerHTML = cssCode;
    document.head.appendChild(styleElement);
</script>
<?php

Trong đoạn code trên bạn cần chú ý tới đoạn sau

var zalo_acc = {
        "sdtzalo1" : "mã qr code 1",
        "sdtzalo2" : "mã qr code 2",
    };

Đoạn này chính là sđt zalo của bạn và mã qr code của sđt đó. Ví dụ số zalo lỗi là 0123456 và mã qr lấy dc là abcxyz thì sẽ sửa thành

var zalo_acc = {
        "0123456" : "abcxyz"
    };

Hướng dẫn lấy mã Qr code của zalo

Trên điện thoại bạn vào Zalo -> Nhấn vào Icon Quét mã QR ở góc bên phải màn hình -> Mã Qr của tôi -> Tải xuống.

img-2

Sau đó bạn dùng camera điện thoại của mình để quét mã Qr này thì nó sẽ hiện ra link Qr code. Lúc này thì link Qr lấy được có dạng: zalo://zaloapp.com/qr/p/h20x44xyz thì mã cần lấy chính là h20x44xyz

Hy vọng bài viết này sẽ giúp đỡ được bạn trong việc sử lỗi liên kết Zalo này.

Trả lời