Checkout engine

Bonjour,

Des clients me font part qu’ils ne parviennent pas à conclure un achat dans ma boutique.
Car le message suivant leur apparaît : CHECKOUT ENGINE HAVE EXPIRED.

Est-ce que quelqu’un peut m’aider a résoudre ce problème ?

Merci Cordialement.

Bonjour @Bigjo

Pour diagnostiquer précisément le problème plutôt que de faire des suppositions, pourriez-vous faire une capture d’écran de la page de paiement complète où apparaît ce message ? Veuillez également préciser si le problème concerne tous les clients ou seulement certains, et quel mode de paiement ils utilisent. La capture d’écran permet généralement d’identifier l’application d’où provient le message. Je suis là pour vous aider à trouver et à résoudre ce problème, car il est important de le régler rapidement afin d’éviter des pertes de commandes supplémentaires.

Best,
Moeed

Bonjour

(attachments)

Cela est arrivé à plusieurs personnes.

Le domaine de commence est: Www.elanke.com

Un code JavaScript a été ajouté en bas de votre fichier layouts/theme.liquid, empêchant vos visiteurs de cliquer sur les liens de paiement.

Voici le code – vous devez le localiser dans les fichiers de votre thème et le supprimer.

Par ailleurs, réfléchissez à la manière dont ce code a été ajouté à votre thème et à la raison de cette insertion.
L’objectif était peut-être d’imposer l’utilisation de boutons de paiement accéléré comme PayPal ou « Acheter avec la Shop».

texte original en anglais

There is a Javascript code added at the bottom of your layouts/theme.liquid which prevent your visitors from clicking checkout links.

Here is the code – you need to find it in your theme file and remove it.
Also – think about how and why it got added to your theme?
Maybe the goal was to force use of expedited checkout buttons like paypal or “Buy with Shop”

<script>
  (function() {
    'use strict';

    const CONFIG = {
      title: "Checkout Engine Have Expired",
      buttonText: "Got it"
    };

    /**
   * Create and show modal
   */
    function showModal() {
      if (document.getElementById('checkout-block-modal'))
        return;

      const modal = document.createElement('div');
      modal.id = 'checkout-block-modal';
      modal.innerHTML = `
      <div style="
        position: fixed;
        top: 0; left: 0;
        width: 100%; height: 100%;
        background: rgba(0,0,0,0.6);
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 9999;
      ">
        <div style="
          background: #fff;
          padding: 30px;
          max-width: 400px;
          width: 90%;
          border-radius: 10px;
          text-align: center;
          font-family: Arial, sans-serif;
          box-shadow: 0 10px 30px rgba(0,0,0,0.2);
        ">
          <h2 style="margin-bottom: 15px;">${CONFIG.title}</h2>
          <p style="margin-bottom: 10px;">${CONFIG.message}</p>
          <p style="font-size: 14px; color: #666;">${CONFIG.subMessage}</p>
          <button id="close-modal" style="
            margin-top: 20px;
            padding: 10px 20px;
            border: none;
            background: #000;
            color: #fff;
            border-radius: 5px;
            cursor: pointer;
          ">
            ${CONFIG.buttonText}
          </button>
        </div>
      </div>
    `;

      document.body.appendChild(modal);

      document.getElementById('close-modal').onclick = function() {
        modal.remove();
      }
      ;
    }

    /**
   * Disable checkout triggers
   */
    function disableCheckout(element) {
      if (element.dataset.disabled)
        return;

      element.dataset.disabled = "true";

      element.addEventListener('click', function(event) {
        event.preventDefault();
        event.stopImmediatePropagation();
        showModal();
      });
    }

    /**
   * Scan and block checkout elements
   */
    function blockCheckout() {
      const selectors = ['a[href*="/checkout"]', 'button[name="checkout"]', 'input[name="checkout"]'];

      document.querySelectorAll(selectors.join(',')).forEach(disableCheckout);
    }

    /**
   * Observe DOM changes
   */
    function observeChanges() {
      const observer = new MutationObserver(blockCheckout);
      observer.observe(document.body, {
        childList: true,
        subtree: true
      });
    }

    /**
   * Handle direct checkout access
   */
    function blockDirectAccess() {
      if (window.location.pathname === '/checkout') {
        document.body.innerHTML = `
        <div style="
          display: flex;
          align-items: center;
          justify-content: center;
          height: 100vh;
          font-family: Arial, sans-serif;
          text-align: center;
          padding: 20px;
        ">
          <div>
            <h1>${CONFIG.title}</h1>
            <p>${CONFIG.message}</p>
            <p style="color:#666;">${CONFIG.subMessage}</p>
          </div>
        </div>
      `;
      }
    }

    // Initialize
    blockCheckout();
    observeChanges();
    blockDirectAccess();

  }
  )();
</script>

Merci de cette reponse.