From 11a95f1ad5b291d3946d04ee25dcd5ba4949ed4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?DianaBola=C3=B1oz?= Date: Thu, 20 Oct 2022 15:35:34 -0500 Subject: [PATCH] =?UTF-8?q?Revisi=C3=B3n:=201=20-=20Compatibilidad:=20One?= =?UTF-8?q?=20Page=20Checkout=20PS=20para=20PrestaSHop=201.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se añade compatibilidad con nuestro módulo One Page Checkout PS para que el método de pago se ejecute en la misma página de pago, para esto se ha migrado el código javascript existente en el archivo cc_form.tpl a un archivo JS del módulo donde se inicializan todos los eventos. La compatibilidad funciona con versiones recientes de nuestro One Page Checkout PS (Ejemplo: 4.1.5). Se añaden también algunas validaciones por variables que no estaba definidas y se añade mejora para que en caso de haber error en el pago se muestre el mensaje al cliente porque actualmente solo hacía la redirección Cabe indicar que este cambio puede servir para ser usado por otros módulo de compra rápida. --- .../controllers/front/typecard.php | 3 +- PS_1.7/openpayprestashop/es.php | 223 +---------- .../openpayprestashop/openpayprestashop.php | 100 +++-- .../views/js/openpay-prestashop.js | 352 +++++++++++++++++- .../views/templates/front/cc_form.tpl | 351 +---------------- 5 files changed, 424 insertions(+), 605 deletions(-) diff --git a/PS_1.7/openpayprestashop/controllers/front/typecard.php b/PS_1.7/openpayprestashop/controllers/front/typecard.php index afd0658..45136aa 100644 --- a/PS_1.7/openpayprestashop/controllers/front/typecard.php +++ b/PS_1.7/openpayprestashop/controllers/front/typecard.php @@ -26,7 +26,6 @@ class OpenpayPrestashopTypeCardModuleFrontController extends ModuleFrontController { - public function initContent() { parent::initContent(); @@ -39,7 +38,7 @@ public function displayAjax() $cardBin = Tools::getValue('card_bin'); $binRequestResponse = $this->getTypeCard($cardBin); - Logger::addLog('#cardType => '.$binRequestResponse, 1, null, 'Cart', (int) $this->context->cart->id, true); + Logger::addLog('#cardType => '.json_encode($binRequestResponse), 1, null, 'Cart', (int) $this->context->cart->id, true); if (!$binRequestResponse){ $binRequestResponse = array( diff --git a/PS_1.7/openpayprestashop/es.php b/PS_1.7/openpayprestashop/es.php index 72ad269..0e16d03 100644 --- a/PS_1.7/openpayprestashop/es.php +++ b/PS_1.7/openpayprestashop/es.php @@ -3,17 +3,11 @@ global $_MODULE; $_MODULE = array(); $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_59fca29c3aac96cc30bd3aee10a5d364'] = 'Openpay'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_d3988a372a94211257af1420ebb6e40a'] = 'Acepta pagos con tarjeta de crédtio-débito, pagos en efectivo y vía SPEI con Openpay'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ebb8d514f56157d7bd513eefdd9adb63'] = 'En espera de pago'; +$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ba4058004755dfd070308e293b88ab7c'] = 'Servicio no disponible.'; +$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_e2e8d0a2b79a779bb06656d2a6f39a00'] = 'La petición no pudo ser procesada.'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ad714e2411c2dab284b7a7af067df14e'] = 'Openpay pago con tarjeta'; +$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_8e5f653542197f29181fc29851462107'] = 'PrestaShop Cart ID'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_1100ee030335d019d5b7e7ae775d1a8e'] = 'Número de tarjeta:'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_35a7fad5166f249c76a30d50bb57eca1'] = 'Openpay pago con bitcoin'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_aea7f422238bdf0bf333a55e7b8be91d'] = 'Monto en bitcoins'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_c6fe2fd307f583c9af80171c10aa84fc'] = 'Dirección de pago'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_2ad91ac9b5ce587dfe3c6a4b4cffb944'] = 'Openpay pago en efectivo'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_3dd42bfc8345e82c43b4a40a3426ec49'] = 'Referencia:'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_2ccbcbd83c08414f6674c3b0e8686d0a'] = 'Openpay con SPEI'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_9205878d3f61a37bdc41ba592fab431c'] = 'CLABE:'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_645f6f84d4a8e99e7897634df8c1e5f4'] = 'Detalle de Transacción de Openpay:'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_57d5b6ac7b2a08b1d26f60e02fa6da51'] = 'Transacción ID:'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_c1f6368d15f7c13c4e5e8f70c68c747f'] = 'Método de pago:'; @@ -26,220 +20,11 @@ $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_955ad3298db330b5ee880c2c9e6f23a0'] = 'Producción'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_0cbc6611f5540bd0809a388dc95a615b'] = 'Sandbox'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_739be7e48b6ea442e35790a0a5f8e179'] = 'Openpay - Pago fallido'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_8e5f653542197f29181fc29851462107'] = 'PrestaShop Cart ID'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ba54b8645ec3d87e95b4da1b5baad66f'] = 'La extensión PHP CURL tiene que estar activada en su servidor'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_925a260901da79838907d47ad5894271'] = 'SSL tiene que ser habilitado en su tienda online ( antes de entrar en el modo activo)'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_7ace3cdcb3af03c1e95c89aac32facb8'] = 'Su servidor tiene que soportar mínimo PHP 5.2'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_5b1f9155642d713ae1329235d4cf35b9'] = 'Configurar las credenciales de Openpay en este módulo (Merchant ID , llave privada, llave pública)'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_83555b245beeecc66477202c574204e8'] = 'Todos los chequeos fueron exitosos. Ahora puedes configurar el módulo y comenzar a usar Openpay.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_e7cfcf73bb9a28f668f4e0d87fb9222a'] = 'Hay al menos un problema que te impdide usar Opepay. Favor de reparar el problema y recarga la página.'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_2617aa5b93617d8658a57b54a27b0d21'] = 'Dirección del cliente'; $_MODULE['<{openpayprestashop}prestashop>openpayprestashop_86e436045a729e57428a45aa12f0b60f'] = 'No se puede crear el cliente en Openpay'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ba4058004755dfd070308e293b88ab7c'] = 'Servicio no disponible.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_77dffa1da8fcdd645163bfa9beeb743f'] = 'La tarjeta fue rechazada.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_0dbe3b8619a4e422c6bdd08cbc2ef465'] = 'La tarjeta ha expirado.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ff2e086c236b8ae41f35aefac94dda25'] = 'La tarjeta no tiene fondos suficientes.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_830bdb0bc63bb5691832bf0c6ba527e7'] = 'La operación no esta permitida para este cliente o esta transacción.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_16a9b38d63a559a5f22ebc9c1c689d10'] = 'La tarjeta no es soportada en transacciones en línea.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_a55607550c02a8c1d369b3b7936b6a10'] = 'La tarjeta fue reportada como perdida.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_a5be1a7bebcf22a489f043fb0f9138fb'] = 'El banco ha restringido la tarjeta.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_c832867db8ebde039ab92681848124fb'] = 'El banco ha solicitado que la tarjeta sea retenida. Contacte al banco.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_9cb0f42113c4b6e3f78f61c3b4d8e5eb'] = 'Se requiere solicitar al banco autorización para realizar este pago.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_e2e8d0a2b79a779bb06656d2a6f39a00'] = 'La petición no pudo ser procesada.'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_aec17514fa308914b500b0da0916c208'] = 'El Webhook ya existe'; -$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_91d288545e0068f7ea289fac75b16f8a'] = 'El webhook no puede ser creado'; -$_MODULE['<{openpayprestashop}prestashop>configuration_b5ecf0c737203d26eba833c963ad6d52'] = 'Comienza a recibir pagos con tarjeta, pagos en efectivo en tiendas y pagos vía SPEI hoy mismo con Openpay.'; -$_MODULE['<{openpayprestashop}prestashop>configuration_2fdfd506efea08144c0794c32ca8250a'] = 'Crear una cuenta'; -$_MODULE['<{openpayprestashop}prestashop>configuration_d05bc3eb9adfbe0edaaae58547477d1f'] = 'Panel de administración'; -$_MODULE['<{openpayprestashop}prestashop>configuration_b03da28cf673fd29f46c6bf7dd76c72d'] = 'Contamos con un panel de administración donde podrás visualizar las diferentes transacciones que procese tu negocio.'; -$_MODULE['<{openpayprestashop}prestashop>configuration_e654f7a86a4458b9cd662267e0f29b52'] = 'Beneficios'; -$_MODULE['<{openpayprestashop}prestashop>configuration_3e9d9dcd9ec68d86d74166e716bfc605'] = 'Openpay ofrece una estructura sencilla de costos todo incluido para todo tipo de soluciones e-commerce o m-commerce.'; -$_MODULE['<{openpayprestashop}prestashop>configuration_7f06f8285fc2016156ecde484a937b5d'] = 'Sin renta mensual'; -$_MODULE['<{openpayprestashop}prestashop>configuration_711d2cd6f16d42eac2a6db64ef1310f2'] = 'Sin costos de integración'; -$_MODULE['<{openpayprestashop}prestashop>configuration_9aaf21aa9fb4ed5ac6164fb5071ad6f3'] = 'Sin comisiones de configuración'; -$_MODULE['<{openpayprestashop}prestashop>configuration_7456c4ff02d20e8bfeeaf433c43859cc'] = 'Sin plazos forzosos'; -$_MODULE['<{openpayprestashop}prestashop>configuration_53ec60f35cc6540782a1467667da98ef'] = 'Sin cargos ocultos ni letras chiquitas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_151cc725606e5b25a7819ee4ae0d34f2'] = 'Acepta pagos con tarjetas de crédito'; -$_MODULE['<{openpayprestashop}prestashop>configuration_3af067d2854baf5fc115d4aaf214f1ee'] = 'Acepta pagos con tarjetas de débito'; -$_MODULE['<{openpayprestashop}prestashop>configuration_5d13fd12fe5ce8f9966cc14aab851f5e'] = 'Consulta las tarjetas soportadas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_614312ed5cbb0e8437c36cd40788570c'] = 'Comisión por cargo exitoso'; +$_MODULE['<{openpayprestashop}prestashop>openpayprestashop_ba46726aaaf38e4eb450b86fa933649f'] = 'El monto de la transacción es menor al mínimo permitido para esta promoción.'; $_MODULE['<{openpayprestashop}prestashop>configuration_612a531dd63e9b678aa9de2301f7ff64'] = '2.9% + $2.5 MXN'; -$_MODULE['<{openpayprestashop}prestashop>configuration_463ea67c3392dff58057327807f4257a'] = 'Comisión por cargo exitoso: American Express'; -$_MODULE['<{openpayprestashop}prestashop>configuration_8e4e595e987a55f267effc93b95138e1'] = '4.5% + $2.5 MXN'; -$_MODULE['<{openpayprestashop}prestashop>configuration_ec80877d7c1b71180a110dae0b94d97c'] = 'Acepta pagos en efectivo en tiendas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_a03dae70e4f6f09c930061646ab880cd'] = 'Consulta las tiendas afiliadas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_4499977533632fff244316bf6ba25efc'] = 'Comisión por cargo exitoso'; -$_MODULE['<{openpayprestashop}prestashop>configuration_802485b3d3bf72d797c81100c4641e9b'] = 'Acepta pagos con transferencia electrónica (SPEI)'; -$_MODULE['<{openpayprestashop}prestashop>configuration_c8927361a6ba530282792a2dc891447c'] = 'Consulta los bancos soportados'; -$_MODULE['<{openpayprestashop}prestashop>configuration_1227a7f39053751341d4a941a081ebcb'] = '$8 MXN'; -$_MODULE['<{openpayprestashop}prestashop>configuration_426e8dabc75f825b1cb4f7005a478913'] = 'Chequeos técnicos'; -$_MODULE['<{openpayprestashop}prestashop>configuration_eb631b70ae7c721773f91b506c815082'] = 'Configuraciones'; $_MODULE['<{openpayprestashop}prestashop>configuration_2652eec977dcb2a5aea85f5bec235b05'] = 'Sandbox'; -$_MODULE['<{openpayprestashop}prestashop>configuration_955ad3298db330b5ee880c2c9e6f23a0'] = 'Producción'; -$_MODULE['<{openpayprestashop}prestashop>configuration_530e654ceca2da2b437e95dbfa3d64e6'] = 'Merchant ID sandbox'; -$_MODULE['<{openpayprestashop}prestashop>configuration_41ea4437398020e57961d9bacba57471'] = 'Merchant ID producción'; -$_MODULE['<{openpayprestashop}prestashop>configuration_cd2b339f9c716a39f95b2fa2f67180cc'] = 'Llave privada sandbox'; -$_MODULE['<{openpayprestashop}prestashop>configuration_52bf767dd13f98ff9ae89a8679073c90'] = 'Llave privada producción'; -$_MODULE['<{openpayprestashop}prestashop>configuration_5add70ffebb3fc7302c8534276a08d20'] = 'Llave pública sandbox'; -$_MODULE['<{openpayprestashop}prestashop>configuration_88792babe629258d539766f0f710eb82'] = 'Llave pública producción'; -$_MODULE['<{openpayprestashop}prestashop>configuration_1bacb9caa60813ee730288d7dd95e7fc'] = 'URL del sitio'; -$_MODULE['<{openpayprestashop}prestashop>configuration_e6b391a8d2c4d45902a23a8b6585703d'] = 'URL'; -$_MODULE['<{openpayprestashop}prestashop>configuration_026cd93085523cd54a85240d1549b35f'] = 'Es importante mantener este campo actualizado si cambias de dominio o subdominio'; -$_MODULE['<{openpayprestashop}prestashop>configuration_0da8d9a75492046bea7f314521e07cae'] = 'Formas de pago aceptadas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_40fed24d2e43a64767663257cfd5f4b1'] = 'Tarjeta de crédito/débito'; -$_MODULE['<{openpayprestashop}prestashop>configuration_f9d299b21a010a3778a2f0f5367ed4a7'] = 'Pago en tiendas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_57e0b461454d4ddbde47036797a8413f'] = 'Transferencia bancaria'; -$_MODULE['<{openpayprestashop}prestashop>configuration_1a85e8287e1d5a5bae142fb7287c99e1'] = 'Bitcoins'; -$_MODULE['<{openpayprestashop}prestashop>configuration_a24010ae37280cc18caa55069b6800ed'] = 'Meses sin intereses'; -$_MODULE['<{openpayprestashop}prestashop>configuration_42160631a3479f3ac1101809d80fb600'] = 'Si vas a utilizar meses sin intereses, favor de seleccionar una o más de las siguientes opciones.'; -$_MODULE['<{openpayprestashop}prestashop>configuration_00c275d5b559712c65233b924a43ad57'] = 'Monto mínimo para aceptar meses sin intereses (el monto mínimo deberá ser de al menos $1,800 MXN)'; -$_MODULE['<{openpayprestashop}prestashop>configuration_9f6e99bdd4184b83dc478d0ab1b4cbf7'] = 'Monto mínimo'; -$_MODULE['<{openpayprestashop}prestashop>configuration_7fbbb7f5cf79c09e1baf7f8ba102ea5e'] = 'Tiempo límite para pagos'; -$_MODULE['<{openpayprestashop}prestashop>configuration_cabdc0ab45c5f6043c7f5754d050f59c'] = 'Pago en tiendas de conveniencia (hrs.)'; -$_MODULE['<{openpayprestashop}prestashop>configuration_6a7e73161603d87b26a8eac49dab0a9c'] = 'Horas'; -$_MODULE['<{openpayprestashop}prestashop>configuration_bb081ce7d1e3a3195be6b7415f6d79f6'] = 'Transferencias interbancarias (hrs.)'; -$_MODULE['<{openpayprestashop}prestashop>configuration_518a847ececef440fa45f90f22e4db99'] = 'Diseño de recibos de pago'; -$_MODULE['<{openpayprestashop}prestashop>configuration_eb3965e5e91672bb5e2d1647fb034e23'] = 'Ver recibo de pago'; -$_MODULE['<{openpayprestashop}prestashop>configuration_368d9ac76af05f714092bc808a426bfc'] = 'Color de cintillos y fondos'; -$_MODULE['<{openpayprestashop}prestashop>configuration_c2b5b2ff5b15a5e395b663a796c523f1'] = 'Color en hexadecimal'; -$_MODULE['<{openpayprestashop}prestashop>configuration_ad32ba59a021a0d085e49b3659b49a61'] = 'Color de letra en fondos'; -$_MODULE['<{openpayprestashop}prestashop>configuration_cf565402d32b79d33f626252949a6941'] = 'Guardar configuración'; -$_MODULE['<{openpayprestashop}prestashop>configuration_3dcb31cce5b731f83551121019039fb5'] = 'Números de tarjetas de prueba'; -$_MODULE['<{openpayprestashop}prestashop>configuration_b2ee912b91d69b435159c7c3f6df7f5f'] = 'Número'; -$_MODULE['<{openpayprestashop}prestashop>configuration_5735196b42849ae4fe6adac3ae14c3d1'] = 'Tipo de tarjeta'; $_MODULE['<{openpayprestashop}prestashop>configuration_37543087b1faeaa35c926284e3aec008'] = 'La tarjeta fue rechazada'; $_MODULE['<{openpayprestashop}prestashop>configuration_5c0ede6ae8246a5c3b43b70b5c79bbda'] = 'La tarjeta ha expirado'; $_MODULE['<{openpayprestashop}prestashop>configuration_8ad453b4d52d4cbedf10cfc8287986ea'] = 'La tarjeta no tiene fondos suficientes'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_644818852b4dd8cf9da73543e30f045a'] = 'Volver al pedido'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Checkout'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_261a1140d97b4fe17aabc2433d7c0234'] = 'Pago con Bitcoins'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_fe052c248fb8c2b8cf08c44f17341c3c'] = 'Resumen del pedido'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_879f6b8877752685a966564d072f498f'] = 'Tu carrito esta vacío.'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_1f8bc47749a986674f060548573e2222'] = '¿Qué es Bitcoin?'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_f0d4ae4cdae1702a3767a967de33ad81'] = 'Bitcoin es una innovadora red de pagos y una nueva clase de dinero que usa tecnología peer-to-peer o entre pares para operar sin una autoridad central o bancos. Visita https://bitcoin.org para conocer más.'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_7911589f09fa52d2e02a000bd5e20b5d'] = 'Pasos para tu pago con Bitcoin'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_9d648b3e426d4f4e11d03ae66d5f7bfb'] = 'Haz clic en el botón \"Generar dirección de pago\" al final de la página.'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_72183a47902d6e1701acc683cca4dec7'] = 'Realiza el pago escaneando el código QR o copiando la dirección y el monto a pagar.'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_7ea07df7bd19ff1522bca62752da07ca'] = 'Inmediatamente después de verificar tu pago te enviaremos un correo electrónico de confirmación y tu pedido será procesado.'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Otros métodos de pago'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_execution_9ba1d7701f52d4bfb03aa66efcd54cb0'] = 'Generar dirección de pago'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_waiting_execution_644818852b4dd8cf9da73543e30f045a'] = 'Volver al pedido'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_waiting_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Checkout'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_waiting_execution_261a1140d97b4fe17aabc2433d7c0234'] = 'Pago con Bitcoin'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_waiting_execution_fe052c248fb8c2b8cf08c44f17341c3c'] = 'Resumen del pedido'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_waiting_execution_879f6b8877752685a966564d072f498f'] = 'Tu carrito de compras esta vacío.'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_waiting_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Otras formas de pago'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_644818852b4dd8cf9da73543e30f045a'] = 'Volver al pedido'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Checkout'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_40fed24d2e43a64767663257cfd5f4b1'] = 'Pago con tarjeta de cŕedito/débito'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_7476a34766fad874c594f58c1fa38990'] = 'Pago con tarjeta de cŕedito/débito'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_879f6b8877752685a966564d072f498f'] = 'Tu carrito esta vacío.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_4d3df28e3e68ed692ae51475bbe0860d'] = 'Tarjetas de crédito'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_22dfc2f5b165aa665fd5668c234c658d'] = 'Tarjetas de débito'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_605b9107cc740b18034c761edb6d6fe7'] = 'Estamos registrando tu pago, por favor espera.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_63171e216532becbb0be4a43aa4252fa'] = 'Nombre del títular'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_38bf9127129f60f3f1d66b84554d9026'] = 'Como aparece en la tarjeta'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_7c773fc36d32c0e4a95e9c1a06189bf6'] = 'Número de tarjeta'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_8c1279db4db86553e4b9682f78cf500e'] = 'Fecha de expiración'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_86f5978d9b80124f509bdb71786e929e'] = 'Enero'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_659e59f062c75f81259d22786d6c44aa'] = 'Febrero'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_fa3e5edac607a88d8fd7ecb9d6d67424'] = 'Marzo'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_3fcf026bbfffb63fb24b8de9d0446949'] = 'Abril'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_195fbb57ffe7449796d23466085ce6d8'] = 'Mayo'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_688937ccaf2a2b0c45a1c9bbba09698d'] = 'Junio'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_1b539f6f34e8503c97f6d3421346b63c'] = 'Julio'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_41ba70891fb6f39327d8ccb9b1dafb84'] = 'Agosto'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_cc5d90569e1c8313c2b1c2aab1401174'] = 'Septiembre'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_eca60ae8611369fe28a02e2ab8c5d12e'] = 'Octubre'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_7e823b37564da492ca1629b4732289a8'] = 'Noviembre'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_82331503174acbae012b2004f6431fa5'] = 'Diciembre'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_120cbd645509ead2f2dd3b45c8c02e2b'] = 'Código de seguridad'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_22967d995991ef0854cd8d67a8d2a66c'] = 'MasterCard y VISA presentan este código código de tres dígitos en el dorso de la tarjeta.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_6006530407998958555747fa3830c85d'] = 'American Express presenta este código código de tres dígitos en la parte frontal de la tarjeta.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_a24010ae37280cc18caa55069b6800ed'] = 'Meses sin intereses'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_f9d299b21a010a3778a2f0f5367ed4a7'] = 'Pago de contado'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_76b8de84283c117f8fb6324359613f3f'] = 'Estarás pagando mensualmente'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Otras formas de pago'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_8bd4837a76cf443ab523a51895e23c36'] = 'Realizar pago'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_ba4058004755dfd070308e293b88ab7c'] = 'Servicio no disponible.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_5407fb14ac27008efb5c73ac0682a62a'] = 'Los campos no tienen el formato correcto, o la petición no tiene campos que son requeridos.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_0cab30401594110819762ad39e1db7ac'] = 'La fecha de expiración de la tarjeta es anterior a la fecha actual.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_59d40eec0b3020903d63a898f94e5138'] = 'El código de seguridad de la tarjeta (CVV2) no fue proporcionado.'; -$_MODULE['<{openpayprestashop}prestashop>card_execution_e2e8d0a2b79a779bb06656d2a6f39a00'] = 'La petición no pudo ser procesada.'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_644818852b4dd8cf9da73543e30f045a'] = 'Volver al pedido'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Checkout'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_ec2db44e80b6b82f75b5bd7feabd99ad'] = 'Pago con transferencia electrónica (SPEI)'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_879f6b8877752685a966564d072f498f'] = 'Tu carrito esta vacío.'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_4d6926656b6692e3be0c06365b01bfa6'] = '¿Qué es SPEI?'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_733f8de0563cf82a0fea19bef54eb832'] = 'El SPEI es un sistema de pagos para permitir a los clientes de los bancos enviar y recibir transferencias electrónicas de dinero en cuestión de segundos.'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_3dff66a029e4d64f692abaa4ef8fdf13'] = 'Consulta los bancos soportados'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_91add0841bb079d334f99d1b466f7287'] = 'Pasos para tu pago por transferencia interbancaria'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_5c0a596277c9adc133c1cb929f7fa863'] = 'Haz clic en el botón \"Generar CLABE\", donde tu compra quedará en espera de que realices tu pago.'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_5db6204b70bff5a602a28e2511bef790'] = 'Sigue la guía para realizar el pago SPEI a través del portal de tu banco.'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_05ff84c01f96a1426716e89c5e77a034'] = 'Inmediatamente después de recibir tu pago te enviaremos un correo electrónico con la confirmación de pago.'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Otras formas de pago'; -$_MODULE['<{openpayprestashop}prestashop>spei_execution_820808794fc9aefb807c01979759e127'] = 'Generar CLABE'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_644818852b4dd8cf9da73543e30f045a'] = 'Volver al pedido'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_6ff063fbc860a79759a7369ac32cee22'] = 'Checkout'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_f9d299b21a010a3778a2f0f5367ed4a7'] = 'Pago en efectivo en tiendas de conveniencia'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_879f6b8877752685a966564d072f498f'] = 'Tu carrito esta vacío.'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_f5edbc1eecbd42078b5fff3b7ea4fa1c'] = 'Pasos para tu pago por tienda'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_a03dae70e4f6f09c930061646ab880cd'] = 'Consulta las tiendas afiliadas'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_3b6c59d1738b922dbebeb0c3f8d3e3b1'] = 'Haz clic en el botón \"Generar ficha de pago\", donde tu compra quedará en espera de que realices tu pago.'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_19e5b16fb69a62939bdfb712e1bafb27'] = 'Imprime tu recibo, llévalo a tu tienda de conveniencia más cercana y realiza el pago.'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_05ff84c01f96a1426716e89c5e77a034'] = 'Inmediatamente después de recibir tu pago te enviaremos un correo electrónico con la confirmación de pago.'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_569fd05bdafa1712c4f6be5b153b8418'] = 'Otras formas de pago'; -$_MODULE['<{openpayprestashop}prestashop>store_execution_e518c9c1ff02cc78a6e4fd21038a3585'] = 'Generar recibo de pago'; -$_MODULE['<{openpayprestashop}prestashop>bitcoin_order_confirmation_71459d15dd3e76b787ac44440dca0d7d'] = 'Tu pago esta en proceso de validación, recibirás un correo de confirmación cuando la red de Bitcoin confirme y valide el pago realizado.'; -$_MODULE['<{openpayprestashop}prestashop>card_order_confirmation_4e3e0524d1b71ee75e23b1988f1bbb33'] = 'Felicitaciones , su pago ha sido aprobado, el número de referencia de su pedido es:'; -$_MODULE['<{openpayprestashop}prestashop>card_order_confirmation_fcc0006f4018b8db6cf42091b6ef2c52'] = 'Lamentablemente hemos detectado un problema al procesar tu pedido y necesita ser revisado.'; -$_MODULE['<{openpayprestashop}prestashop>card_order_confirmation_14e7bb4453ff8cac0fc4419a76fed7b2'] = 'No trate de registrar su pedido de nuevo, ya se han recibido los fondos. Vamos a revisar su orden y le proporcionaremos un estatus dentro de poco.'; -$_MODULE['<{openpayprestashop}prestashop>card_order_confirmation_0f97313091eda2c5476bc57d3aa5eddc'] = 'Referecnia de su pedido:'; -$_MODULE['<{openpayprestashop}prestashop>card_order_confirmation_2660c6f77f72f4abbe95192e8bef48d3'] = 'Lo sentimos, pero por desgracia se produjo un error durante la operación.'; -$_MODULE['<{openpayprestashop}prestashop>card_order_confirmation_0d4e007412611fa67ae987261c6ec921'] = 'Por favor, compruebe sus datos de tarjeta de crédito e inténtelo de nuevo o no dude en ponerse en contacto con nosotros para resolver este problema.'; -$_MODULE['<{openpayprestashop}prestashop>payment_40fed24d2e43a64767663257cfd5f4b1'] = 'Pago con tarjeta de crédito/débito'; -$_MODULE['<{openpayprestashop}prestashop>payment_f9d299b21a010a3778a2f0f5367ed4a7'] = 'Pago en efectivo en tiendas de conveniencia'; -$_MODULE['<{openpayprestashop}prestashop>payment_163debc82f49ccfa53705a60f5b8eae9'] = 'Forma de pago no permitida para montos superiores a $10,000'; -$_MODULE['<{openpayprestashop}prestashop>payment_ec2db44e80b6b82f75b5bd7feabd99ad'] = 'Pago con transferencia electrónica (SPEI)'; -$_MODULE['<{openpayprestashop}prestashop>payment_261a1140d97b4fe17aabc2433d7c0234'] = 'Pago con Bitcoins'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_20fd2a4330b68a7173fef1c1f797a0a8'] = 'Esperamos tu pago'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_96b0141273eabab320119c467cdcaf17'] = 'Total a pagar'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_2e79cbc13bbc903d989eab943a2e394f'] = 'Fecha límite de pago'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_c457364dc289b8ac09b1b64369ee8ef1'] = 'Datos para transferencia electrónica'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_eb45bd2725cb8ac50d0795432a918f86'] = 'Banco'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_69aae3cdce9fca74a3bd273e53f75d11'] = 'STP'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_3563c5b5cbe65c2a39a4352d2a8dec7d'] = 'CLABE'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_63d5049791d9d79d86e9a108b0a999ca'] = 'Referencia'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_bc4bee1370166bd48330dd13b2de699c'] = 'Beneficiario'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_88e7e1896d16fe295bcda66b61111ae9'] = '¿Tienes alguna dudas o problema? Llámanos al teléfono'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_e8504f91b5579a42951770a1f78605ef'] = 'O escríbenos a'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_83e0ef0df42d9bea5e884e61d117fb81'] = 'Imprimir recibo'; -$_MODULE['<{openpayprestashop}prestashop>spei_order_confirmation_300225ee958b6350abc51805dab83c24'] = 'Seguir comprando'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_d96d37aa21dee795e3f0f1d88d06fa46'] = 'Servicio a pagar'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_2e79cbc13bbc903d989eab943a2e394f'] = 'Fecha límite de pago'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_a462c77168d189cd6750344b2c2e474f'] = 'n caso de que el escáner no sea capaz de leer el código de barras, escribir la referencia tal como se muestra.'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_96b0141273eabab320119c467cdcaf17'] = 'Total a pagar'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_1e49495e5365df43b715b4e481b88a3d'] = '+8 pesos por comisión'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_5c72cda75cedfffdd5a245afcee0d42c'] = 'Detalles de la compra'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_a240fa27925a635b08dc28c9e4f9216d'] = 'Orden'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_44749712dbec183e983dcd78a7736c41'] = 'Fecha y hora'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_ce8ae9da5b7cd6c3df2929543a9af92d'] = 'Correo electrónico'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_a3aa471e011bdeb7a51c59c41e9bcba2'] = 'Como realizar el pago'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_082963b36faa78b37350ad8091a492c6'] = 'Acude a cualquier tienda afiliada'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_d15f967b6a1ae2bc8b98f1c6825beddf'] = 'Entrega al cajero el código de barras y menciona que realizarás un pago de servicio Paynet'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_5efd9ef5d91f0d548cbb1d59cf2512f8'] = 'Realizar el pago en efectivo por'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_8a1fe91159f23a82ffa6032d83521463'] = '(más $8 pesos por comisión)'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_383ddb1b8ee81e17428bcada9ac73f5a'] = 'Conserva el ticket para cualquier aclaración'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_a1e677ae9e61a7395cbfc43ab3082029'] = 'Si tienes dudas comunícate a'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_83a4c328f4e43c0adaf7222c6bd0c4cd'] = 'al teléfono'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_0cba8d49a8a98ef657bc69a557b2706d'] = 'o al correo'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_46fb94ae03f0f40808e7968dfaa5aa71'] = 'Instrucciones para el cajero'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_779f9d651b4be71860ba8a1972984067'] = 'Ingresar al menú de Pago de Servicios'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_4fb0e87c24973b28e0cb3f55e232eba4'] = 'Seleccionar Paynet'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_107f5a59ad43c8d29fb52b9775e1f2e1'] = 'Escanear el código de barras o ingresar el núm. de referencia'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_679d625ee4056184eefd5a67d9accd32'] = 'Ingresa la cantidad total a pagar'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_c6dc35b9eacae2b78a60f5a6edda5ab8'] = 'Cobrar al cliente el monto total más la comisión de $8 pesos'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_8818cd121b22a68274eb63a549e90196'] = 'Confirmar la transacción y entregar el ticket al cliente'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_822420d2b8d4fd7685987bf9731c01df'] = '¿Quieres pagar en otras tiendas? Visita:'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_334d94d86182ee2c86dcb817458e28e4'] = 'Imprimir recibo'; -$_MODULE['<{openpayprestashop}prestashop>store_order_confirmation_300225ee958b6350abc51805dab83c24'] = 'Seguir comprando'; diff --git a/PS_1.7/openpayprestashop/openpayprestashop.php b/PS_1.7/openpayprestashop/openpayprestashop.php index 583ea4c..3873425 100644 --- a/PS_1.7/openpayprestashop/openpayprestashop.php +++ b/PS_1.7/openpayprestashop/openpayprestashop.php @@ -341,11 +341,57 @@ public function hookHeader($params) { $country = Configuration::get('OPENPAY_COUNTRY'); if (Tools::getValue('module') === 'onepagecheckoutps' || - Tools::getValue('controller') === 'order-opc' || - Tools::getValue('controller') === 'orderopc' || - Tools::getValue('controller') === 'order') { - + Tools::getValue('controller') === 'order-opc' || + Tools::getValue('controller') === 'orderopc' || + Tools::getValue('controller') === 'order' + ) { $this->context->controller->addCSS($this->_path.'views/css/openpay-prestashop.css'); + + $this->context->controller->registerJavascript( + 'openpay-js', + '/modules/'.$this->name.'/views/js/openpay-prestashop.js', + array('position' => 'bottom') + ); + + $total = (Validate::isLoadedObject($this->context->cart)) ? $this->context->cart->getOrderTotal() : 0; + + $country = Configuration::get('OPENPAY_COUNTRY'); + $pk = Configuration::get('OPENPAY_MODE') ? Configuration::get('OPENPAY_PUBLIC_KEY_LIVE') : Configuration::get('OPENPAY_PUBLIC_KEY_TEST'); + $id = Configuration::get('OPENPAY_MODE') ? Configuration::get('OPENPAY_MERCHANT_ID_LIVE') : Configuration::get('OPENPAY_MERCHANT_ID_TEST'); + + $selected_months_interest_free = array(); + if (Configuration::get('OPENPAY_MONTHS_INTEREST_FREE') != null) { + $selected_months_interest_free = explode(',', Configuration::get('OPENPAY_MONTHS_INTEREST_FREE')); + $selected_months_interest_free = array_diff($selected_months_interest_free, array(1)); + } + + $show_months_interest_free = false; + if (count($selected_months_interest_free) > 0 && $country == 'MX') { + $show_months_interest_free = true; + } + + Media::addJsDef(array( $this->name => array( + 'use_card_points' => Configuration::get('USE_CARD_POINTS'), + 'total' => $total, + 'country' => $country, + 'openpay_save_cc_option' => Configuration::get('OPENPAY_SAVE_CC'), + 'pk' => $pk, + 'id' => $id, + 'mode' => Configuration::get('OPENPAY_MODE'), + 'show_months_interest_free' => $show_months_interest_free, + 'months_interest_free' => $selected_months_interest_free, + 'cuotas_pe' => Configuration::get('OPENPAY_CUOTAS_PE'), + 'url_ajax' => Tools::getHttpHost(true).__PS_BASE_URI__.'module/openpayprestashop/typecard', + 'action' => $this->context->link->getModuleLink($this->name, 'validation', array(), Tools::usingSecureMode()), + 'Msg' => array( + 'service_available' => $this->l('Service not available.'), + 'incorrect_format' => $this->l('The fields do not have the correct format, or the request does not have fields are required.'), + 'incorrect_expiration_date' => $this->l('The expiration date has already passed.'), + 'cvv2_required' => $this->l('The CVV2 security code is required.'), + 'unprocessed_request' => $this->l('The request could not be processed.') + ) + ))); + if($country == 'MX'){ $this->context->controller->registerJavascript( 'remote-openpay-js', 'https://openpay.s3.amazonaws.com/openpay.v1.min.js', ['position' => 'bottom', 'server' => 'remote'] @@ -402,8 +448,7 @@ public function hookPaymentOptions($params) { $externalOption->setCallToActionText($this->l('Tarjeta de crédito-débito')) ->setForm($this->generateForm($cart)) ->setModuleName($this->name) - ->setLogo('https://img.openpay.mx/plugins/openpay_logo.svg') - ->setAdditionalInformation($this->context->smarty->fetch('module:openpayprestashop/views/templates/front/payment_infos.tpl')); + ->setLogo('https://img.openpay.mx/plugins/openpay_logo.svg'); return array($externalOption); } @@ -450,9 +495,7 @@ public function hookPaymentReturn($params) protected function generateForm($cart) { $country = Configuration::get('OPENPAY_COUNTRY'); $merchant_classification = Configuration::get('OPENPAY_CLASSIFICATION'); - $pk = Configuration::get('OPENPAY_MODE') ? Configuration::get('OPENPAY_PUBLIC_KEY_LIVE') : Configuration::get('OPENPAY_PUBLIC_KEY_TEST'); - $id = Configuration::get('OPENPAY_MODE') ? Configuration::get('OPENPAY_MERCHANT_ID_LIVE') : Configuration::get('OPENPAY_MERCHANT_ID_TEST'); - + $selected_months_interest_free = array(); if (Configuration::get('OPENPAY_MONTHS_INTEREST_FREE') != null) { $selected_months_interest_free = explode(',', Configuration::get('OPENPAY_MONTHS_INTEREST_FREE')); @@ -480,11 +523,8 @@ protected function generateForm($cart) { $this->context->smarty->assign(array( 'js_dir' => _PS_JS_DIR_, - 'pk' => $pk, - 'id' => $id, 'country' => $country, 'merchant_classification' => $merchant_classification, - 'mode' => Configuration::get('OPENPAY_MODE'), 'nbProducts' => $cart->nbProducts(), 'total' => $cart->getOrderTotal(), 'module_dir' => $this->_path, @@ -494,10 +534,8 @@ protected function generateForm($cart) { 'show_installments' => $show_installments, 'use_card_points' => Configuration::get('USE_CARD_POINTS'), 'can_save_cc' => (Configuration::get('OPENPAY_SAVE_CC') == '1' || Configuration::get('OPENPAY_SAVE_CC') == '2') && (bool)$this->context->customer->isLogged() ? true : false, - 'openpay_save_cc_option' => Configuration::get('OPENPAY_SAVE_CC'), 'cuotas_pe' => Configuration::get('OPENPAY_CUOTAS_PE'), 'cc_options' => $this->getCreditCardList(), - 'url_ajax' => Tools::getHttpHost(true).__PS_BASE_URI__.'module/openpayprestashop/typecard', 'action' => $this->context->link->getModuleLink($this->name, 'validation', array(), Tools::usingSecureMode()), )); @@ -567,17 +605,20 @@ public function processPayment($token = null, $device_session_id = null, $instal } Logger::addLog('(444d) $installments["val"] => '.$installments["val"] , 1); - Logger::addLog('(444d) $installments["withInterest"] => '.$installments["withInterest"] , 1); - + if ($installments["val"] > 1) { $charge_request['payment_plan'] = array('payments' => (int)$installments["val"]); - switch ($installments["withInterest"]){ - case "false": - $charge_request['payment_plan']['payments_type'] = 'WITHOUT_INTEREST'; - break; - case "true": - $charge_request['payment_plan']['payments_type'] = 'WITH_INTEREST'; - break; + + if (isset($installments["withInterest"])) { + Logger::addLog('(444d) $installments["withInterest"] => '.$installments["withInterest"] , 1); + switch ($installments["withInterest"]){ + case "false": + $charge_request['payment_plan']['payments_type'] = 'WITHOUT_INTEREST'; + break; + case "true": + $charge_request['payment_plan']['payments_type'] = 'WITH_INTEREST'; + break; + } } } @@ -731,10 +772,13 @@ public function processPayment($token = null, $device_session_id = null, $instal Logger::addLog($this->l('Openpay - Payment transaction failed').' '.$e->getTraceAsString(), 4, $e->getCode(), 'Cart', (int) $this->context->cart->id, true); } - if(isset($e->getErrorCode)) $this->error($e); + if ($e->getErrorCode()) { + $this->error($e); + } //$this->context->cookie->__set('openpay_error', $e->getMessage()); - - Tools::redirect('index.php?controller=order&step=1'); + + $this->context->controller->errors[] = $this->context->cookie->__get('openpay_error'); + $this->context->controller->redirectWithNotifications('index.php?controller=order&step=1'); } } @@ -1435,12 +1479,16 @@ public function error($e, $backend = false) { case '3012': $msg = $this->l('Se requiere solicitar al banco autorización para realizar este pago.'); break; + case '3204': + $msg = $this->l('The transaction amount is less than the minimum allowed for this promotion.'); + break; default: /* Demás errores 400 */ $msg = $this->l('La petición no pudo ser procesada'); break; } $error = 'ERROR '.$e->getErrorCode().'. '.$msg; + $this->context->cookie->__set('openpay_error', $error); $this->context->cookie->__set('openpay_error_code', $e->getErrorCode()); diff --git a/PS_1.7/openpayprestashop/views/js/openpay-prestashop.js b/PS_1.7/openpayprestashop/views/js/openpay-prestashop.js index 554c776..8b824b0 100644 --- a/PS_1.7/openpayprestashop/views/js/openpay-prestashop.js +++ b/PS_1.7/openpayprestashop/views/js/openpay-prestashop.js @@ -23,25 +23,351 @@ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ +const initOpenPayEvents = () => { + $('#holder_name').on("cut copy paste",function(e) { + e.preventDefault(); + }); + + $("#holder_name").keypress(function(e){ + var keyCode = e.which; + /* + 65-90 - (A-Z) + 97-122 - (a-z) + 8 - (backspace) + 32 - (space) + */ + // Not allow special + if (!((keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122)) && keyCode !== 8 && keyCode !== 32) { + e.preventDefault(); + } + }); + + $('[data-toggle="popover"]').popover({ + trigger: 'hover', + 'placement': 'top' + }); + + $('#card_number').cardNumberInput(); + + var total = openpayprestashop.total; + var months = parseInt($("#interest-free").val()); + var monthly_payment = 0; + monthly_payment = total/months; + var formatted = monthly_payment.toFixed(2); + $("#monthly-payment").text(formatted); + + if (months > 1) { + $("#total-monthly-payment").removeClass('hidden'); + } else { + $("#total-monthly-payment").addClass('hidden'); + } -$(document).ready(function() { + $("#interest-free").change(function() { + monthly_payment = 0; + months = parseInt($(this).val()); - $( ".openpay-payment-form" ).on( "submit", function( event ) { - event.stopPropagation(); - console.log($(this).attr('id')) - }); + if (months > 1) { + $("#total-monthly-payment").removeClass('hidden'); + } else { + $("#total-monthly-payment").addClass('hidden'); + } - $( ".openpay-payment-form" ).on( "submit", function( event ) { - event.preventDefault(); - console.log($(this).attr('id')) + monthly_payment = total/months; + monthly_payment = monthly_payment.toFixed(2); + + $("#monthly-payment").text(monthly_payment); }); + + $(document).on("change", "#openpay_cc", function() { + if ($('#openpay_cc').val() !== "new") { + $('#save_cc').prop('checked', false); + $('#save_cc').prop('disabled', true); + + $('#openpay-holder-name').val(""); + $('#openpay-card-number').val(""); + $('#openpay-card-expiry').val(""); + $('#openpay-card-cvc').val(""); + + if(openpayprestashop.openpay_save_cc_option != '2') { + $('#payment_form_openpay_cards .row div:not(.wrapper_cvv2)').hide(); + } else { + $('#payment_form_openpay_cards').hide(); + } + } else { + $('#payment_form_openpay_cards .row div:not(.wrapper_cvv2)').show(); + $('#payment_form_openpay_cards').show(); + $('#save_cc').prop('disabled', false); + } + }); + + var openpay_public_key = openpayprestashop.pk; + var openpay_merchant_id = openpayprestashop.id; + var mode = openpayprestashop.mode; - if($('#openpay-payment-form').length) { - console.log($('#openpay-payment-form')); + OpenPay.setId(openpay_merchant_id); + OpenPay.setApiKey(openpay_public_key); + //OpenPay.setDevelopMode(true); + + if(mode == "0"){ + OpenPay.setSandboxMode(true); } - $('#openpay-payment-form').submit(function(event) { - console.log("SUBMIT"); + $("#payment-confirmation > .ps-shown-by-js > button").click(function(event) { + var myPaymentMethodSelected = $(".payment-options").find("input[data-module-name='openpayprestashop']").is(":checked"); + if (myPaymentMethodSelected){ + event.preventDefault(); + var cvc = $('#cvv2').val(); + + //antifraudes + OpenPay.deviceData.setup("openpay-payment-form", "device_session_id"); + + $(this).prop('disabled', true); /* Disable the submit button to prevent repeated clicks */ + $('.openpay-payment-errors').hide(); + $('#openpay-ajax-loader').show(); + $('#openpay-payment-form').hide(); + + if ($('#openpay_cc').val() !== 'new') { + if(openpayprestashop.openpay_save_cc_option != '2'){ + if(cvc == ""){ + $('#alert-cvv-error').text("El cvv2 es requerido"); + $('#cvv2').addClass('checkout-input-error'); + $("#payment-confirmation > .ps-shown-by-js > button").prop('disabled', false); + $('#openpay-payment-form').show(); + $('#openpay-ajax-loader').hide(); + event.preventDefault(); + return false; + } else if(cvc.length < 3){ + $('#alert-cvv-error').text("El cvv2 debe contener por lo menos 3 dígitos"); + $('#cvv2').addClass('checkout-input-error'); + $("#payment-confirmation > .ps-shown-by-js > button").prop('disabled', false); + $('#openpay-payment-form').show(); + $('#openpay-ajax-loader').hide(); + event.preventDefault(); + return false; + } else if(!cvc.match(/^[0-9]+$/)){ + $('#alert-cvv-error').text("El cvv2 solo debe contener dígitos"); + $('#cvv2').addClass('checkout-input-error'); + $("#payment-confirmation > .ps-shown-by-js > button").prop('disabled', false); + $('#openpay-payment-form').show(); + $('#openpay-ajax-loader').hide(); + event.preventDefault(); + return false; + } + } + $('#openpay-payment-form').append(''); + $('#openpay-payment-form').append('') + $('#openpay-payment-form').get(0).submit(); + return false; + } + + var holder_name = $('#holder_name').val(); + if(holder_name == ""){ + $('.openpay-payment-errors').fadeIn(1000); + $('.openpay-payment-errors').text('ERROR El nombre del titular es requerido').fadeIn(1000); + $("#payment-confirmation > .ps-shown-by-js > button").prop('disabled', false); + $('#openpay-payment-form').show(); + $('#openpay-ajax-loader').hide(); + event.preventDefault(); + return false; + } + + return openpayFormHandler(); + } }); -}); \ No newline at end of file + var card_old; + $('body').on("keyup", "#card_number", function() { + let card = jQuery(this).val() + let country = openpayprestashop.country; + let show_months_interest_free = (openpayprestashop.show_months_interest_free == '1'); + let show_installments_pe = (openpayprestashop.cuotas_pe == '1'); + let card_without_space = card.replace(/\s+/g, '') + let lng = country == 'PE' ? 6 : 8; + + if (card_without_space.length == lng) { + if(country == "MX" && !show_months_interest_free || (country == 'PE' && !show_installments_pe)) { + return; + } + var card_bin = card_without_space.substring(0, lng); + + if(card_bin != card_old) { + getTypeCard(card_bin, country); + card_old = card_bin; + } + + } + }) +} + +function getTypeCard(cardBin, country) { + $.ajax({ + type : "post", + url : openpayprestashop.url_ajax, + data : { + card_bin : cardBin + }, + error: function(response){ + console.log(response); + }, + beforeSend: function () { + jQuery("#card-container").addClass("opacity"); + jQuery(".ajax-loader").addClass("is-active"); + }, + success: function(response) { + let data = JSON.parse(response); + if(data.status == 'success'){ + if (data.card_type == 'CREDIT') { + if (country == 'MX'){ + jQuery("#interest-free").closest(".row").show(); + }else { + jQuery('#installment').closest(".row").show(); + } + } + else if(data.installments && data.installments.length > 0 && 1 == openpayprestashop.cuotas_pe) { + jQuery('#openpay_installments_pe').closest(".row").show(); + jQuery('#openpay_installments_pe').empty(); + + jQuery('#openpay_installments_pe').append(jQuery('