ng-easycommerce 0.0.667-beta.2 → 0.0.667
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/decidirFormEc.html +36 -36
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# version 0.0.667
|
|
1
|
+
# version 0.0.667
|
|
2
2
|
- Se modifica `decidirFormEc.html` ya que el botón de pagar cargaba pero volvia a salir y permitia duplicar el pago en los pedidos con decidir.
|
|
3
3
|
# version 0.0.666
|
|
4
4
|
- `dataform-ec`: se modifica comprobacion para no permitir agregar direcciones a clientes con impuestos en direcciones.
|
|
@@ -253,8 +253,7 @@
|
|
|
253
253
|
<div class="container-fluid mt-3">
|
|
254
254
|
<div class="row">
|
|
255
255
|
<div class="col-md-6 col-12">
|
|
256
|
-
|
|
257
|
-
</div>
|
|
256
|
+
</div>
|
|
258
257
|
<div class="col-md-6 col-12">
|
|
259
258
|
<img src="../assets/images/cards-occasional.png" class="card-img-top" alt="...">
|
|
260
259
|
</div>
|
|
@@ -387,10 +386,12 @@
|
|
|
387
386
|
document.body.appendChild(iframe)
|
|
388
387
|
|
|
389
388
|
window.onload = function () {
|
|
389
|
+
|
|
390
|
+
// --- FIX 1: VARIABLE DE CONTROL ---
|
|
391
|
+
let isSubmitting = false;
|
|
390
392
|
|
|
391
393
|
let loadToken = document.querySelector('#loadToken');
|
|
392
394
|
let loadTokenBtn = document.querySelector('#loadTokenBtn');
|
|
393
|
-
let formSubmitted = false; // Bandera para evitar envíos duplicados
|
|
394
395
|
|
|
395
396
|
const isLoad = (state) => {
|
|
396
397
|
loadToken.style.display = !state && 'none' || 'block';
|
|
@@ -443,7 +444,7 @@
|
|
|
443
444
|
data['subtotal'] = document.getElementById('total_con_interes').value
|
|
444
445
|
data['dues'] = document.getElementById('tipo_interes').value;
|
|
445
446
|
}
|
|
446
|
-
|
|
447
|
+
|
|
447
448
|
}
|
|
448
449
|
|
|
449
450
|
try {
|
|
@@ -455,7 +456,8 @@
|
|
|
455
456
|
}
|
|
456
457
|
}).then(res => res.json())
|
|
457
458
|
.catch(error => {
|
|
458
|
-
|
|
459
|
+
console.error('Error:', error)
|
|
460
|
+
processError(response)
|
|
459
461
|
})
|
|
460
462
|
.then(response => {
|
|
461
463
|
console.log('Success:', response)
|
|
@@ -464,14 +466,14 @@
|
|
|
464
466
|
if (response.status == 'approved' || response.status == 'partially_authorized') {
|
|
465
467
|
processResponse(response)
|
|
466
468
|
} else {
|
|
467
|
-
|
|
469
|
+
processError(response)
|
|
468
470
|
}
|
|
469
471
|
} else {
|
|
470
|
-
|
|
472
|
+
processError(response)
|
|
471
473
|
}
|
|
472
474
|
});
|
|
473
475
|
} catch (error) {
|
|
474
|
-
|
|
476
|
+
processError(response)
|
|
475
477
|
}
|
|
476
478
|
localStorage.removeItem('dataRedirect')
|
|
477
479
|
localStorage.removeItem('dataDecidir')
|
|
@@ -482,7 +484,7 @@
|
|
|
482
484
|
console.log('Respuesta: ', response)
|
|
483
485
|
if (status != 200 && status != 201) {
|
|
484
486
|
//Manejo de error: Ver Respuesta de Error
|
|
485
|
-
|
|
487
|
+
processError(response)
|
|
486
488
|
} else {
|
|
487
489
|
//Manejo de respuesta donde response = {token: "99ab0740-4ef9-4b38-bdf9-c4c963459b22"}
|
|
488
490
|
sendToken(response)
|
|
@@ -491,46 +493,44 @@
|
|
|
491
493
|
|
|
492
494
|
const sendForm = (event) => {
|
|
493
495
|
event.preventDefault();
|
|
494
|
-
|
|
495
|
-
//
|
|
496
|
-
if
|
|
496
|
+
|
|
497
|
+
// --- FIX 2: VALIDACIÓN DE DOBLE SUBMIT ---
|
|
498
|
+
if(isSubmitting) {
|
|
499
|
+
console.log("Intento de doble submit bloqueado");
|
|
497
500
|
return false;
|
|
498
501
|
}
|
|
502
|
+
|
|
503
|
+
isSubmitting = true; // Bloqueamos nuevas peticiones
|
|
504
|
+
isLoad(true);
|
|
499
505
|
|
|
500
|
-
formSubmitted = true;
|
|
501
|
-
isLoad(true)
|
|
502
506
|
console.log('Formulario: ', form)
|
|
503
507
|
decidir.createToken(form, sdkResponseHandler);
|
|
504
508
|
return false;
|
|
505
509
|
}
|
|
506
510
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
localStorage.setItem('state', 'failure')
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
// Error de red (no llegó al backend) - permite reintentar
|
|
515
|
-
const processNetworkError = (error) => {
|
|
516
|
-
formSubmitted = false; // Permitir reintentar
|
|
511
|
+
const processError = (error) => {
|
|
512
|
+
console.log("ERROR ENVIO BACK ", error);
|
|
513
|
+
|
|
514
|
+
// --- FIX 3: LIBERAR BLOQUEO EN ERROR ---
|
|
517
515
|
isLoad(false)
|
|
516
|
+
isSubmitting = false; // Permitimos intentar de nuevo
|
|
517
|
+
|
|
518
518
|
localStorage.setItem('state', 'failure')
|
|
519
519
|
}
|
|
520
520
|
|
|
521
|
-
// Error del backend (la petición llegó pero fue rechazada) - NO permite reintentar
|
|
522
|
-
const processBackendError = (error) => {
|
|
523
|
-
// NO resetear formSubmitted - el pago ya se intentó procesar
|
|
524
|
-
// Mantener el spinner visible para evitar doble click
|
|
525
|
-
isLoad(true) // Mantener spinner visible
|
|
526
|
-
localStorage.setItem('state', 'failure')
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
// Respuesta exitosa del backend - NO permite reintentar
|
|
530
521
|
const processResponse = (response) => {
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
522
|
+
console.log("ENVIO BACK ", response);
|
|
523
|
+
|
|
524
|
+
// --- FIX 4: NO CERRAR SPINNER EN EXITO ---
|
|
525
|
+
if (response.status == 'approved' || response.status == 'partially_authorized') {
|
|
526
|
+
// Mantenemos isLoad(true) y isSubmitting = true
|
|
527
|
+
// Esto evita que el usuario toque nada mientras la modal se cierra sola
|
|
528
|
+
} else {
|
|
529
|
+
// Si falla, liberamos
|
|
530
|
+
isLoad(false);
|
|
531
|
+
isSubmitting = false;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
534
|
localStorage.setItem('state', response.status == 'approved' ? 'success' : 'partially_authorized')
|
|
535
535
|
}
|
|
536
536
|
|