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
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
- 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.
- 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).
- 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.
- 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ă.
- 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.
- 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.
- 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)
phpadd_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.
Mai multe detalii
Cauze frecvente și greșeli de evitatDacă pașii de mai sus nu au rezolvat problema
Dublu clic pe buton
De ce: Cererea durează și clientul apasă din nou.
Ce faci: Dezactivează butonul după primul clic.
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.
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ă.
Subiecte acoperite pe această pagină
- comenzi duplicate WooCommerce
- dublu clic plasează comanda
- comandă dublată checkout
- previne comenzi duplicate
- dezactivează buton place order
Ghiduri apropiate
- WooCommerce: finalizarea comenzii fără crearea unui cont
- WooCommerce: eliminarea câmpurilor inutile din checkout
- WooCommerce: validarea numărului de telefon la checkout
- WooCommerce: adrese de facturare și livrare diferite
- WooCommerce: butonul de plasare a comenzii nu răspunde
- WooCommerce: metodele de transport nu apar la checkout
- WooCommerce: client taxat de două ori
- WooCommerce: link de plată pentru comenzi existente
- Toate ghidurile
Surse și verificare
Verificat pe 5 noiembrie 2026. Denumirile din setări și pașii pot diferi între versiuni.
