Changeset 3642474
- Timestamp:
- 08/11/2026 07:57:18 PM (3 months ago)
- Location:
- neopayment
- Files:
-
- 12 added
- 24 edited
- 1 copied
-
tags/3.0.6 (copied) (copied from neopayment/trunk )
-
tags/3.0.6/assets/banner-1544x500.png (added)
-
tags/3.0.6/assets/banner-772x250.png (added)
-
tags/3.0.6/assets/css/neopayment-card-fields.css (modified) (1 diff)
-
tags/3.0.6/assets/icon-128x128.png (added)
-
tags/3.0.6/assets/icon-256x256.png (added)
-
tags/3.0.6/assets/js/neopayment-3ds-popup.js (modified) (16 diffs)
-
tags/3.0.6/assets/screenshot-1.png (added)
-
tags/3.0.6/assets/screenshot-2.png (added)
-
tags/3.0.6/changelog.txt (modified) (1 diff)
-
tags/3.0.6/class-neopayment-standard.php (modified) (4 diffs)
-
tags/3.0.6/i18n/neopayment-es_ES-f2678d668666585d1540a505a20c9bed.json (modified) (1 diff)
-
tags/3.0.6/i18n/neopayment-es_ES-f88ada2d7211c328208abd2a14686141.json (modified) (1 diff)
-
tags/3.0.6/i18n/neopayment-es_ES-fcefad2ef835a8c55a07246ba112b97e.json (modified) (1 diff)
-
tags/3.0.6/includes/blocks/class-neopayment-standard-blocks.php (modified) (1 diff)
-
tags/3.0.6/includes/class-neopayment-blocks-support.php (modified) (5 diffs)
-
tags/3.0.6/package-lock.json (modified) (19 diffs)
-
tags/3.0.6/package.json (modified) (1 diff)
-
tags/3.0.6/readme.txt (modified) (2 diffs)
-
trunk/assets/banner-1544x500.png (added)
-
trunk/assets/banner-772x250.png (added)
-
trunk/assets/css/neopayment-card-fields.css (modified) (1 diff)
-
trunk/assets/icon-128x128.png (added)
-
trunk/assets/icon-256x256.png (added)
-
trunk/assets/js/neopayment-3ds-popup.js (modified) (16 diffs)
-
trunk/assets/screenshot-1.png (added)
-
trunk/assets/screenshot-2.png (added)
-
trunk/changelog.txt (modified) (1 diff)
-
trunk/class-neopayment-standard.php (modified) (4 diffs)
-
trunk/i18n/neopayment-es_ES-f2678d668666585d1540a505a20c9bed.json (modified) (1 diff)
-
trunk/i18n/neopayment-es_ES-f88ada2d7211c328208abd2a14686141.json (modified) (1 diff)
-
trunk/i18n/neopayment-es_ES-fcefad2ef835a8c55a07246ba112b97e.json (modified) (1 diff)
-
trunk/includes/blocks/class-neopayment-standard-blocks.php (modified) (1 diff)
-
trunk/includes/class-neopayment-blocks-support.php (modified) (5 diffs)
-
trunk/package-lock.json (modified) (19 diffs)
-
trunk/package.json (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
neopayment/tags/3.0.6/assets/css/neopayment-card-fields.css
r3583684 r3642474 35 35 36 36 37 .required { 38 color: #e74c3c; 39 margin-left: 0.25rem; 40 font-weight: bold; 41 font-size: 1rem; 42 } 43 44 .neopayment-card-fields { 45 padding: 10px; 46 display: flex; 47 flex-direction: column; 48 gap: 15px; 49 max-width: 100%; 50 } 51 52 .neopayment-card-fields__row { 53 display: flex; 54 gap: 15px; 55 flex-wrap: wrap; 56 } 57 58 .neopayment-card-fields__group { 59 flex: 1 1 1px; 60 display: flex; 61 flex-direction: column; 62 } 63 64 .neopayment-card-fields input { 65 padding: 8px; 66 font-size: 14px; 67 border: 1px solid #ccc; 68 border-radius: 4px; 69 } 70 71 .neopayment-card-fields__error { 72 color: #e74c3c; 73 font-size: 0.875rem; 74 margin-top: 0.25rem; 75 display: block; 76 line-height: 1.2; 77 } 78 79 .required { 37 .neopayment-card-fields .required, 38 .wc-credit-card-form .required { 80 39 color: #e74c3c; 81 40 margin-left: 0.25rem; -
neopayment/tags/3.0.6/assets/js/neopayment-3ds-popup.js
r3583684 r3642474 1 const __ = (window.wp && window.wp.i18n && window.wp.i18n.__)2 ? window.wp.i18n.__3 : (s) => s;4 5 1 jQuery( 6 2 ($) => { 3 const __ = (window.wp && window.wp.i18n && window.wp.i18n.__) 4 ? window.wp.i18n.__ 5 : (s) => s; 6 7 /** 8 * Toggle challenge UI: 9 * - false (default): open 3DS in a browser popup window. 10 * - true: iframe modal flow. 11 */ 12 const USE_3DS_MODAL = false; 13 7 14 const MODAL_WIDTH = 560; 8 15 const MODAL_HEIGHT = 760; 9 16 const openedChallenges = new Set(); 10 17 let modalElements = null; 18 let popupWaitElements = null; 11 19 let iframeLoadTimer = null; 12 20 let fallbackCountdownTimer = null; 13 21 let processingHintTimer = null; 22 let popupWatchTimer = null; 14 23 let activeChallengeUrl = null; 24 let activeChallengePopup = null; 15 25 let frameLoadCount = 0; 16 26 let callbackHandled = false; 17 27 let blockPageNavigation = false; 28 /** True once a popup window actually opened (not blocked). */ 29 let popupDidOpen = false; 30 /** True when the shopper closed the popup before finishing 3DS. */ 31 let popupClosedByUser = false; 32 33 /* ------------------------------------------------------------------ */ 34 /* Modal */ 35 /* ------------------------------------------------------------------ */ 18 36 19 37 function ensure3DSModal() { … … 64 82 65 83 const title = document.createElement('span'); 66 title.textContent = __('Verificación segura 3DS', 'neopayment-payment-gateway');84 title.textContent = __('Verificación de seguridad', 'neopayment-payment-gateway'); 67 85 68 86 const iframe = document.createElement('iframe'); 69 87 iframe.className = 'neopayment-3ds-modal__frame'; 70 iframe.setAttribute('title', __(' Autenticación 3DS', 'neopayment-payment-gateway'));88 iframe.setAttribute('title', __('Verificación de seguridad', 'neopayment-payment-gateway')); 71 89 iframe.setAttribute('allow', 'payment'); 72 90 iframe.style.height = `${MODAL_HEIGHT}px`; … … 98 116 99 117 const processingText = document.createElement('p'); 100 processingText.textContent = __(' Procesando autenticación 3DS. Por favor espere...', 'neopayment-payment-gateway');118 processingText.textContent = __('Estamos verificando tu pago. Un momento, por favor…', 'neopayment-payment-gateway'); 101 119 processingText.style.margin = '0'; 102 120 processingText.style.fontSize = '14px'; … … 129 147 openWindowBtn.type = 'button'; 130 148 openWindowBtn.className = 'neopayment-3ds-modal__open-window'; 131 openWindowBtn.textContent = __('Abrir en nueva ventana', 'neopayment-payment-gateway');149 openWindowBtn.textContent = __('Abrir en otra ventana', 'neopayment-payment-gateway'); 132 150 openWindowBtn.style.border = '1px solid #ccd5e2'; 133 151 openWindowBtn.style.background = '#fff'; … … 142 160 cancelBtn.type = 'button'; 143 161 cancelBtn.className = 'neopayment-3ds-modal__cancel'; 144 cancelBtn.textContent = __('Cancelar verificación', 'neopayment-payment-gateway');162 cancelBtn.textContent = __('Cancelar', 'neopayment-payment-gateway'); 145 163 cancelBtn.style.border = '1px solid #ccd5e2'; 146 164 cancelBtn.style.background = '#fff'; … … 220 238 let remaining = seconds; 221 239 setModalStatus( 222 __( 223 'Cargando verificación 3DS... Si tarda demasiado, podrás abrirla en nueva ventana en', 224 'neopayment-payment-gateway' 225 ) + ` ${remaining}s` 240 __('Cargando la verificación… Si tarda mucho, podrás abrirla en otra ventana en', 'neopayment-payment-gateway') + 241 ` ${remaining}s` 226 242 ); 227 243 clearFallbackCountdown(); … … 233 249 } 234 250 setModalStatus( 235 __( 236 'Cargando verificación 3DS... Si tarda demasiado, podrás abrirla en nueva ventana en', 237 'neopayment-payment-gateway' 238 ) + ` ${remaining}s` 251 __('Cargando la verificación… Si tarda mucho, podrás abrirla en otra ventana en', 'neopayment-payment-gateway') + 252 ` ${remaining}s` 239 253 ); 240 254 }, 1000); … … 263 277 showProcessingLayer(false); 264 278 toggleOpenWindowButton(true); 265 setModalStatus(__(' La verificación está tardando. Si lo prefieres, ábrela en una nueva ventana.', 'neopayment-payment-gateway'));279 setModalStatus(__('Esto está tardando más de lo habitual. Puedes abrirlo en otra ventana.', 'neopayment-payment-gateway')); 266 280 }, 7000); 267 281 … … 283 297 showProcessingLayer(false); 284 298 toggleOpenWindowButton(false); 285 setModalStatus(__(' Procesando autenticación 3DS. Por favor espere...', 'neopayment-payment-gateway'));299 setModalStatus(__('Estamos verificando tu pago. Un momento, por favor…', 'neopayment-payment-gateway')); 286 300 } 287 301 }; … … 313 327 } 314 328 329 /* ------------------------------------------------------------------ */ 330 /* Popup flow (default) */ 331 /* ------------------------------------------------------------------ */ 332 333 function ensurePopupWaitPanel() { 334 if (popupWaitElements) { 335 return popupWaitElements; 336 } 337 338 const overlay = document.createElement('div'); 339 overlay.className = 'neopayment-3ds-popup-wait'; 340 overlay.style.position = 'fixed'; 341 overlay.style.inset = '0'; 342 overlay.style.display = 'none'; 343 overlay.style.alignItems = 'center'; 344 overlay.style.justifyContent = 'center'; 345 overlay.style.background = 'rgba(0,0,0,.55)'; 346 overlay.style.zIndex = '99998'; 347 overlay.style.padding = '16px'; 348 349 const card = document.createElement('div'); 350 card.style.maxWidth = '420px'; 351 card.style.width = '100%'; 352 card.style.background = '#fff'; 353 card.style.borderRadius = '10px'; 354 card.style.boxShadow = '0 16px 50px rgba(0,0,0,.35)'; 355 card.style.padding = '20px 18px'; 356 card.style.textAlign = 'center'; 357 358 const title = document.createElement('h3'); 359 title.textContent = __('Verificación de seguridad', 'neopayment-payment-gateway'); 360 title.style.margin = '0 0 10px'; 361 title.style.fontSize = '18px'; 362 title.style.color = '#22324a'; 363 364 const text = document.createElement('p'); 365 text.className = 'neopayment-3ds-popup-wait__text'; 366 text.style.margin = '0 0 16px'; 367 text.style.fontSize = '14px'; 368 text.style.lineHeight = '1.45'; 369 text.style.color = '#475569'; 370 371 const actions = document.createElement('div'); 372 actions.style.display = 'flex'; 373 actions.style.gap = '10px'; 374 actions.style.justifyContent = 'center'; 375 actions.style.flexWrap = 'wrap'; 376 377 const reopenBtn = document.createElement('button'); 378 reopenBtn.type = 'button'; 379 reopenBtn.textContent = __('Intentarlo nuevamente', 'neopayment-payment-gateway'); 380 reopenBtn.style.border = '1px solid #2f6fb3'; 381 reopenBtn.style.background = '#2f6fb3'; 382 reopenBtn.style.color = '#fff'; 383 reopenBtn.style.padding = '8px 12px'; 384 reopenBtn.style.borderRadius = '6px'; 385 reopenBtn.style.fontSize = '13px'; 386 reopenBtn.style.cursor = 'pointer'; 387 388 const cancelBtn = document.createElement('button'); 389 cancelBtn.type = 'button'; 390 cancelBtn.textContent = __('Cancelar', 'neopayment-payment-gateway'); 391 cancelBtn.style.border = '1px solid #ccd5e2'; 392 cancelBtn.style.background = '#fff'; 393 cancelBtn.style.color = '#22324a'; 394 cancelBtn.style.padding = '8px 12px'; 395 cancelBtn.style.borderRadius = '6px'; 396 cancelBtn.style.fontSize = '13px'; 397 cancelBtn.style.cursor = 'pointer'; 398 399 reopenBtn.addEventListener('click', () => { 400 if (!activeChallengeUrl) { 401 return; 402 } 403 404 // Challenge URLs are typically one-time. 405 if (popupDidOpen || popupClosedByUser) { 406 closeChallengePopup(true); 407 showUserMessage( 408 __('Verificación incompleta', 'neopayment-payment-gateway'), 409 __( 410 'Cerraste la ventana de verificación. Inténtalo nuevamente para continuar.', 411 'neopayment-payment-gateway' 412 ), 413 true 414 ); 415 return; 416 } 417 418 // Popup was blocked and never opened, safe to retry the same URL. 419 start3DSChallenge(activeChallengeUrl); 420 }); 421 cancelBtn.addEventListener('click', () => { 422 if (activeChallengeUrl) { 423 openedChallenges.delete(activeChallengeUrl); 424 } 425 closeChallengePopup(true); 426 window.location.reload(); 427 }); 428 429 actions.appendChild(reopenBtn); 430 actions.appendChild(cancelBtn); 431 card.appendChild(title); 432 card.appendChild(text); 433 card.appendChild(actions); 434 overlay.appendChild(card); 435 document.body.appendChild(overlay); 436 437 popupWaitElements = { overlay, text, reopenBtn }; 438 return popupWaitElements; 439 } 440 441 function showPopupWaitPanel(message, options = {}) { 442 const panel = ensurePopupWaitPanel(); 443 panel.text.textContent = message; 444 const reopenLabel = options.reopenLabel || __('Intentarlo nuevamente', 'neopayment-payment-gateway'); 445 panel.reopenBtn.textContent = reopenLabel; 446 panel.overlay.style.display = 'flex'; 447 document.body.classList.add('neopayment-3ds-modal-open'); 448 blockPageNavigation = true; 449 } 450 451 function hidePopupWaitPanel() { 452 if (!popupWaitElements) { 453 return; 454 } 455 popupWaitElements.overlay.style.display = 'none'; 456 document.body.classList.remove('neopayment-3ds-modal-open'); 457 blockPageNavigation = false; 458 } 459 460 function clearPopupWatch() { 461 if (popupWatchTimer) { 462 clearInterval(popupWatchTimer); 463 popupWatchTimer = null; 464 } 465 } 466 467 function isPopupBlocked(popup) { 468 if (!popup) { 469 return true; 470 } 471 try { 472 return popup.closed === true; 473 } catch (e) { 474 return true; 475 } 476 } 477 478 function notifyPopupBlocked() { 479 showUserMessage( 480 __('No se pudo abrir la verificación', 'neopayment-payment-gateway'), 481 __( 482 'Tu navegador bloqueó una ventana necesaria para verificar el pago. Permite ventanas emergentes en este sitio e inténtalo nuevamente.', 483 'neopayment-payment-gateway' 484 ), 485 false 486 ); 487 showPopupWaitPanel( 488 __( 489 'No pudimos abrir la verificación. Permite ventanas emergentes en tu navegador y pulsa Intentarlo nuevamente.', 490 'neopayment-payment-gateway' 491 ) 492 ); 493 } 494 495 function openChallengePopup(url) { 496 activeChallengeUrl = url; 497 callbackHandled = false; 498 popupClosedByUser = false; 499 500 let popup = null; 501 try { 502 // Unique name avoids reusing a closing/closed window handle. 503 popup = window.open( 504 url, 505 `neopayment_3ds_${Date.now()}`, 506 `width=${MODAL_WIDTH},height=${MODAL_HEIGHT},scrollbars=yes,resizable=yes` 507 ); 508 } catch (e) { 509 popup = null; 510 } 511 512 activeChallengePopup = popup; 513 514 // Some browsers return a Window even when blocked; re-check shortly after. 515 window.setTimeout(() => { 516 if (callbackHandled) { 517 return; 518 } 519 if (isPopupBlocked(popup)) { 520 activeChallengePopup = null; 521 popupDidOpen = false; 522 notifyPopupBlocked(); 523 return; 524 } 525 526 popupDidOpen = true; 527 showPopupWaitPanel( 528 __( 529 'Completa la verificación en la ventana que se abrió. Mantén esta página abierta hasta terminar.', 530 'neopayment-payment-gateway' 531 ) 532 ); 533 534 clearPopupWatch(); 535 popupWatchTimer = window.setInterval(() => { 536 if (callbackHandled) { 537 clearPopupWatch(); 538 return; 539 } 540 if (isPopupBlocked(activeChallengePopup)) { 541 clearPopupWatch(); 542 activeChallengePopup = null; 543 popupClosedByUser = true; 544 if (!callbackHandled) { 545 showPopupWaitPanel( 546 __( 547 'Cerraste la ventana de verificación. Pulsa Intentarlo nuevamente para continuar.', 548 'neopayment-payment-gateway' 549 ), 550 { 551 reopenLabel: __('Intentarlo nuevamente', 'neopayment-payment-gateway'), 552 } 553 ); 554 } 555 } 556 }, 700); 557 }, 350); 558 559 return popup; 560 } 561 562 function closeChallengePopup(forceCloseWindow = false) { 563 clearPopupWatch(); 564 hidePopupWaitPanel(); 565 if (forceCloseWindow && activeChallengePopup && !activeChallengePopup.closed) { 566 try { 567 activeChallengePopup.close(); 568 } catch (e) { 569 // Ignore cross-window close errors. 570 } 571 } 572 activeChallengePopup = null; 573 activeChallengeUrl = null; 574 callbackHandled = false; 575 blockPageNavigation = false; 576 popupDidOpen = false; 577 popupClosedByUser = false; 578 } 579 580 /** 581 * Single entry point for classic / blocks / order-pay challenge opening. 582 */ 583 function start3DSChallenge(url) { 584 if (!url) { 585 return; 586 } 587 if (USE_3DS_MODAL) { 588 open3DSModal(url); 589 return; 590 } 591 openChallengePopup(url); 592 } 593 315 594 function handlePopupEvents() { 316 595 function asObject(maybeJson) { … … 358 637 if (!openedChallenges.has(challengeUrl)) { 359 638 openedChallenges.add(challengeUrl); 360 open3DSModal(challengeUrl);639 start3DSChallenge(challengeUrl); 361 640 } 362 641 if (event) { … … 423 702 } 424 703 openedChallenges.add(response.challenge_url); 425 open3DSModal(response.challenge_url);704 start3DSChallenge(response.challenge_url); 426 705 return; 427 706 } … … 447 726 } 448 727 openedChallenges.add(details.challenge_url); 449 open3DSModal(details.challenge_url);728 start3DSChallenge(details.challenge_url); 450 729 return; 451 730 } … … 508 787 return; 509 788 } 510 // Ignore messages not coming from the active 3DS iframe. 511 if (!modalElements || event.source !== modalElements.iframe.contentWindow) { 789 790 const fromIframe = 791 modalElements && event.source === modalElements.iframe.contentWindow; 792 const fromPopup = 793 activeChallengePopup && event.source === activeChallengePopup; 794 if (!fromIframe && !fromPopup) { 512 795 return; 513 796 } 797 514 798 callbackHandled = true; 515 close3DSModal(); 799 if (USE_3DS_MODAL) { 800 close3DSModal(); 801 } else { 802 closeChallengePopup(true); 803 } 804 516 805 if (event.data.neopayment3ds === 'success') { 517 806 window.location.href = event.data.redirect_to || window.location.href; … … 519 808 console.warn('[NEOPAYMENT-3DS] Authentication failed.'); 520 809 showUserMessage( 521 __('Error de autenticación', 'neopayment-payment-gateway'), 522 __('Inténtalo nuevamente. Si el problema persiste, verifica con tu banco.', 'neopayment-payment-gateway'), 523 false 810 __('No se pudo verificar el pago', 'neopayment-payment-gateway'), 811 __( 812 'No pudimos completar la verificación. Inténtalo nuevamente. Si el problema continúa, contacta a tu banco.', 813 'neopayment-payment-gateway' 814 ), 815 true 524 816 ); 525 817 } … … 543 835 } 544 836 openedChallenges.add(raw); 545 open3DSModal(raw);837 start3DSChallenge(raw); 546 838 try { 547 839 const u = new URL(window.location.href); -
neopayment/tags/3.0.6/changelog.txt
r3583684 r3642474 29 29 2026.04.13 - version 3.0.0 30 30 * Renamed plugin 31 32 2025.09.22 - version 2.5.2 33 * Changed prefix 34 * Added nonces 35 * Resubmitted plugin 31 36 32 37 2025.09.22 - version 2.5.1 -
neopayment/tags/3.0.6/class-neopayment-standard.php
r3583684 r3642474 241 241 } 242 242 243 if ( ! $is_order_pay && $this->is_blocks_checkout_page() ) { 244 return; 245 } 246 243 247 $base = plugin_dir_url(__FILE__) . 'assets/js/'; 244 248 $ver = NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION; … … 267 271 ); 268 272 269 // Script for the 3DS popup + classic checkout.270 wp_ enqueue_script(271 'neopayment-3ds-popup ',273 // Classic-only handle 274 wp_register_script( 275 'neopayment-3ds-popup-classic', 272 276 $base . 'neopayment-3ds-popup.js', 273 277 array( 'jquery', 'neopayment-sweetalert' ), … … 275 279 true 276 280 ); 281 wp_enqueue_script( 'neopayment-3ds-popup-classic' ); 277 282 278 283 // This will be used to handle the 3DS challenge response. … … 304 309 305 310 wp_localize_script( 306 'neopayment-3ds-popup ',311 'neopayment-3ds-popup-classic', 307 312 'neopayment_3DS', 308 313 $localized 309 314 ); 315 } 316 317 /** 318 * Whether the current checkout page is the WooCommerce Blocks checkout. 319 * 320 * @return bool 321 */ 322 private function is_blocks_checkout_page() { 323 if ( function_exists( 'has_block' ) && has_block( 'woocommerce/checkout' ) ) { 324 return true; 325 } 326 327 if ( 328 class_exists( '\Automattic\WooCommerce\Blocks\Utils\CartCheckoutUtils' ) 329 && is_callable( array( '\Automattic\WooCommerce\Blocks\Utils\CartCheckoutUtils', 'is_checkout_block_default' ) ) 330 ) { 331 return (bool) \Automattic\WooCommerce\Blocks\Utils\CartCheckoutUtils::is_checkout_block_default(); 332 } 333 334 return false; 310 335 } 311 336 -
neopayment/tags/3.0.6/i18n/neopayment-es_ES-f2678d668666585d1540a505a20c9bed.json
r3583684 r3642474 1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/components\/neopayment-card-fields.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":[" "],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":[""],"Invalid CVC":[""]}}}1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/components\/neopayment-card-fields.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":["CVC"],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":["Fecha no v\u00e1lida"],"Invalid CVC":["CVC no v\u00e1lido"]}}} -
neopayment/tags/3.0.6/i18n/neopayment-es_ES-f88ada2d7211c328208abd2a14686141.json
r3583684 r3642474 1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"build\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":[" "],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":[""],"Invalid CVC":[""],"Holder name is required":[""],"Neopayment Standard Gateway":[""]}}}1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"build\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":["CVC"],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":["Fecha no v\u00e1lida"],"Invalid CVC":["CVC no v\u00e1lido"],"Holder name is required":["El nombre del titular es obligatorio"],"Neopayment Standard Gateway":["Pasarela est\u00e1ndar Neopayment"]}}} -
neopayment/tags/3.0.6/i18n/neopayment-es_ES-fcefad2ef835a8c55a07246ba112b97e.json
r3583684 r3642474 1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Invalid date":[" "],"Invalid CVC":[""],"Holder name is required":[""],"Neopayment Standard Gateway":[""]}}}1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Invalid date":["Fecha no v\u00e1lida"],"Invalid CVC":["CVC no v\u00e1lido"],"Holder name is required":["El nombre del titular es obligatorio"],"Neopayment Standard Gateway":["Pasarela est\u00e1ndar Neopayment"]}}} -
neopayment/tags/3.0.6/includes/blocks/class-neopayment-standard-blocks.php
r3583684 r3642474 43 43 return array( 44 44 'neopayment-standard-blocks-js', 45 'neopayment-3ds-popup ',45 'neopayment-3ds-popup-blocks', 46 46 ); 47 } 48 49 /** 50 * Styles for the blocks payment method UI. 51 * 52 * @return array 53 */ 54 public function get_payment_method_style_handles() { 55 return array( 'neopayment-card-fields-style' ); 47 56 } 48 57 -
neopayment/tags/3.0.6/includes/class-neopayment-blocks-support.php
r3583684 r3642474 38 38 add_action( 'init', array( __CLASS__, 'register_scripts' ) ); 39 39 add_action( 'init', array( __CLASS__, 'register_styles' ) ); 40 add_action( 'wp_enqueue_scripts', array( __CLASS__, 'maybe_enqueue_checkout_styles' ), 20 ); 40 41 } 41 42 … … 74 75 'wp-i18n', 75 76 ), 76 $standard_asset['version'] ?? NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION,77 $standard_asset['version'] ?? \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION, 77 78 true 78 79 ); … … 84 85 ); 85 86 87 $popup_ver = file_exists( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) 88 ? (string) filemtime( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) 89 : \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION; 90 86 91 wp_register_script( 87 'neopayment-3ds-popup', 92 'neopayment-sweetalert', 93 NEOPAYMENT_URL . 'assets/js/sweetAlert/sweetalert.min.js', 94 array(), 95 '2.1.2', 96 true 97 ); 98 99 // Blocks-only handle 100 wp_register_script( 101 'neopayment-3ds-popup-blocks', 88 102 NEOPAYMENT_URL . 'assets/js/neopayment-3ds-popup.js', 89 array( 'jquery', 'neopayment-s tandard-blocks-js' ),90 file_exists( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) ? filemtime( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) : NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION,103 array( 'jquery', 'neopayment-sweetalert', 'neopayment-standard-blocks-js' ), 104 $popup_ver, 91 105 true 92 106 ); … … 116 130 'wp-i18n', 117 131 ), 118 $telered_asset['version'] ?? NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION,132 $telered_asset['version'] ?? \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION, 119 133 true 120 134 ); … … 133 147 */ 134 148 public static function register_styles() { 135 wp_ enqueue_style(149 wp_register_style( 136 150 'neopayment-card-fields-style', 137 151 NEOPAYMENT_URL . 'assets/css/neopayment-card-fields.css', 138 152 array(), 139 '1.0.0'153 \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION 140 154 ); 141 155 } 156 157 /** 158 * Enqueues checkout styles for classic flows when Blocks did not load them. 159 * 160 * @return void 161 */ 162 public static function maybe_enqueue_checkout_styles() { 163 if ( wp_style_is( 'neopayment-card-fields-style', 'enqueued' ) ) { 164 return; 165 } 166 167 $is_order_pay = function_exists( 'is_wc_endpoint_url' ) && is_wc_endpoint_url( 'order-pay' ); 168 $is_checkout = function_exists( 'is_checkout' ) && is_checkout(); 169 if ( ! $is_checkout && ! $is_order_pay ) { 170 return; 171 } 172 173 wp_enqueue_style( 'neopayment-card-fields-style' ); 174 } 142 175 } -
neopayment/tags/3.0.6/package-lock.json
r3583684 r3642474 9 9 "version": "2.0.0", 10 10 "devDependencies": { 11 "@babel/core": "^7.2 7.4",11 "@babel/core": "^7.29.6", 12 12 "@babel/preset-env": "^7.29.5", 13 13 "@babel/preset-react": "^7.27.1", … … 18 18 } 19 19 }, 20 "node_modules/@ampproject/remapping": {21 "version": "2.3.0",22 "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",23 "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",24 "dev": true,25 "license": "Apache-2.0",26 "dependencies": {27 "@jridgewell/gen-mapping": "^0.3.5",28 "@jridgewell/trace-mapping": "^0.3.24"29 },30 "engines": {31 "node": ">=6.0.0"32 }33 },34 20 "node_modules/@babel/code-frame": { 35 "version": "7.29. 0",36 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29. 0.tgz",37 "integrity": "sha512- 9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",38 "dev": true, 39 "license": "MIT", 40 "dependencies": { 41 "@babel/helper-validator-identifier": "^7.2 8.5",21 "version": "7.29.7", 22 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", 23 "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", 24 "dev": true, 25 "license": "MIT", 26 "dependencies": { 27 "@babel/helper-validator-identifier": "^7.29.7", 42 28 "js-tokens": "^4.0.0", 43 29 "picocolors": "^1.1.1" … … 48 34 }, 49 35 "node_modules/@babel/compat-data": { 50 "version": "7.29. 3",51 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29. 3.tgz",52 "integrity": "sha512- LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",36 "version": "7.29.7", 37 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", 38 "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", 53 39 "dev": true, 54 40 "license": "MIT", … … 58 44 }, 59 45 "node_modules/@babel/core": { 60 "version": "7.2 7.4",61 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2 7.4.tgz",62 "integrity": "sha512- bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",63 "dev": true, 64 "license": "MIT", 65 "dependencies": { 66 "@ ampproject/remapping": "^2.2.0",67 "@babel/ code-frame": "^7.27.1",68 "@babel/ generator": "^7.27.3",69 "@babel/helper- compilation-targets": "^7.27.2",70 "@babel/helper -module-transforms": "^7.27.3",71 "@babel/ helpers": "^7.27.4",72 "@babel/ parser": "^7.27.4",73 "@babel/t emplate": "^7.27.2",74 "@babel/t raverse": "^7.27.4",75 "@ babel/types": "^7.27.3",46 "version": "7.29.7", 47 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", 48 "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", 49 "dev": true, 50 "license": "MIT", 51 "dependencies": { 52 "@babel/code-frame": "^7.29.7", 53 "@babel/generator": "^7.29.7", 54 "@babel/helper-compilation-targets": "^7.29.7", 55 "@babel/helper-module-transforms": "^7.29.7", 56 "@babel/helpers": "^7.29.7", 57 "@babel/parser": "^7.29.7", 58 "@babel/template": "^7.29.7", 59 "@babel/traverse": "^7.29.7", 60 "@babel/types": "^7.29.7", 61 "@jridgewell/remapping": "^2.3.5", 76 62 "convert-source-map": "^2.0.0", 77 63 "debug": "^4.1.0", … … 89 75 }, 90 76 "node_modules/@babel/generator": { 91 "version": "7.29. 1",92 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29. 1.tgz",93 "integrity": "sha512- qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",94 "dev": true, 95 "license": "MIT", 96 "dependencies": { 97 "@babel/parser": "^7.29. 0",98 "@babel/types": "^7.29. 0",77 "version": "7.29.8", 78 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", 79 "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", 80 "dev": true, 81 "license": "MIT", 82 "dependencies": { 83 "@babel/parser": "^7.29.8", 84 "@babel/types": "^7.29.8", 99 85 "@jridgewell/gen-mapping": "^0.3.12", 100 86 "@jridgewell/trace-mapping": "^0.3.28", … … 119 105 }, 120 106 "node_modules/@babel/helper-compilation-targets": { 121 "version": "7.2 8.6",122 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.2 8.6.tgz",123 "integrity": "sha512- JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",124 "dev": true, 125 "license": "MIT", 126 "dependencies": { 127 "@babel/compat-data": "^7.2 8.6",128 "@babel/helper-validator-option": "^7.2 7.1",107 "version": "7.29.7", 108 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", 109 "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", 110 "dev": true, 111 "license": "MIT", 112 "dependencies": { 113 "@babel/compat-data": "^7.29.7", 114 "@babel/helper-validator-option": "^7.29.7", 129 115 "browserslist": "^4.24.0", 130 116 "lru-cache": "^5.1.1", … … 193 179 }, 194 180 "node_modules/@babel/helper-globals": { 195 "version": "7.2 8.0",196 "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.2 8.0.tgz",197 "integrity": "sha512- +W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",181 "version": "7.29.7", 182 "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", 183 "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", 198 184 "dev": true, 199 185 "license": "MIT", … … 217 203 }, 218 204 "node_modules/@babel/helper-module-imports": { 219 "version": "7.2 8.6",220 "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.2 8.6.tgz",221 "integrity": "sha512- l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",222 "dev": true, 223 "license": "MIT", 224 "dependencies": { 225 "@babel/traverse": "^7.2 8.6",226 "@babel/types": "^7.2 8.6"205 "version": "7.29.7", 206 "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", 207 "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", 208 "dev": true, 209 "license": "MIT", 210 "dependencies": { 211 "@babel/traverse": "^7.29.7", 212 "@babel/types": "^7.29.7" 227 213 }, 228 214 "engines": { … … 231 217 }, 232 218 "node_modules/@babel/helper-module-transforms": { 233 "version": "7.2 8.6",234 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2 8.6.tgz",235 "integrity": "sha512- 67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",236 "dev": true, 237 "license": "MIT", 238 "dependencies": { 239 "@babel/helper-module-imports": "^7.2 8.6",240 "@babel/helper-validator-identifier": "^7.2 8.5",241 "@babel/traverse": "^7.2 8.6"219 "version": "7.29.7", 220 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", 221 "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", 222 "dev": true, 223 "license": "MIT", 224 "dependencies": { 225 "@babel/helper-module-imports": "^7.29.7", 226 "@babel/helper-validator-identifier": "^7.29.7", 227 "@babel/traverse": "^7.29.7" 242 228 }, 243 229 "engines": { … … 322 308 }, 323 309 "node_modules/@babel/helper-string-parser": { 324 "version": "7.2 7.1",325 "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.2 7.1.tgz",326 "integrity": "sha512- qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",310 "version": "7.29.7", 311 "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", 312 "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", 327 313 "dev": true, 328 314 "license": "MIT", … … 332 318 }, 333 319 "node_modules/@babel/helper-validator-identifier": { 334 "version": "7.2 8.5",335 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.2 8.5.tgz",336 "integrity": "sha512-q Ss4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",320 "version": "7.29.7", 321 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", 322 "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", 337 323 "dev": true, 338 324 "license": "MIT", … … 342 328 }, 343 329 "node_modules/@babel/helper-validator-option": { 344 "version": "7.2 7.1",345 "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.2 7.1.tgz",346 "integrity": "sha512- YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",330 "version": "7.29.7", 331 "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", 332 "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", 347 333 "dev": true, 348 334 "license": "MIT", … … 367 353 }, 368 354 "node_modules/@babel/helpers": { 369 "version": "7.2 7.6",370 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2 7.6.tgz",371 "integrity": "sha512- muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",372 "dev": true, 373 "license": "MIT", 374 "dependencies": { 375 "@babel/template": "^7.2 7.2",376 "@babel/types": "^7.2 7.6"355 "version": "7.29.7", 356 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", 357 "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", 358 "dev": true, 359 "license": "MIT", 360 "dependencies": { 361 "@babel/template": "^7.29.7", 362 "@babel/types": "^7.29.7" 377 363 }, 378 364 "engines": { … … 381 367 }, 382 368 "node_modules/@babel/parser": { 383 "version": "7.29. 3",384 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29. 3.tgz",385 "integrity": "sha512- b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",386 "dev": true, 387 "license": "MIT", 388 "dependencies": { 389 "@babel/types": "^7.29. 0"369 "version": "7.29.8", 370 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", 371 "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", 372 "dev": true, 373 "license": "MIT", 374 "dependencies": { 375 "@babel/types": "^7.29.8" 390 376 }, 391 377 "bin": { … … 1623 1609 }, 1624 1610 "node_modules/@babel/template": { 1625 "version": "7.2 8.6",1626 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2 8.6.tgz",1627 "integrity": "sha512- YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",1628 "dev": true, 1629 "license": "MIT", 1630 "dependencies": { 1631 "@babel/code-frame": "^7.2 8.6",1632 "@babel/parser": "^7.2 8.6",1633 "@babel/types": "^7.2 8.6"1611 "version": "7.29.7", 1612 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", 1613 "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", 1614 "dev": true, 1615 "license": "MIT", 1616 "dependencies": { 1617 "@babel/code-frame": "^7.29.7", 1618 "@babel/parser": "^7.29.7", 1619 "@babel/types": "^7.29.7" 1634 1620 }, 1635 1621 "engines": { … … 1638 1624 }, 1639 1625 "node_modules/@babel/traverse": { 1640 "version": "7.29. 0",1641 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29. 0.tgz",1642 "integrity": "sha512- 4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",1643 "dev": true, 1644 "license": "MIT", 1645 "dependencies": { 1646 "@babel/code-frame": "^7.29. 0",1647 "@babel/generator": "^7.29. 0",1648 "@babel/helper-globals": "^7.2 8.0",1649 "@babel/parser": "^7.29. 0",1650 "@babel/template": "^7.2 8.6",1651 "@babel/types": "^7.29. 0",1626 "version": "7.29.8", 1627 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", 1628 "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", 1629 "dev": true, 1630 "license": "MIT", 1631 "dependencies": { 1632 "@babel/code-frame": "^7.29.7", 1633 "@babel/generator": "^7.29.8", 1634 "@babel/helper-globals": "^7.29.7", 1635 "@babel/parser": "^7.29.8", 1636 "@babel/template": "^7.29.7", 1637 "@babel/types": "^7.29.8", 1652 1638 "debug": "^4.3.1" 1653 1639 }, … … 1657 1643 }, 1658 1644 "node_modules/@babel/types": { 1659 "version": "7.29. 0",1660 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29. 0.tgz",1661 "integrity": "sha512- LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",1662 "dev": true, 1663 "license": "MIT", 1664 "dependencies": { 1665 "@babel/helper-string-parser": "^7.2 7.1",1666 "@babel/helper-validator-identifier": "^7.2 8.5"1645 "version": "7.29.8", 1646 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", 1647 "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", 1648 "dev": true, 1649 "license": "MIT", 1650 "dependencies": { 1651 "@babel/helper-string-parser": "^7.29.7", 1652 "@babel/helper-validator-identifier": "^7.29.7" 1667 1653 }, 1668 1654 "engines": { … … 1688 1674 "dependencies": { 1689 1675 "@jridgewell/sourcemap-codec": "^1.5.0", 1676 "@jridgewell/trace-mapping": "^0.3.24" 1677 } 1678 }, 1679 "node_modules/@jridgewell/remapping": { 1680 "version": "2.3.5", 1681 "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 1682 "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 1683 "dev": true, 1684 "license": "MIT", 1685 "dependencies": { 1686 "@jridgewell/gen-mapping": "^0.3.5", 1690 1687 "@jridgewell/trace-mapping": "^0.3.24" 1691 1688 } … … 2531 2528 }, 2532 2529 "node_modules/fast-uri": { 2533 "version": " 3.1.2",2534 "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri- 3.1.2.tgz",2535 "integrity": "sha512- rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",2530 "version": "4.1.2", 2531 "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-4.1.2.tgz", 2532 "integrity": "sha512-TyGmBcbDTZXcb2cj5MV89DrF42DKvb3y5DDUNh95iO+IMeAzMkVSxK1PZRrRIpc9yg8U2GhGdbofNa0LS/a4Bw==", 2536 2533 "dev": true, 2537 2534 "funding": [ -
neopayment/tags/3.0.6/package.json
r3583684 r3642474 8 8 }, 9 9 "overrides": { 10 "fast-uri": ">=3.1. 1",10 "fast-uri": ">=3.1.5", 11 11 "@babel/plugin-transform-modules-systemjs": ">=7.29.4" 12 12 }, 13 13 "devDependencies": { 14 "@babel/core": "^7.2 7.4",14 "@babel/core": "^7.29.6", 15 15 "@babel/preset-env": "^7.29.5", 16 16 "@babel/preset-react": "^7.27.1", -
neopayment/tags/3.0.6/readme.txt
r3583684 r3642474 44 44 2. Activate the plugin through the \'Plugins\' screen in WordPress. 45 45 3. Go to **WooCommerce > Settings > Payments** and enable the \"Neopayment\". 46 4. Configure your Neopayment credentials and settings. 46 4. Enable the **Neopayment** payment method. 47 5. Configure your Neopayment credentials and settings. 48 6. Save the changes and perform a test transaction before using the plugin in production. 49 47 50 48 51 == Frequently Asked Questions == … … 60 63 Yes. You must be an approved merchant with Neopayment to use this plugin. 61 64 65 == Screenshots == 66 67 1. Neopayment payment method configuration in WooCommerce. 68 2. Neopayment payment option displayed at checkout. 69 62 70 == Changelog == 71 72 2026.06.23 - version 3.0.5 73 * Fix workflows 74 75 2026.06.23 - version 3.0.4 76 * Added GitHub workflows 77 78 2026.05.12 - version 3.0.2 79 * Added support for pay_for_order flows and 3DS challenge handling 80 * Fix OAuth token management for prod and test mode 81 * Fix 3DS on order-pay mode 82 * Updated payment gateway scripts and dependencies 83 84 2026.05.06 - version 3.0.1 85 * Introduced modal-based flow for 3D Secure replacing popup 86 * Improved 3DS processing feedback and error handling 87 * Fix plugin check errors based on WordPress feedback 88 * Fix scripts enqueued on cart pages 89 90 2026.04.13 - version 3.0.0 91 * Renamed plugin to Neopayment 92 63 93 2025.09.22 - version 2.5.2 64 94 * Changed prefix -
neopayment/trunk/assets/css/neopayment-card-fields.css
r3583684 r3642474 35 35 36 36 37 .required { 38 color: #e74c3c; 39 margin-left: 0.25rem; 40 font-weight: bold; 41 font-size: 1rem; 42 } 43 44 .neopayment-card-fields { 45 padding: 10px; 46 display: flex; 47 flex-direction: column; 48 gap: 15px; 49 max-width: 100%; 50 } 51 52 .neopayment-card-fields__row { 53 display: flex; 54 gap: 15px; 55 flex-wrap: wrap; 56 } 57 58 .neopayment-card-fields__group { 59 flex: 1 1 1px; 60 display: flex; 61 flex-direction: column; 62 } 63 64 .neopayment-card-fields input { 65 padding: 8px; 66 font-size: 14px; 67 border: 1px solid #ccc; 68 border-radius: 4px; 69 } 70 71 .neopayment-card-fields__error { 72 color: #e74c3c; 73 font-size: 0.875rem; 74 margin-top: 0.25rem; 75 display: block; 76 line-height: 1.2; 77 } 78 79 .required { 37 .neopayment-card-fields .required, 38 .wc-credit-card-form .required { 80 39 color: #e74c3c; 81 40 margin-left: 0.25rem; -
neopayment/trunk/assets/js/neopayment-3ds-popup.js
r3583684 r3642474 1 const __ = (window.wp && window.wp.i18n && window.wp.i18n.__)2 ? window.wp.i18n.__3 : (s) => s;4 5 1 jQuery( 6 2 ($) => { 3 const __ = (window.wp && window.wp.i18n && window.wp.i18n.__) 4 ? window.wp.i18n.__ 5 : (s) => s; 6 7 /** 8 * Toggle challenge UI: 9 * - false (default): open 3DS in a browser popup window. 10 * - true: iframe modal flow. 11 */ 12 const USE_3DS_MODAL = false; 13 7 14 const MODAL_WIDTH = 560; 8 15 const MODAL_HEIGHT = 760; 9 16 const openedChallenges = new Set(); 10 17 let modalElements = null; 18 let popupWaitElements = null; 11 19 let iframeLoadTimer = null; 12 20 let fallbackCountdownTimer = null; 13 21 let processingHintTimer = null; 22 let popupWatchTimer = null; 14 23 let activeChallengeUrl = null; 24 let activeChallengePopup = null; 15 25 let frameLoadCount = 0; 16 26 let callbackHandled = false; 17 27 let blockPageNavigation = false; 28 /** True once a popup window actually opened (not blocked). */ 29 let popupDidOpen = false; 30 /** True when the shopper closed the popup before finishing 3DS. */ 31 let popupClosedByUser = false; 32 33 /* ------------------------------------------------------------------ */ 34 /* Modal */ 35 /* ------------------------------------------------------------------ */ 18 36 19 37 function ensure3DSModal() { … … 64 82 65 83 const title = document.createElement('span'); 66 title.textContent = __('Verificación segura 3DS', 'neopayment-payment-gateway');84 title.textContent = __('Verificación de seguridad', 'neopayment-payment-gateway'); 67 85 68 86 const iframe = document.createElement('iframe'); 69 87 iframe.className = 'neopayment-3ds-modal__frame'; 70 iframe.setAttribute('title', __(' Autenticación 3DS', 'neopayment-payment-gateway'));88 iframe.setAttribute('title', __('Verificación de seguridad', 'neopayment-payment-gateway')); 71 89 iframe.setAttribute('allow', 'payment'); 72 90 iframe.style.height = `${MODAL_HEIGHT}px`; … … 98 116 99 117 const processingText = document.createElement('p'); 100 processingText.textContent = __(' Procesando autenticación 3DS. Por favor espere...', 'neopayment-payment-gateway');118 processingText.textContent = __('Estamos verificando tu pago. Un momento, por favor…', 'neopayment-payment-gateway'); 101 119 processingText.style.margin = '0'; 102 120 processingText.style.fontSize = '14px'; … … 129 147 openWindowBtn.type = 'button'; 130 148 openWindowBtn.className = 'neopayment-3ds-modal__open-window'; 131 openWindowBtn.textContent = __('Abrir en nueva ventana', 'neopayment-payment-gateway');149 openWindowBtn.textContent = __('Abrir en otra ventana', 'neopayment-payment-gateway'); 132 150 openWindowBtn.style.border = '1px solid #ccd5e2'; 133 151 openWindowBtn.style.background = '#fff'; … … 142 160 cancelBtn.type = 'button'; 143 161 cancelBtn.className = 'neopayment-3ds-modal__cancel'; 144 cancelBtn.textContent = __('Cancelar verificación', 'neopayment-payment-gateway');162 cancelBtn.textContent = __('Cancelar', 'neopayment-payment-gateway'); 145 163 cancelBtn.style.border = '1px solid #ccd5e2'; 146 164 cancelBtn.style.background = '#fff'; … … 220 238 let remaining = seconds; 221 239 setModalStatus( 222 __( 223 'Cargando verificación 3DS... Si tarda demasiado, podrás abrirla en nueva ventana en', 224 'neopayment-payment-gateway' 225 ) + ` ${remaining}s` 240 __('Cargando la verificación… Si tarda mucho, podrás abrirla en otra ventana en', 'neopayment-payment-gateway') + 241 ` ${remaining}s` 226 242 ); 227 243 clearFallbackCountdown(); … … 233 249 } 234 250 setModalStatus( 235 __( 236 'Cargando verificación 3DS... Si tarda demasiado, podrás abrirla en nueva ventana en', 237 'neopayment-payment-gateway' 238 ) + ` ${remaining}s` 251 __('Cargando la verificación… Si tarda mucho, podrás abrirla en otra ventana en', 'neopayment-payment-gateway') + 252 ` ${remaining}s` 239 253 ); 240 254 }, 1000); … … 263 277 showProcessingLayer(false); 264 278 toggleOpenWindowButton(true); 265 setModalStatus(__(' La verificación está tardando. Si lo prefieres, ábrela en una nueva ventana.', 'neopayment-payment-gateway'));279 setModalStatus(__('Esto está tardando más de lo habitual. Puedes abrirlo en otra ventana.', 'neopayment-payment-gateway')); 266 280 }, 7000); 267 281 … … 283 297 showProcessingLayer(false); 284 298 toggleOpenWindowButton(false); 285 setModalStatus(__(' Procesando autenticación 3DS. Por favor espere...', 'neopayment-payment-gateway'));299 setModalStatus(__('Estamos verificando tu pago. Un momento, por favor…', 'neopayment-payment-gateway')); 286 300 } 287 301 }; … … 313 327 } 314 328 329 /* ------------------------------------------------------------------ */ 330 /* Popup flow (default) */ 331 /* ------------------------------------------------------------------ */ 332 333 function ensurePopupWaitPanel() { 334 if (popupWaitElements) { 335 return popupWaitElements; 336 } 337 338 const overlay = document.createElement('div'); 339 overlay.className = 'neopayment-3ds-popup-wait'; 340 overlay.style.position = 'fixed'; 341 overlay.style.inset = '0'; 342 overlay.style.display = 'none'; 343 overlay.style.alignItems = 'center'; 344 overlay.style.justifyContent = 'center'; 345 overlay.style.background = 'rgba(0,0,0,.55)'; 346 overlay.style.zIndex = '99998'; 347 overlay.style.padding = '16px'; 348 349 const card = document.createElement('div'); 350 card.style.maxWidth = '420px'; 351 card.style.width = '100%'; 352 card.style.background = '#fff'; 353 card.style.borderRadius = '10px'; 354 card.style.boxShadow = '0 16px 50px rgba(0,0,0,.35)'; 355 card.style.padding = '20px 18px'; 356 card.style.textAlign = 'center'; 357 358 const title = document.createElement('h3'); 359 title.textContent = __('Verificación de seguridad', 'neopayment-payment-gateway'); 360 title.style.margin = '0 0 10px'; 361 title.style.fontSize = '18px'; 362 title.style.color = '#22324a'; 363 364 const text = document.createElement('p'); 365 text.className = 'neopayment-3ds-popup-wait__text'; 366 text.style.margin = '0 0 16px'; 367 text.style.fontSize = '14px'; 368 text.style.lineHeight = '1.45'; 369 text.style.color = '#475569'; 370 371 const actions = document.createElement('div'); 372 actions.style.display = 'flex'; 373 actions.style.gap = '10px'; 374 actions.style.justifyContent = 'center'; 375 actions.style.flexWrap = 'wrap'; 376 377 const reopenBtn = document.createElement('button'); 378 reopenBtn.type = 'button'; 379 reopenBtn.textContent = __('Intentarlo nuevamente', 'neopayment-payment-gateway'); 380 reopenBtn.style.border = '1px solid #2f6fb3'; 381 reopenBtn.style.background = '#2f6fb3'; 382 reopenBtn.style.color = '#fff'; 383 reopenBtn.style.padding = '8px 12px'; 384 reopenBtn.style.borderRadius = '6px'; 385 reopenBtn.style.fontSize = '13px'; 386 reopenBtn.style.cursor = 'pointer'; 387 388 const cancelBtn = document.createElement('button'); 389 cancelBtn.type = 'button'; 390 cancelBtn.textContent = __('Cancelar', 'neopayment-payment-gateway'); 391 cancelBtn.style.border = '1px solid #ccd5e2'; 392 cancelBtn.style.background = '#fff'; 393 cancelBtn.style.color = '#22324a'; 394 cancelBtn.style.padding = '8px 12px'; 395 cancelBtn.style.borderRadius = '6px'; 396 cancelBtn.style.fontSize = '13px'; 397 cancelBtn.style.cursor = 'pointer'; 398 399 reopenBtn.addEventListener('click', () => { 400 if (!activeChallengeUrl) { 401 return; 402 } 403 404 // Challenge URLs are typically one-time. 405 if (popupDidOpen || popupClosedByUser) { 406 closeChallengePopup(true); 407 showUserMessage( 408 __('Verificación incompleta', 'neopayment-payment-gateway'), 409 __( 410 'Cerraste la ventana de verificación. Inténtalo nuevamente para continuar.', 411 'neopayment-payment-gateway' 412 ), 413 true 414 ); 415 return; 416 } 417 418 // Popup was blocked and never opened, safe to retry the same URL. 419 start3DSChallenge(activeChallengeUrl); 420 }); 421 cancelBtn.addEventListener('click', () => { 422 if (activeChallengeUrl) { 423 openedChallenges.delete(activeChallengeUrl); 424 } 425 closeChallengePopup(true); 426 window.location.reload(); 427 }); 428 429 actions.appendChild(reopenBtn); 430 actions.appendChild(cancelBtn); 431 card.appendChild(title); 432 card.appendChild(text); 433 card.appendChild(actions); 434 overlay.appendChild(card); 435 document.body.appendChild(overlay); 436 437 popupWaitElements = { overlay, text, reopenBtn }; 438 return popupWaitElements; 439 } 440 441 function showPopupWaitPanel(message, options = {}) { 442 const panel = ensurePopupWaitPanel(); 443 panel.text.textContent = message; 444 const reopenLabel = options.reopenLabel || __('Intentarlo nuevamente', 'neopayment-payment-gateway'); 445 panel.reopenBtn.textContent = reopenLabel; 446 panel.overlay.style.display = 'flex'; 447 document.body.classList.add('neopayment-3ds-modal-open'); 448 blockPageNavigation = true; 449 } 450 451 function hidePopupWaitPanel() { 452 if (!popupWaitElements) { 453 return; 454 } 455 popupWaitElements.overlay.style.display = 'none'; 456 document.body.classList.remove('neopayment-3ds-modal-open'); 457 blockPageNavigation = false; 458 } 459 460 function clearPopupWatch() { 461 if (popupWatchTimer) { 462 clearInterval(popupWatchTimer); 463 popupWatchTimer = null; 464 } 465 } 466 467 function isPopupBlocked(popup) { 468 if (!popup) { 469 return true; 470 } 471 try { 472 return popup.closed === true; 473 } catch (e) { 474 return true; 475 } 476 } 477 478 function notifyPopupBlocked() { 479 showUserMessage( 480 __('No se pudo abrir la verificación', 'neopayment-payment-gateway'), 481 __( 482 'Tu navegador bloqueó una ventana necesaria para verificar el pago. Permite ventanas emergentes en este sitio e inténtalo nuevamente.', 483 'neopayment-payment-gateway' 484 ), 485 false 486 ); 487 showPopupWaitPanel( 488 __( 489 'No pudimos abrir la verificación. Permite ventanas emergentes en tu navegador y pulsa Intentarlo nuevamente.', 490 'neopayment-payment-gateway' 491 ) 492 ); 493 } 494 495 function openChallengePopup(url) { 496 activeChallengeUrl = url; 497 callbackHandled = false; 498 popupClosedByUser = false; 499 500 let popup = null; 501 try { 502 // Unique name avoids reusing a closing/closed window handle. 503 popup = window.open( 504 url, 505 `neopayment_3ds_${Date.now()}`, 506 `width=${MODAL_WIDTH},height=${MODAL_HEIGHT},scrollbars=yes,resizable=yes` 507 ); 508 } catch (e) { 509 popup = null; 510 } 511 512 activeChallengePopup = popup; 513 514 // Some browsers return a Window even when blocked; re-check shortly after. 515 window.setTimeout(() => { 516 if (callbackHandled) { 517 return; 518 } 519 if (isPopupBlocked(popup)) { 520 activeChallengePopup = null; 521 popupDidOpen = false; 522 notifyPopupBlocked(); 523 return; 524 } 525 526 popupDidOpen = true; 527 showPopupWaitPanel( 528 __( 529 'Completa la verificación en la ventana que se abrió. Mantén esta página abierta hasta terminar.', 530 'neopayment-payment-gateway' 531 ) 532 ); 533 534 clearPopupWatch(); 535 popupWatchTimer = window.setInterval(() => { 536 if (callbackHandled) { 537 clearPopupWatch(); 538 return; 539 } 540 if (isPopupBlocked(activeChallengePopup)) { 541 clearPopupWatch(); 542 activeChallengePopup = null; 543 popupClosedByUser = true; 544 if (!callbackHandled) { 545 showPopupWaitPanel( 546 __( 547 'Cerraste la ventana de verificación. Pulsa Intentarlo nuevamente para continuar.', 548 'neopayment-payment-gateway' 549 ), 550 { 551 reopenLabel: __('Intentarlo nuevamente', 'neopayment-payment-gateway'), 552 } 553 ); 554 } 555 } 556 }, 700); 557 }, 350); 558 559 return popup; 560 } 561 562 function closeChallengePopup(forceCloseWindow = false) { 563 clearPopupWatch(); 564 hidePopupWaitPanel(); 565 if (forceCloseWindow && activeChallengePopup && !activeChallengePopup.closed) { 566 try { 567 activeChallengePopup.close(); 568 } catch (e) { 569 // Ignore cross-window close errors. 570 } 571 } 572 activeChallengePopup = null; 573 activeChallengeUrl = null; 574 callbackHandled = false; 575 blockPageNavigation = false; 576 popupDidOpen = false; 577 popupClosedByUser = false; 578 } 579 580 /** 581 * Single entry point for classic / blocks / order-pay challenge opening. 582 */ 583 function start3DSChallenge(url) { 584 if (!url) { 585 return; 586 } 587 if (USE_3DS_MODAL) { 588 open3DSModal(url); 589 return; 590 } 591 openChallengePopup(url); 592 } 593 315 594 function handlePopupEvents() { 316 595 function asObject(maybeJson) { … … 358 637 if (!openedChallenges.has(challengeUrl)) { 359 638 openedChallenges.add(challengeUrl); 360 open3DSModal(challengeUrl);639 start3DSChallenge(challengeUrl); 361 640 } 362 641 if (event) { … … 423 702 } 424 703 openedChallenges.add(response.challenge_url); 425 open3DSModal(response.challenge_url);704 start3DSChallenge(response.challenge_url); 426 705 return; 427 706 } … … 447 726 } 448 727 openedChallenges.add(details.challenge_url); 449 open3DSModal(details.challenge_url);728 start3DSChallenge(details.challenge_url); 450 729 return; 451 730 } … … 508 787 return; 509 788 } 510 // Ignore messages not coming from the active 3DS iframe. 511 if (!modalElements || event.source !== modalElements.iframe.contentWindow) { 789 790 const fromIframe = 791 modalElements && event.source === modalElements.iframe.contentWindow; 792 const fromPopup = 793 activeChallengePopup && event.source === activeChallengePopup; 794 if (!fromIframe && !fromPopup) { 512 795 return; 513 796 } 797 514 798 callbackHandled = true; 515 close3DSModal(); 799 if (USE_3DS_MODAL) { 800 close3DSModal(); 801 } else { 802 closeChallengePopup(true); 803 } 804 516 805 if (event.data.neopayment3ds === 'success') { 517 806 window.location.href = event.data.redirect_to || window.location.href; … … 519 808 console.warn('[NEOPAYMENT-3DS] Authentication failed.'); 520 809 showUserMessage( 521 __('Error de autenticación', 'neopayment-payment-gateway'), 522 __('Inténtalo nuevamente. Si el problema persiste, verifica con tu banco.', 'neopayment-payment-gateway'), 523 false 810 __('No se pudo verificar el pago', 'neopayment-payment-gateway'), 811 __( 812 'No pudimos completar la verificación. Inténtalo nuevamente. Si el problema continúa, contacta a tu banco.', 813 'neopayment-payment-gateway' 814 ), 815 true 524 816 ); 525 817 } … … 543 835 } 544 836 openedChallenges.add(raw); 545 open3DSModal(raw);837 start3DSChallenge(raw); 546 838 try { 547 839 const u = new URL(window.location.href); -
neopayment/trunk/changelog.txt
r3583684 r3642474 29 29 2026.04.13 - version 3.0.0 30 30 * Renamed plugin 31 32 2025.09.22 - version 2.5.2 33 * Changed prefix 34 * Added nonces 35 * Resubmitted plugin 31 36 32 37 2025.09.22 - version 2.5.1 -
neopayment/trunk/class-neopayment-standard.php
r3583684 r3642474 241 241 } 242 242 243 if ( ! $is_order_pay && $this->is_blocks_checkout_page() ) { 244 return; 245 } 246 243 247 $base = plugin_dir_url(__FILE__) . 'assets/js/'; 244 248 $ver = NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION; … … 267 271 ); 268 272 269 // Script for the 3DS popup + classic checkout.270 wp_ enqueue_script(271 'neopayment-3ds-popup ',273 // Classic-only handle 274 wp_register_script( 275 'neopayment-3ds-popup-classic', 272 276 $base . 'neopayment-3ds-popup.js', 273 277 array( 'jquery', 'neopayment-sweetalert' ), … … 275 279 true 276 280 ); 281 wp_enqueue_script( 'neopayment-3ds-popup-classic' ); 277 282 278 283 // This will be used to handle the 3DS challenge response. … … 304 309 305 310 wp_localize_script( 306 'neopayment-3ds-popup ',311 'neopayment-3ds-popup-classic', 307 312 'neopayment_3DS', 308 313 $localized 309 314 ); 315 } 316 317 /** 318 * Whether the current checkout page is the WooCommerce Blocks checkout. 319 * 320 * @return bool 321 */ 322 private function is_blocks_checkout_page() { 323 if ( function_exists( 'has_block' ) && has_block( 'woocommerce/checkout' ) ) { 324 return true; 325 } 326 327 if ( 328 class_exists( '\Automattic\WooCommerce\Blocks\Utils\CartCheckoutUtils' ) 329 && is_callable( array( '\Automattic\WooCommerce\Blocks\Utils\CartCheckoutUtils', 'is_checkout_block_default' ) ) 330 ) { 331 return (bool) \Automattic\WooCommerce\Blocks\Utils\CartCheckoutUtils::is_checkout_block_default(); 332 } 333 334 return false; 310 335 } 311 336 -
neopayment/trunk/i18n/neopayment-es_ES-f2678d668666585d1540a505a20c9bed.json
r3583684 r3642474 1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/components\/neopayment-card-fields.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":[" "],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":[""],"Invalid CVC":[""]}}}1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/components\/neopayment-card-fields.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":["CVC"],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":["Fecha no v\u00e1lida"],"Invalid CVC":["CVC no v\u00e1lido"]}}} -
neopayment/trunk/i18n/neopayment-es_ES-f88ada2d7211c328208abd2a14686141.json
r3583684 r3642474 1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"build\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":[" "],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":[""],"Invalid CVC":[""],"Holder name is required":[""],"Neopayment Standard Gateway":[""]}}}1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"build\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"CVC":["CVC"],"Card holder":["T\u00edtular de la tarjeta"],"Card number":["N\u00famero de tarjeta"],"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Full name":["Nombre completo"],"You must enter the holder name":["Debes introducir el nombre del titular."],"Expiration date":["Fecha de expiraci\u00f3n"],"MM\/YY":["MM\/AA"],"Invalid date":["Fecha no v\u00e1lida"],"Invalid CVC":["CVC no v\u00e1lido"],"Holder name is required":["El nombre del titular es obligatorio"],"Neopayment Standard Gateway":["Pasarela est\u00e1ndar Neopayment"]}}} -
neopayment/trunk/i18n/neopayment-es_ES-fcefad2ef835a8c55a07246ba112b97e.json
r3583684 r3642474 1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Invalid date":[" "],"Invalid CVC":[""],"Holder name is required":[""],"Neopayment Standard Gateway":[""]}}}1 {"translation-revision-date":"2026-04-10T22:00:54+00:00","generator":"WP-CLI\/2.12.0","source":"assets\/js\/blocks\/neopayment-standard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=(n != 1);"},"Invalid card number":["N\u00famero de tarjeta no v\u00e1lido"],"Card (Visa\/Mastercard)":["Tarjeta (Visa\/Mastercard)"],"Invalid date":["Fecha no v\u00e1lida"],"Invalid CVC":["CVC no v\u00e1lido"],"Holder name is required":["El nombre del titular es obligatorio"],"Neopayment Standard Gateway":["Pasarela est\u00e1ndar Neopayment"]}}} -
neopayment/trunk/includes/blocks/class-neopayment-standard-blocks.php
r3583684 r3642474 43 43 return array( 44 44 'neopayment-standard-blocks-js', 45 'neopayment-3ds-popup ',45 'neopayment-3ds-popup-blocks', 46 46 ); 47 } 48 49 /** 50 * Styles for the blocks payment method UI. 51 * 52 * @return array 53 */ 54 public function get_payment_method_style_handles() { 55 return array( 'neopayment-card-fields-style' ); 47 56 } 48 57 -
neopayment/trunk/includes/class-neopayment-blocks-support.php
r3583684 r3642474 38 38 add_action( 'init', array( __CLASS__, 'register_scripts' ) ); 39 39 add_action( 'init', array( __CLASS__, 'register_styles' ) ); 40 add_action( 'wp_enqueue_scripts', array( __CLASS__, 'maybe_enqueue_checkout_styles' ), 20 ); 40 41 } 41 42 … … 74 75 'wp-i18n', 75 76 ), 76 $standard_asset['version'] ?? NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION,77 $standard_asset['version'] ?? \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION, 77 78 true 78 79 ); … … 84 85 ); 85 86 87 $popup_ver = file_exists( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) 88 ? (string) filemtime( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) 89 : \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION; 90 86 91 wp_register_script( 87 'neopayment-3ds-popup', 92 'neopayment-sweetalert', 93 NEOPAYMENT_URL . 'assets/js/sweetAlert/sweetalert.min.js', 94 array(), 95 '2.1.2', 96 true 97 ); 98 99 // Blocks-only handle 100 wp_register_script( 101 'neopayment-3ds-popup-blocks', 88 102 NEOPAYMENT_URL . 'assets/js/neopayment-3ds-popup.js', 89 array( 'jquery', 'neopayment-s tandard-blocks-js' ),90 file_exists( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) ? filemtime( NEOPAYMENT_PATH . 'assets/js/neopayment-3ds-popup.js' ) : NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION,103 array( 'jquery', 'neopayment-sweetalert', 'neopayment-standard-blocks-js' ), 104 $popup_ver, 91 105 true 92 106 ); … … 116 130 'wp-i18n', 117 131 ), 118 $telered_asset['version'] ?? NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION,132 $telered_asset['version'] ?? \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION, 119 133 true 120 134 ); … … 133 147 */ 134 148 public static function register_styles() { 135 wp_ enqueue_style(149 wp_register_style( 136 150 'neopayment-card-fields-style', 137 151 NEOPAYMENT_URL . 'assets/css/neopayment-card-fields.css', 138 152 array(), 139 '1.0.0'153 \NEOPAYMENT_Constants::NEOPAYMENT_PLUGIN_VERSION 140 154 ); 141 155 } 156 157 /** 158 * Enqueues checkout styles for classic flows when Blocks did not load them. 159 * 160 * @return void 161 */ 162 public static function maybe_enqueue_checkout_styles() { 163 if ( wp_style_is( 'neopayment-card-fields-style', 'enqueued' ) ) { 164 return; 165 } 166 167 $is_order_pay = function_exists( 'is_wc_endpoint_url' ) && is_wc_endpoint_url( 'order-pay' ); 168 $is_checkout = function_exists( 'is_checkout' ) && is_checkout(); 169 if ( ! $is_checkout && ! $is_order_pay ) { 170 return; 171 } 172 173 wp_enqueue_style( 'neopayment-card-fields-style' ); 174 } 142 175 } -
neopayment/trunk/package-lock.json
r3583684 r3642474 9 9 "version": "2.0.0", 10 10 "devDependencies": { 11 "@babel/core": "^7.2 7.4",11 "@babel/core": "^7.29.6", 12 12 "@babel/preset-env": "^7.29.5", 13 13 "@babel/preset-react": "^7.27.1", … … 18 18 } 19 19 }, 20 "node_modules/@ampproject/remapping": {21 "version": "2.3.0",22 "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",23 "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",24 "dev": true,25 "license": "Apache-2.0",26 "dependencies": {27 "@jridgewell/gen-mapping": "^0.3.5",28 "@jridgewell/trace-mapping": "^0.3.24"29 },30 "engines": {31 "node": ">=6.0.0"32 }33 },34 20 "node_modules/@babel/code-frame": { 35 "version": "7.29. 0",36 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29. 0.tgz",37 "integrity": "sha512- 9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",38 "dev": true, 39 "license": "MIT", 40 "dependencies": { 41 "@babel/helper-validator-identifier": "^7.2 8.5",21 "version": "7.29.7", 22 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", 23 "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", 24 "dev": true, 25 "license": "MIT", 26 "dependencies": { 27 "@babel/helper-validator-identifier": "^7.29.7", 42 28 "js-tokens": "^4.0.0", 43 29 "picocolors": "^1.1.1" … … 48 34 }, 49 35 "node_modules/@babel/compat-data": { 50 "version": "7.29. 3",51 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29. 3.tgz",52 "integrity": "sha512- LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",36 "version": "7.29.7", 37 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", 38 "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", 53 39 "dev": true, 54 40 "license": "MIT", … … 58 44 }, 59 45 "node_modules/@babel/core": { 60 "version": "7.2 7.4",61 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.2 7.4.tgz",62 "integrity": "sha512- bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==",63 "dev": true, 64 "license": "MIT", 65 "dependencies": { 66 "@ ampproject/remapping": "^2.2.0",67 "@babel/ code-frame": "^7.27.1",68 "@babel/ generator": "^7.27.3",69 "@babel/helper- compilation-targets": "^7.27.2",70 "@babel/helper -module-transforms": "^7.27.3",71 "@babel/ helpers": "^7.27.4",72 "@babel/ parser": "^7.27.4",73 "@babel/t emplate": "^7.27.2",74 "@babel/t raverse": "^7.27.4",75 "@ babel/types": "^7.27.3",46 "version": "7.29.7", 47 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", 48 "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", 49 "dev": true, 50 "license": "MIT", 51 "dependencies": { 52 "@babel/code-frame": "^7.29.7", 53 "@babel/generator": "^7.29.7", 54 "@babel/helper-compilation-targets": "^7.29.7", 55 "@babel/helper-module-transforms": "^7.29.7", 56 "@babel/helpers": "^7.29.7", 57 "@babel/parser": "^7.29.7", 58 "@babel/template": "^7.29.7", 59 "@babel/traverse": "^7.29.7", 60 "@babel/types": "^7.29.7", 61 "@jridgewell/remapping": "^2.3.5", 76 62 "convert-source-map": "^2.0.0", 77 63 "debug": "^4.1.0", … … 89 75 }, 90 76 "node_modules/@babel/generator": { 91 "version": "7.29. 1",92 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29. 1.tgz",93 "integrity": "sha512- qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",94 "dev": true, 95 "license": "MIT", 96 "dependencies": { 97 "@babel/parser": "^7.29. 0",98 "@babel/types": "^7.29. 0",77 "version": "7.29.8", 78 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", 79 "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", 80 "dev": true, 81 "license": "MIT", 82 "dependencies": { 83 "@babel/parser": "^7.29.8", 84 "@babel/types": "^7.29.8", 99 85 "@jridgewell/gen-mapping": "^0.3.12", 100 86 "@jridgewell/trace-mapping": "^0.3.28", … … 119 105 }, 120 106 "node_modules/@babel/helper-compilation-targets": { 121 "version": "7.2 8.6",122 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.2 8.6.tgz",123 "integrity": "sha512- JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",124 "dev": true, 125 "license": "MIT", 126 "dependencies": { 127 "@babel/compat-data": "^7.2 8.6",128 "@babel/helper-validator-option": "^7.2 7.1",107 "version": "7.29.7", 108 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", 109 "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", 110 "dev": true, 111 "license": "MIT", 112 "dependencies": { 113 "@babel/compat-data": "^7.29.7", 114 "@babel/helper-validator-option": "^7.29.7", 129 115 "browserslist": "^4.24.0", 130 116 "lru-cache": "^5.1.1", … … 193 179 }, 194 180 "node_modules/@babel/helper-globals": { 195 "version": "7.2 8.0",196 "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.2 8.0.tgz",197 "integrity": "sha512- +W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",181 "version": "7.29.7", 182 "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", 183 "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", 198 184 "dev": true, 199 185 "license": "MIT", … … 217 203 }, 218 204 "node_modules/@babel/helper-module-imports": { 219 "version": "7.2 8.6",220 "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.2 8.6.tgz",221 "integrity": "sha512- l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",222 "dev": true, 223 "license": "MIT", 224 "dependencies": { 225 "@babel/traverse": "^7.2 8.6",226 "@babel/types": "^7.2 8.6"205 "version": "7.29.7", 206 "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", 207 "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", 208 "dev": true, 209 "license": "MIT", 210 "dependencies": { 211 "@babel/traverse": "^7.29.7", 212 "@babel/types": "^7.29.7" 227 213 }, 228 214 "engines": { … … 231 217 }, 232 218 "node_modules/@babel/helper-module-transforms": { 233 "version": "7.2 8.6",234 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2 8.6.tgz",235 "integrity": "sha512- 67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",236 "dev": true, 237 "license": "MIT", 238 "dependencies": { 239 "@babel/helper-module-imports": "^7.2 8.6",240 "@babel/helper-validator-identifier": "^7.2 8.5",241 "@babel/traverse": "^7.2 8.6"219 "version": "7.29.7", 220 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", 221 "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", 222 "dev": true, 223 "license": "MIT", 224 "dependencies": { 225 "@babel/helper-module-imports": "^7.29.7", 226 "@babel/helper-validator-identifier": "^7.29.7", 227 "@babel/traverse": "^7.29.7" 242 228 }, 243 229 "engines": { … … 322 308 }, 323 309 "node_modules/@babel/helper-string-parser": { 324 "version": "7.2 7.1",325 "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.2 7.1.tgz",326 "integrity": "sha512- qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",310 "version": "7.29.7", 311 "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", 312 "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", 327 313 "dev": true, 328 314 "license": "MIT", … … 332 318 }, 333 319 "node_modules/@babel/helper-validator-identifier": { 334 "version": "7.2 8.5",335 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.2 8.5.tgz",336 "integrity": "sha512-q Ss4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",320 "version": "7.29.7", 321 "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", 322 "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", 337 323 "dev": true, 338 324 "license": "MIT", … … 342 328 }, 343 329 "node_modules/@babel/helper-validator-option": { 344 "version": "7.2 7.1",345 "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.2 7.1.tgz",346 "integrity": "sha512- YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",330 "version": "7.29.7", 331 "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", 332 "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", 347 333 "dev": true, 348 334 "license": "MIT", … … 367 353 }, 368 354 "node_modules/@babel/helpers": { 369 "version": "7.2 7.6",370 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2 7.6.tgz",371 "integrity": "sha512- muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==",372 "dev": true, 373 "license": "MIT", 374 "dependencies": { 375 "@babel/template": "^7.2 7.2",376 "@babel/types": "^7.2 7.6"355 "version": "7.29.7", 356 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", 357 "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", 358 "dev": true, 359 "license": "MIT", 360 "dependencies": { 361 "@babel/template": "^7.29.7", 362 "@babel/types": "^7.29.7" 377 363 }, 378 364 "engines": { … … 381 367 }, 382 368 "node_modules/@babel/parser": { 383 "version": "7.29. 3",384 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29. 3.tgz",385 "integrity": "sha512- b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",386 "dev": true, 387 "license": "MIT", 388 "dependencies": { 389 "@babel/types": "^7.29. 0"369 "version": "7.29.8", 370 "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", 371 "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", 372 "dev": true, 373 "license": "MIT", 374 "dependencies": { 375 "@babel/types": "^7.29.8" 390 376 }, 391 377 "bin": { … … 1623 1609 }, 1624 1610 "node_modules/@babel/template": { 1625 "version": "7.2 8.6",1626 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2 8.6.tgz",1627 "integrity": "sha512- YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",1628 "dev": true, 1629 "license": "MIT", 1630 "dependencies": { 1631 "@babel/code-frame": "^7.2 8.6",1632 "@babel/parser": "^7.2 8.6",1633 "@babel/types": "^7.2 8.6"1611 "version": "7.29.7", 1612 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", 1613 "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", 1614 "dev": true, 1615 "license": "MIT", 1616 "dependencies": { 1617 "@babel/code-frame": "^7.29.7", 1618 "@babel/parser": "^7.29.7", 1619 "@babel/types": "^7.29.7" 1634 1620 }, 1635 1621 "engines": { … … 1638 1624 }, 1639 1625 "node_modules/@babel/traverse": { 1640 "version": "7.29. 0",1641 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29. 0.tgz",1642 "integrity": "sha512- 4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",1643 "dev": true, 1644 "license": "MIT", 1645 "dependencies": { 1646 "@babel/code-frame": "^7.29. 0",1647 "@babel/generator": "^7.29. 0",1648 "@babel/helper-globals": "^7.2 8.0",1649 "@babel/parser": "^7.29. 0",1650 "@babel/template": "^7.2 8.6",1651 "@babel/types": "^7.29. 0",1626 "version": "7.29.8", 1627 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", 1628 "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", 1629 "dev": true, 1630 "license": "MIT", 1631 "dependencies": { 1632 "@babel/code-frame": "^7.29.7", 1633 "@babel/generator": "^7.29.8", 1634 "@babel/helper-globals": "^7.29.7", 1635 "@babel/parser": "^7.29.8", 1636 "@babel/template": "^7.29.7", 1637 "@babel/types": "^7.29.8", 1652 1638 "debug": "^4.3.1" 1653 1639 }, … … 1657 1643 }, 1658 1644 "node_modules/@babel/types": { 1659 "version": "7.29. 0",1660 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29. 0.tgz",1661 "integrity": "sha512- LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",1662 "dev": true, 1663 "license": "MIT", 1664 "dependencies": { 1665 "@babel/helper-string-parser": "^7.2 7.1",1666 "@babel/helper-validator-identifier": "^7.2 8.5"1645 "version": "7.29.8", 1646 "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", 1647 "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", 1648 "dev": true, 1649 "license": "MIT", 1650 "dependencies": { 1651 "@babel/helper-string-parser": "^7.29.7", 1652 "@babel/helper-validator-identifier": "^7.29.7" 1667 1653 }, 1668 1654 "engines": { … … 1688 1674 "dependencies": { 1689 1675 "@jridgewell/sourcemap-codec": "^1.5.0", 1676 "@jridgewell/trace-mapping": "^0.3.24" 1677 } 1678 }, 1679 "node_modules/@jridgewell/remapping": { 1680 "version": "2.3.5", 1681 "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", 1682 "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 1683 "dev": true, 1684 "license": "MIT", 1685 "dependencies": { 1686 "@jridgewell/gen-mapping": "^0.3.5", 1690 1687 "@jridgewell/trace-mapping": "^0.3.24" 1691 1688 } … … 2531 2528 }, 2532 2529 "node_modules/fast-uri": { 2533 "version": " 3.1.2",2534 "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri- 3.1.2.tgz",2535 "integrity": "sha512- rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",2530 "version": "4.1.2", 2531 "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-4.1.2.tgz", 2532 "integrity": "sha512-TyGmBcbDTZXcb2cj5MV89DrF42DKvb3y5DDUNh95iO+IMeAzMkVSxK1PZRrRIpc9yg8U2GhGdbofNa0LS/a4Bw==", 2536 2533 "dev": true, 2537 2534 "funding": [ -
neopayment/trunk/package.json
r3583684 r3642474 8 8 }, 9 9 "overrides": { 10 "fast-uri": ">=3.1. 1",10 "fast-uri": ">=3.1.5", 11 11 "@babel/plugin-transform-modules-systemjs": ">=7.29.4" 12 12 }, 13 13 "devDependencies": { 14 "@babel/core": "^7.2 7.4",14 "@babel/core": "^7.29.6", 15 15 "@babel/preset-env": "^7.29.5", 16 16 "@babel/preset-react": "^7.27.1", -
neopayment/trunk/readme.txt
r3583684 r3642474 44 44 2. Activate the plugin through the \'Plugins\' screen in WordPress. 45 45 3. Go to **WooCommerce > Settings > Payments** and enable the \"Neopayment\". 46 4. Configure your Neopayment credentials and settings. 46 4. Enable the **Neopayment** payment method. 47 5. Configure your Neopayment credentials and settings. 48 6. Save the changes and perform a test transaction before using the plugin in production. 49 47 50 48 51 == Frequently Asked Questions == … … 60 63 Yes. You must be an approved merchant with Neopayment to use this plugin. 61 64 65 == Screenshots == 66 67 1. Neopayment payment method configuration in WooCommerce. 68 2. Neopayment payment option displayed at checkout. 69 62 70 == Changelog == 71 72 2026.06.23 - version 3.0.5 73 * Fix workflows 74 75 2026.06.23 - version 3.0.4 76 * Added GitHub workflows 77 78 2026.05.12 - version 3.0.2 79 * Added support for pay_for_order flows and 3DS challenge handling 80 * Fix OAuth token management for prod and test mode 81 * Fix 3DS on order-pay mode 82 * Updated payment gateway scripts and dependencies 83 84 2026.05.06 - version 3.0.1 85 * Introduced modal-based flow for 3D Secure replacing popup 86 * Improved 3DS processing feedback and error handling 87 * Fix plugin check errors based on WordPress feedback 88 * Fix scripts enqueued on cart pages 89 90 2026.04.13 - version 3.0.0 91 * Renamed plugin to Neopayment 92 63 93 2025.09.22 - version 2.5.2 64 94 * Changed prefix
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)