en Jump to content
  • 0
edduu

[Mod template] Calculador de cuotas MercadoPago

Question

Buenas, este es mi primer post,

 

abri mi tienda prestashop hace poco, y la verdad es que vender por ML o sitios similares es mucho mas fácil que convertir en tu propia tienda online. Obvio el principal motivo que vi era el tema tráfico, pero en ML generalmente convierto cada 60-70 visitas y en mi web con 300-400 apenas consigo convertir y sólo a veces.

 

una de las ventajas de las tiendas grandes que venden por fuera de ML mas allá de las confianza y marca que ya son reconocidas es la posibilidad de ver las cuotas

 

el modulo free de mercadopago sirve, pero no te muestra las cuotas antes de comprar o no hay un simulador.

 

el Mod es simple. 

 

en la carpeta JS de nuestro prestashop creamos el archivo ajax.js con esto:

 

 

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
var xmlHttp;
var respuesta;
var ejecutor;
var xmlHttp2;
var respuesta2;
var ejecutor2;
var xmlHttp3;
var respuesta3;
var ejecutor3;
var xmlHttp4;
var respuesta4;
var ejecutor4;
var xmlHttp5;
var respuesta5;
var ejecutor5;
var xmlHttp6;
var respuesta6;
var ejecutor6;
var xmlHttp7;
var respuesta7;
var ejecutor7;
var xmlHttp8;
var respuesta8;
var ejecutor8;
var xmlHttp9;
var respuesta9;
var ejecutor9;
var xmlHttp10;
var respuesta10;
var ejecutor10;
var xmlHttp11;
var respuesta11;
var ejecutor11;
var xmlHttp12;
var respuesta12;
var ejecutor12;
var xmlHttp13;
var respuesta13;
var ejecutor13;
var xmlHttp14;
var respuesta14;
var ejecutor14;


