Sari la conținut
WEBLURE

WooCommerce · Checkout

WooCommerce: comenzile se dublează la apăsarea repetată a butonului

Un client apasă de două ori pe „Plasează comanda” și apar două comenzi. Previi problema cu protecție în browser și cu verificări pe server.

  • Dublu clic
  • Server lent
  • Revenire din plată
  • Buton dezactivat după clic
  • Verificare pe server

Răspuns în aceeași zi lucrătoare Ofertă fixă Fără parole

Vrei să ți-o facem noi?

Doar două câmpuri. Răspundem în aceeași zi lucrătoare, cu ofertă fixă.

+ Telefon și detalii (opțional)

Răspuns rapid

Comenzile duplicate apar când clientul apasă din nou butonul în timp ce prima cerere încă se procesează, când serverul răspunde greu, când după o eroare sau o revenire din plată se reia checkout-ul sau când două plugin-uri creează comenzi. Prima apărare e în browser (butonul se dezactivează la primul clic), a doua pe server (verificarea unei comenzi recente identice), iar a treia e viteza checkout-ului. Verifici mereu întâi dacă sunt două comenzi reale sau una plătită și una abandonată.

Ce ai nevoie

  • Exemple de comenzi duplicate (ora, produse, client)
  • Acces la tema copil
  • Acces la jurnalele WooCommerce și ale gateway-ului

Pașii, pe rând

  1. 1Compară cele două comenziOra, produsele, plata, notele. Sunt create la câteva secunde unul de altul (dublu clic) sau după minute (reluare după eroare)? Răspunsul indică cauza.
  2. 2Verifică viteza checkout-uluiUn checkout lent invită la dublu clic. Verifică timpul cererii de checkout în Network și cauzele lentorii (server, plugin-uri, API-uri externe).
  3. 3Dezactivează butonul după primul clicUn mic JavaScript dezactivează butonul „Plasează comanda” și afișează un indicator de încărcare imediat ce a fost apăsat. Fragmentul de mai jos arată principiul.
  4. 4Tratează revenirea din platăDupă un eșec sau o revenire din 3D Secure, clientul ar trebui să poată relua plata pe aceeași comandă (link de plată), nu să plaseze una nouă. Vezi ghidul despre link de plată.
  5. 5Adaugă verificare pe serverÎnainte de a crea comanda, verifici dacă există o comandă foarte recentă a aceluiași client cu același conținut și o ignori. Pentru comenzile neplătite, WooCommerce reutilizează de obicei comanda în așteptare din sesiune; verifică comportamentul pe versiunea ta.
  6. 6Curăță duplicatele cu grijăVerifică în panoul procesatorului dacă ambele comenzi au plată reală. Anulează doar comanda neplătită și rambursează orice plată în plus.
  7. 7TesteazăDublu clic rapid, clic repetat pe un server lent (poți simula întârzierea) și revenire din plată. Verifică numărul comenzilor create.

Dezactivează butonul după primul clic (schelet, checkout clasic)

php
add_action('wp_footer', function () {
    if (!is_checkout()) {
        return;
    }
    ?>
    <script>
    jQuery(function ($) {
        $(document.body).on('click', '#place_order', function () {
            var $b = $(this);
            if ($b.data('wl-ocupat')) { return false; }
            $b.data('wl-ocupat', 1).prop('disabled', true).text('Se procesează…');
            setTimeout(function () { $b.data('wl-ocupat', 0).prop('disabled', false); }, 15000);
        });
        $(document.body).on('checkout_error', function () {
            $('#place_order').data('wl-ocupat', 0).prop('disabled', false);
        });
    });
    </script>
    <?php
});

Fragmentele de cod sunt scheleturi: le adaptezi la magazinul tău și le testezi întâi pe un mediu de test (staging). Butonul se reactivează după 15 secunde sau la o eroare de checkout, ca să nu rămână blocat.

Pentru checkout-ul cu blocuri, protecția în browser se face diferit. Documentația nu descrie un mecanism intern anti-duplicate pentru orice situație; verifică comportamentul pe versiunea ta.

Nu vrei să te complici sau ai rămas blocat? Scrie-ne și o facem noi.

Scrie-ne pe WhatsAppCere ofertă

Mai multe detalii

Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
1

Dublu clic pe buton

De ce: Cererea durează și clientul apasă din nou.

Ce faci: Dezactivează butonul după primul clic.

2

Reluare după eroare de plată

De ce: Clientul plasează o comandă nouă în loc să plătească cea existentă.

Ce faci: Oferă link de plată pentru comanda existentă și mesaje clare.

3

Două plugin-uri creează comenzi

De ce: Un plugin de checkout rapid sau de integrare duplică procesarea.

Ce faci: Testează fără plugin-urile suspecte.

Întrebări frecvente4 răspunsuri
Ambele comenzi sunt plătite?

Verifică în panoul procesatorului. Dacă da, rambursezi una. Dacă nu, anulezi comanda neplătită.

Previne WooCommerce singur duplicatele?

Parțial; comportamentul depinde de versiune și de gateway. De aceea adaugi protecție în browser și verificări pe server.

Cum prevenim problema?

Prin buton dezactivat după clic, checkout rapid și link de plată pentru comenzile existente.

Vă ocupați de implementare?

Da, cu testare pe checkout-ul tău. Cere ofertă fixă.