/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest1() {
if (window.ActiveXObject) {
xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp2 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest3() {
if (window.ActiveXObject) {
xmlHttp3 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp3 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest4() {
if (window.ActiveXObject) {
xmlHttp4 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp4 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest5() {
if (window.ActiveXObject) {
xmlHttp5 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp5 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest6() {
if (window.ActiveXObject) {
xmlHttp6 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp6 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest7() {
if (window.ActiveXObject) {
xmlHttp7 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp7 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest8() {
if (window.ActiveXObject) {
xmlHttp8 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp8 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest9() {
if (window.ActiveXObject) {
xmlHttp9 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp9 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest10() {
if (window.ActiveXObject) {
xmlHttp10 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp10 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest11() {
if (window.ActiveXObject) {
xmlHttp11 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp11 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest12() {
if (window.ActiveXObject) {
xmlHttp12 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp12 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest13() {
if (window.ActiveXObject) {
xmlHttp13 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp13 = new XMLHttpRequest();
}
}

/* FUNCION QUE CREA UN OBJETO XMLHttpRequest() */
function crearXMLHttpRequest14() {
if (window.ActiveXObject) {
xmlHttp14 = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp14 = new XMLHttpRequest();
}
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest();

ejecutor = unEjecutor;
xmlHttp.open(metodo, url, esAsincrono);
xmlHttp.onreadystatechange = manejadorEstados;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(null);

}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send1(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest1();
ejecutor2 = unEjecutor;
xmlHttp2.open(metodo, url, esAsincrono);
xmlHttp2.onreadystatechange = manejadorEstados1;
xmlHttp2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp2.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send3(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest3();
ejecutor3 = unEjecutor;
xmlHttp3.open(metodo, url, esAsincrono);
xmlHttp3.onreadystatechange = manejadorEstados3;
xmlHttp3.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp3.send(null);
}


/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send4(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest4();
ejecutor4 = unEjecutor;
xmlHttp4.open(metodo, url, esAsincrono);
xmlHttp4.onreadystatechange = manejadorEstados4;
xmlHttp4.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp4.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send5(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest5();
ejecutor5 = unEjecutor;
xmlHttp5.open(metodo, url, esAsincrono);
xmlHttp5.onreadystatechange = manejadorEstados5;
xmlHttp5.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp5.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send6(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest6();
ejecutor6 = unEjecutor;
xmlHttp6.open(metodo, url, esAsincrono);
xmlHttp6.onreadystatechange = manejadorEstados6;
xmlHttp6.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp6.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send7(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest7();
ejecutor7 = unEjecutor;
xmlHttp7.open(metodo, url, esAsincrono);
xmlHttp7.onreadystatechange = manejadorEstados7;
xmlHttp7.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp7.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send8(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest8();
ejecutor8 = unEjecutor;
xmlHttp8.open(metodo, url, esAsincrono);
xmlHttp8.onreadystatechange = manejadorEstados8;
xmlHttp8.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp8.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send9(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest9();
ejecutor9 = unEjecutor;
xmlHttp9.open(metodo, url, esAsincrono);
xmlHttp9.onreadystatechange = manejadorEstados9;
xmlHttp9.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp9.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send10(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest10();
ejecutor10 = unEjecutor;
xmlHttp10.open(metodo, url, esAsincrono);
xmlHttp10.onreadystatechange = manejadorEstados10;
xmlHttp10.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp10.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send11(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest11();
ejecutor11 = unEjecutor;
xmlHttp11.open(metodo, url, esAsincrono);
xmlHttp11.onreadystatechange = manejadorEstados11;
xmlHttp11.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp11.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send12(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest12();
ejecutor12 = unEjecutor;
xmlHttp12.open(metodo, url, esAsincrono);
xmlHttp12.onreadystatechange = manejadorEstados12;
xmlHttp12.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp12.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send13(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest13();
ejecutor13 = unEjecutor;
xmlHttp13.open(metodo, url, esAsincrono);
xmlHttp13.onreadystatechange = manejadorEstados13;
xmlHttp13.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp13.send(null);
}

/* FUNCION QUE ENVIA UNA PETICION A UN SERVLET INGRESADO POR PARAMETRO */
function send14(url,metodo,esAsincrono,unEjecutor) {
crearXMLHttpRequest14();
ejecutor14 = unEjecutor;
xmlHttp14.open(metodo, url, esAsincrono);
xmlHttp14.onreadystatechange = manejadorEstados14;
xmlHttp14.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp14.send(null);
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
obtenerResultados();
eval(ejecutor);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados1() {
if(xmlHttp2.readyState == 4) {
if(xmlHttp2.status == 200) {
obtenerResultados1();
eval(ejecutor2);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados3() {
if(xmlHttp3.readyState == 4) {
if(xmlHttp3.status == 200) {
obtenerResultados3();
eval(ejecutor3);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados4() {
if(xmlHttp4.readyState == 4) {
if(xmlHttp4.status == 200) {
obtenerResultados4();
eval(ejecutor4);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados5() {
if(xmlHttp5.readyState == 4) {
if(xmlHttp5.status == 200) {
obtenerResultados5();
eval(ejecutor5);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados6() {
if(xmlHttp6.readyState == 4) {
if(xmlHttp6.status == 200) {
obtenerResultados6();
eval(ejecutor6);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados7() {
if(xmlHttp7.readyState == 4) {
if(xmlHttp7.status == 200) {
obtenerResultados7();
eval(ejecutor7);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados8() {
if(xmlHttp8.readyState == 4) {
if(xmlHttp8.status == 200) {
obtenerResultados8();
eval(ejecutor8);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados9() {
if(xmlHttp9.readyState == 4) {
if(xmlHttp9.status == 200) {
obtenerResultados9();
eval(ejecutor9);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados10() {
if(xmlHttp10.readyState == 4) {
if(xmlHttp10.status == 200) {
obtenerResultados10();
eval(ejecutor10);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados11() {
if(xmlHttp11.readyState == 4) {
if(xmlHttp11.status == 200) {
obtenerResultados11();
eval(ejecutor11);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados12() {
if(xmlHttp12.readyState == 4) {
if(xmlHttp12.status == 200) {
obtenerResultados12();
eval(ejecutor12);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados13() {
if(xmlHttp13.readyState == 4) {
if(xmlHttp13.status == 200) {
obtenerResultados13();
eval(ejecutor13);
}
}
}

/* FUNCION QUE MANEJA LOS CAMBIOS DE ESTADOS DEL OBJETO XMLHttpRequest Y LLAMA AL EJECUTOR */
function manejadorEstados14() {
if(xmlHttp14.readyState == 4) {
if(xmlHttp14.status == 200) {
obtenerResultados14();
eval(ejecutor14);
}
}
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados() {
respuesta = xmlHttp.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados1() {
respuesta2 = xmlHttp2.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados3() {
respuesta3 = xmlHttp3.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados4() {
respuesta4 = xmlHttp4.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados5() {
respuesta5 = xmlHttp5.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados6() {
respuesta6 = xmlHttp6.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados7() {
respuesta7 = xmlHttp7.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados8() {
respuesta8 = xmlHttp8.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados9() {
respuesta9 = xmlHttp9.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados10() {
respuesta10 = xmlHttp10.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados11() {
respuesta11 = xmlHttp11.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados12() {
respuesta12 = xmlHttp12.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados13() {
respuesta13 = xmlHttp13.responseText;
}

/* FUNCION QUE OBTIENE LA RESPUESTA DEL SERVIDOR Y LA ALMACENA COMO EN LA VARIABLE GLOBAL RESPUESTA */
function obtenerResultados14() {
respuesta14 = xmlHttp14.responseText;
}
 

 

luego, crear en el directorio raiz de prestashop un archivo txt llamado servlet.txt con esto: 

 

 

[{"tarjeta":"visa","banco":"1"}]

 

esto pueden editar a gusto es la opcion por defecto que va a cargar cuando cargue la pagina en este caso es tarjeta visa otros bancos.

 

 

ahora vamos a la parte estética. editar el product.tpl de tu tema en /themes/NOMBREDETUTEMA

 

luego de

{assign var='productPriceWithoutReduction' value=$product->getPriceWithoutReduct(true, $smarty.const.NULL, $priceDisplayPrecision)}
{/if}

agregar esto:

{literal}
        <script type="text/javascript" src="../js/ajax.js"></script>
        <script type="text/javascript">
            var precioObtenido;
            var tarjetaAlmacenada = "";
            var bancoAlmacenado = "";            
rateAlmacenado = new Array();
 
//var rateAlmacenado;
 
            function getParameter(parameter){
                var url = location.href;
                var index = url.indexOf("?");
                index = url.indexOf(parameter,index) + parameter.length;
                if (url.charAt(index) == "="){
                    var result = url.indexOf("&",index);
                    if (result == -1){result=url.length};
                    return url.substring(index + 1,result);
                }
            }
            
            function obtenerSeleccionCombo(idCombo){
                var indice = document.getElementById(idCombo).selectedIndex;
                var resultado = document.getElementById(idCombo).options[indice].value;
                return resultado;
            }
            
            function obtenerClaveCombo(idCombo){
                var indice = document.getElementById(idCombo).selectedIndex;
                var resultado = document.getElementById(idCombo).options[indice].text;
                return resultado;
            }
            
            function limpiarComboBancos(){
                document.getElementById('banco').innerHTML = '<select id="banco" onchange="obtenerCuotas();" style="width: 200px;"></select>';
            }
            
            function limpiarComboCuotas(){
                document.getElementById('cuotas').innerHTML = ' <select id="cuotas" onchange="calcular();" style="width: 200px;"></select>';
            }
         
            function obtenerFormasPago(){
                var parametros = {};
                $.ajax({
                    data:  parametros,
                    url:   'https://api.mercadopago.com/sites/MLA/payment_methods/',
                    type:  'get',
                    dataType: "json",
                    beforeSend: function () {
                        //$("#resultado").html("Procesando, espere por favor...");
                    },
                    success:  function (response) {
                        ejecutorObtenerFormasPago(response);
                    }
                });
            }
 
            function ejecutorObtenerFormasPago(respuesta){
                var arregloTextos = respuesta;
                var tamanio = arregloTextos.length;                    
                var i = 0;
var k = 0;
                var rowTarjetas = document.createElement("tr");
                while(i<tamanio)
                {                    
                    if(arregloTextos[i].payment_type_id == 'credit_card'){
                        var id = arregloTextos[i].id;
//if(id!='naranja'){
var tarjeta = arregloTextos[i].name;
                         var imagen = arregloTextos[i].thumbnail;                    
                         var cell = createCellWithImagen(imagen);
                         rowTarjetas.appendChild(cell);
                         document.getElementById("forma").options[k] = new Option(tarjeta,id);
k++;
//}
                    }
                    i++;
                }
                //document.getElementById("tarjetas").appendChild(rowTarjetas);
                seleccionar(tarjetaAlmacenada,'forma');
                obtenerBancos();
            }
            
            function createCellWithImagen(urlImagen) {
                var cell = document.createElement("td");
                var textNode = document.createElement("img");
                textNode.src = urlImagen;
                cell.align = 'center';
cell.width = '32';
                cell.appendChild(textNode);
                return cell;
            }
            
            function obtenerBancos(){
                limpiarComboBancos();
                var id = obtenerSeleccionCombo('forma');
                var parametros = {};
                $.ajax({
                    data:  parametros,
                    url:   'https://api.mercadopago.com/sites/MLA/payment_methods/'+id,
                    type:  'get',
                    dataType: "json",
                    beforeSend: function () {
                        //$("#resultado").html("Procesando, espere por favor...");
                    },
                    success:  function (response) {
                        ejecutorObtenerBancos(response);
                    }
                });
            }
            
            function ejecutorObtenerBancos(respuesta){                
                var arregloTextos = respuesta;//JSON.parse(respuesta);
                if(arregloTextos.payment_type_id == 'credit_card'){
                    var banco = arregloTextos.card_issuer.name;
                    var id = arregloTextos.card_issuer.id;
   if(id==1 || id==3 || id==2 || id==1007 || id==5 || id==288 || id==692 || id==688 || id==4){
                        banco = 'Otros Bancos'; 
                    }
 
                    document.getElementById("banco").options[0] = new Option(banco,id);
                    var excepciones = arregloTextos.exceptions_by_card_issuer;
                
                    var tamanio = excepciones.length;                    
                    var i = 0;
                    var k = 1;
   while(i<tamanio)
                    {
                        var banco = excepciones[i].card_issuer.name;
                        var id = excepciones[i].card_issuer.id;
                        document.getElementById("banco").options[k] = new Option(banco,id);
                        i++;
k++;
                    }
                    seleccionar(bancoAlmacenado,'banco');
                    obtenerCuotas();
                }else{
                    document.getElementById('selectorBanco').style.display = 'none';
                    obtenerCuotasOtros();
                }
                
            }
            
             function obtenerCuotas(){
                limpiarComboCuotas();
                var id = obtenerSeleccionCombo('forma');
                var banco = obtenerSeleccionCombo('banco');
                var parametros = {};
                $.ajax({
                    data:  parametros,
                    url:   'https://api.mercadopago.com/sites/MLA/payment_methods/'+id,
                    type:  'get',
                    dataType: "json",
                    beforeSend: function () {
                        //$("#resultado").html("Procesando, espere por favor...");
                    },
                    success:  function (response) {
                        ejecutorObtenerCuotas(banco,response);
                    }
                });
                
            }
            
            function ejecutorObtenerCuotas(idBanco,respuesta){                
                var arregloTextos = respuesta;//JSON.parse(respuesta);
                var x = 0;
                var bancoObtenido = arregloTextos.card_issuer.id;
                if(bancoObtenido == idBanco){
                    var opcionesPago = arregloTextos.payer_costs;
                    var tamanioOpciones = opcionesPago.length;
                    var k = 0;
                    while(k<tamanioOpciones){
                        var cuotas = opcionesPago[k].installments;
                        var rate = opcionesPago[k].installment_rate;
rateAlmacenado[cuotas] = rate;
monto = calcular(cuotas);
if (rate==0) {
if (cuotas==1) 
option = new Option(""+ cuotas + " cuota sin interes de $"+monto+"",cuotas);
else 
option = new Option(""+ cuotas + " cuotas sin interes de $"+monto+"",cuotas);
 
option.style = "font-weight: bold; color: #32CD32";
document.getElementById("cuotas").options[x] = option;
}
else {
document.getElementById("cuotas").options[x] = new Option(cuotas + " cuotas de $"+monto,cuotas);
}
                        x++;
                        k++;
                    }
                }
                
                var excepciones = arregloTextos.exceptions_by_card_issuer;
                var tamanio = excepciones.length;                    
                var i = 0;
                while(i<tamanio)
                {
                    var bancoObtenido = excepciones[i].card_issuer.id;
                    if(bancoObtenido == idBanco){
                        var opcionesPago = excepciones[i].payer_costs;
                        var tamanioOpciones = opcionesPago.length;
                        var k = 0;
                        while(k<tamanioOpciones){
                            var cuotas = opcionesPago[k].installments;
                            var rate = opcionesPago[k].installment_rate;
rateAlmacenado[cuotas] = rate;
monto = calcular(cuotas);
if (rate==0) {
if (cuotas==1) 
option = new Option(""+ cuotas + " cuota sin interes de $"+monto+"",cuotas);
else 
option = new Option(""+ cuotas + " cuotas sin interes de $"+monto+"",cuotas);
 
option.style = "font-weight: bold; color: #32CD32";
document.getElementById("cuotas").options[x] = option;
}
else {
document.getElementById("cuotas").options[x] = new Option(cuotas + " cuotas de $"+monto,cuotas);
}
                            x++;
                            k++;
                        }
                    }
                    i++;
                }
                obtenerPrecioProducto();
            }
                       
            function obtenerPrecioProducto(){
                precioObtenido = getParameter('id');
                calcular();
                guardarSeleccion();
            }
            
            function ejecutorObtenerPrecioProducto(){
                var arregloTextos = JSON.parse(respuesta3);
                precioObtenido = arregloTextos[0].precio;
                calcular();
            }
            
            function calcular(cuotas){
//return 1;
precioObtenido = productPrice;
                //var ind = document.getElementById('cuotas').selectedIndex;
//var cantCuotas = document.getElementById('cuotas').options[ind].value;
var cantCuotas = cuotas;
var rate = rateAlmacenado[cuotas];
                var montoFinal = 0; 
                if(rate>0){
                    montoFinal = parseFloat(precioObtenido) + (parseFloat(rate) * parseFloat(precioObtenido)) / 100;
                }else{
                    montoFinal = parseFloat(rate) + parseFloat(precioObtenido);
                }
                //var cantCuotas = obtenerClaveCombo('cuotas');
                var valorCuota = montoFinal / parseInt(cantCuotas);
                //document.getElementById('cuota').innerHTML = '$' + valorCuota.toFixed(2);
                //document.getElementById('montofinal').innerHTML = '$' + montoFinal.toFixed(2);
return valorCuota.toFixed(2);
            }
 
 
 
 
            function obtenerSeleccionPrevia(){
                var url1 = "../servlet.txt";
                var metodo1 = "GET";
                var esAsincrono1 = "true";
                var unEjecutor1 = "ejecutorObtenerSeleccionPrevia()";
                send7(url1,metodo1,esAsincrono1,unEjecutor1);
            }
            
            function ejecutorObtenerSeleccionPrevia(){
                var arregloTextos = JSON.parse(respuesta7);
                tarjetaAlmacenada = arregloTextos[0].tarjeta;
                bancoAlmacenado = arregloTextos[0].banco;
                obtenerFormasPago();
            }
            
            function seleccionar(id,combo){
                var tamanio = document.getElementById(combo).length;
                var i = 0;
                var encontrado = false;
                while(!encontrado && i<tamanio){
                    var valor = document.getElementById(combo).options[i].value;
                    if(valor==id){
                        encontrado = true;
                        document.getElementById(combo).selectedIndex = i;
                    }
                    i++;
                }
            }
            
            function guardarSeleccion(){
                var idTarjeta = obtenerSeleccionCombo('forma');
                var idBanco = obtenerSeleccionCombo('banco');
                var url1 = "servlets/ServletProductos.php?accion=guardarSeleccion&idTarjeta="+idTarjeta+"&idBanco="+idBanco;
                var metodo1 = "GET";
                var esAsincrono1 = "true";
                var unEjecutor1 = "ejecutorGuardarSeleccion()";
                send7(url1,metodo1,esAsincrono1,unEjecutor1);
            }
            
            function ejecutorGuardarSeleccion(){
            }
            
            function obtenerResolucion(){
                if(screen.width<1400){
   precioObtenido = getParameter('id');
                    location.href = "formaspago1.php?id="+precioObtenido;
                }
            }
                        
            function inicializar(){
                //obtenerResolucion();
                obtenerSeleccionPrevia();
            }
 
$( window ).load(function() {
// Run code
obtenerSeleccionPrevia();
});
           
        </script>
{/literal}

luego mas abajo, buscar

 

<!-- end product_attributes -->

y agregar

 

<div><p><label class="attribute_label">Calculador de Cuotas </label></p><br/><br/>
<select name="forma" class="editable" id="forma" style="width: 30%; color: #848484" onChange="obtenerBancos();"></select>
<select name="banco" class="editable" id="banco" style="width: 40%; color: #848484" onChange="obtenerCuotas();"></select><br/><br/>
<select id="cuotas" class="editable" name="cuotas" style="width: 80%; color: #848484"></select><br/><br/>

 

esto obviamente pueden ponerlo en donde ustedes más quieran. modificar el color, etc etc. es a gusto. yo de css y html no cazo mucho. 

 

 

 

si hicieron todo bien aca pueden verlo en funcionamiento: http://tecnooutlet.net/samsung/1-samsung-galaxy-s6.html

 

había un mod pago, pero para mi no valía la pena xq no levanta en tiempo real la info de mercadopago con sus promociones

 

el mod original en el que me basé fue el codigo de esta web: http://compulider.com.ar/formaspago/formaspago.php?id=20999

 

pero era un Iframe, eso no es bueno para apps móviles, además mostraba las cuotas y además el precio total que uno paga con los intereses, eso por ahí genera un impacto visual negativo nadie muestra eso. tampoco mostraba si cada cuota era con o sin interés.

 

 

espero que les sirva. 

 

 

 

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

Primero que nada se agradece el aporte, estaria bueno si es posible que una vez que seleccionaste la tarjeta y la cantidad de cuotas se mantenga y no que se deba seleccionar el banco y las cuotas cada vez que ingresas a un articulo nuevo.. Es posible eso ??? que se guarde la ultima seleccion como preferencia o algo asi.. ???

Share this post


Link to post
Share on other sites
  • 0

hay un error en la parte de var url1 = "servlets/ServletProductos.php?accion=guardarSeleccion&idTarjeta="+idTarjeta+"&idBanco="+idBanco;

me da un error not Found

busca lapagina.com/lacategoría/servlets/ServletProductos.php?accion=guardarSeleccion&idTarjeta=visa&idBanco=1 Failed to load resource: the server responded with a status of 404 (Not Found)

 

eso sale en la consola, supongo que es para que quede guardado el banco elegido

Share this post


Link to post
Share on other sites
  • 0

Hola amigos buenas noches.

Ami no me funciono...

Algunas dudas:

 

el archivo ajax.js va en la primer carpeta JS que esta en el directorio? o va en la JS que esta dentro de mi theme?

 

aguardo comentarios. Muchas gracias.

mi sitio es www.todobicis.com.ar

Share this post


Link to post
Share on other sites
  • 0

Hola, excelente, gracias! puedes verlo en www.owonet.com.ar , ahora tengo que encontrarle la vuelta al CSS que no es lo mio :-)

 

Saludos, muy buen aporte-

Jose, estoy tratando de hacer esto mismo y veo que a vos te quedo muy bueno. Usaste esto mismo que esta posteado o tenes algun modulo personalizado. aguardo tus comentarios. Saludos

Share this post


Link to post
Share on other sites
  • 0

Hola amigos buenas noches.

Ami no me funciono...

Algunas dudas:

 

el archivo ajax.js va en la primer carpeta JS que esta en el directorio? o va en la JS que esta dentro de mi theme?

 

aguardo comentarios. Muchas gracias.

mi sitio es www.todobicis.com.ar

yo lo instalé bien, pero el archivo js que subió no me sirvió, yo lo saqué del sitio web original que citó él, y ahí si funcionó. No recuerdo donde coloqué el archivo pero creo que es en el theme, si no es ahí será en el otro. Al final lo terminé sacando porque no eran grandes valores que se utiliza en mi sitio y tardaba mucho en cargar.

Share this post


Link to post
Share on other sites
  • 0

yo lo instalé bien, pero el archivo js que subió no me sirvió, yo lo saqué del sitio web original que citó él, y ahí si funcionó. No recuerdo donde coloqué el archivo pero creo que es en el theme, si no es ahí será en el otro. Al final lo terminé sacando porque no eran grandes valores que se utiliza en mi sitio y tardaba mucho en cargar.

Hola Sebadixon.... saque el js de la pagina que el cita http://compulider.com.ar/formaspago/js/ajax.js

lo reemplace por el que esta en el post, lo copie en las dos carpetas JS, en la del directorio js que esta en la raiz y tambien en la que esta dentro del theme.... y nada... no anduvo.

 

los otros paso tambien los hice

agregue el txt en la raiz y modifique el product.tpl

 

que me estara faltando???

aguardo comentarios.

gracias!!

Share this post


Link to post
Share on other sites
  • 0

Hola Sebadixon.... saque el js de la pagina que el cita http://compulider.com.ar/formaspago/js/ajax.js

lo reemplace por el que esta en el post, lo copie en las dos carpetas JS, en la del directorio js que esta en la raiz y tambien en la que esta dentro del theme.... y nada... no anduvo.

 

los otros paso tambien los hice

agregue el txt en la raiz y modifique el product.tpl

 

que me estara faltando???

aguardo comentarios.

gracias!!

La verdad que no se :/ no puedo ayudarte.

Share this post


Link to post
Share on other sites
  • 0

Hola Sebadixon.... saque el js de la pagina que el cita http://compulider.com.ar/formaspago/js/ajax.js

lo reemplace por el que esta en el post, lo copie en las dos carpetas JS, en la del directorio js que esta en la raiz y tambien en la que esta dentro del theme.... y nada... no anduvo.

 

los otros paso tambien los hice

agregue el txt en la raiz y modifique el product.tpl

 

que me estara faltando???

aguardo comentarios.

gracias!!

 

Hola pablo, lo que veo que tenes este error, pero no veo nada mal en la implementacion del mismo

XMLHttpRequest cannot load https://api.mercadopago.com/sites/MLA/payment_methods/. The 'Access-Control-Allow-Origin' header has a value 'https://ridelsy.com' that is not equal to the supplied origin. Origin 'http://www.todobicis.com.ar' is therefore not allowed access.

 

 

Te hago una consulta, el feature que tenes en tu pagina de Consultar costo de Envío. Sólo para envíos por MercadoEnvíos.

Es un modulo o lo sacaste de algún lado?, si es gratis, lo podrías compartir?

 

Saludos

Share this post


Link to post
Share on other sites
  • 0

Jose, estoy tratando de hacer esto mismo y veo que a vos te quedo muy bueno. Usaste esto mismo que esta posteado o tenes algun modulo personalizado. aguardo tus comentarios. Saludos

 hola pablocabrera78, veo en tu web que esta funcionando!! podrias ayudarme si no es mucho problema? no logro que ande 

Share this post


Link to post
Share on other sites
  • 0

Buenas!!! Sabes que lo pude hacer andar para Uruguay, pero mi tienda esta en dolares, el template hace la consulta, pero me devuelve los resultados de las cuotas tomando la cifra de dolares y aplicándola a pesos, no hace la transferencia dolares a pesos, alguna ayuda para eso?
Gracias por el template!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More