{"id":404,"date":"2026-10-12T00:00:56","date_gmt":"2026-10-12T00:00:56","guid":{"rendered":"https:\/\/posdonpedro.com\/negociosnubeIA\/menu-qr-gratis-para-restaurantes-con-pedidos-por-whatsapp\/"},"modified":"2026-10-12T00:01:02","modified_gmt":"2026-10-12T00:01:02","slug":"menu-qr-gratis-restaurantes","status":"publish","type":"page","link":"https:\/\/posdonpedro.com\/negociosnubeIA\/menu-qr-gratis-restaurantes\/","title":{"rendered":"Men\u00fa QR gratis para restaurantes con pedidos por WhatsApp"},"content":{"rendered":"\n<style>\n.dpm{max-width:820px;margin:0 auto 3rem;color:#1e293b;font-family:inherit}\n.dpm *{box-sizing:border-box}\n.dpm-hero{background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 100%);color:#cbd5e1;border-radius:1.25rem;padding:2rem 1.75rem;text-align:center;margin-bottom:1.5rem}\n.dpm-hero p{margin:0;font-size:1.05rem;line-height:1.6}\n.dpm-hero strong{color:#4ade80}\n.dpm-steps{display:flex;gap:.5rem;justify-content:center;flex-wrap:wrap;margin-top:1rem}\n.dpm-steps span{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);border-radius:999px;padding:.35rem .9rem;font-size:.85rem;color:#e2e8f0}\n.dpm-card{background:#fff;border:1px solid #e2e8f0;border-radius:1.25rem;box-shadow:0 4px 24px rgba(0,0,0,.06);padding:1.5rem;margin-bottom:1.5rem}\n.dpm-card h2{font-size:1.15rem;margin:0 0 1rem;color:#0f172a}\n.dpm-row{display:flex;gap:.75rem;flex-wrap:wrap}\n.dpm-f{flex:1;min-width:200px;margin-bottom:1rem}\n.dpm-f label{display:block;font-weight:700;font-size:.85rem;color:#0f172a;margin-bottom:.35rem}\n.dpm-f small{display:block;color:#64748b;font-size:.78rem;margin-top:.25rem}\n.dpm input,.dpm textarea{width:100%;padding:.65rem .8rem;border:2px solid #e2e8f0;border-radius:.65rem;font-size:1rem;color:#0f172a;background:#fff;font-family:inherit}\n.dpm input:focus,.dpm textarea:focus{outline:none;border-color:#2563eb}\n.dpm-cat{border:2px solid #e2e8f0;border-radius:1rem;padding:1rem;margin-bottom:1rem;background:#f8fafc}\n.dpm-cat-head{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem}\n.dpm-cat-head input{font-weight:700;background:#fff}\n.dpm-item{display:grid;grid-template-columns:1fr 130px 40px;gap:.4rem;margin-bottom:.5rem;padding-bottom:.5rem;border-bottom:1px dashed #e2e8f0}\n.dpm-item .dpm-desc{grid-column:1 \/ 3;font-size:.88rem;padding:.45rem .7rem}\n.dpm-x{border:none;background:#fee2e2;color:#b91c1c;border-radius:.6rem;cursor:pointer;font-weight:700;font-size:1rem;min-height:40px}\n.dpm-add{border:2px dashed #94a3b8;background:transparent;color:#334155;border-radius:.65rem;padding:.55rem 1rem;cursor:pointer;font-weight:600;font-size:.9rem}\n.dpm-add:hover{border-color:#2563eb;color:#2563eb}\n.dpm-tools{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}\n.dpm-btn{border:none;border-radius:.75rem;padding:.75rem 1.1rem;font-weight:700;cursor:pointer;font-size:.92rem;font-family:inherit}\n.dpm-btn-dark{background:#0f172a;color:#4ade80}\n.dpm-btn-light{background:#e2e8f0;color:#0f172a}\n.dpm-btn-wa{background:#25d366;color:#fff}\n.dpm-btn-big{width:100%;font-size:1.1rem;padding:1rem;background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;box-shadow:0 6px 18px rgba(34,197,94,.35)}\n.dpm-btn[disabled]{opacity:.6;cursor:wait}\n.dpm-meter{font-size:.85rem;padding:.6rem .9rem;border-radius:.65rem;margin:.25rem 0 1rem;background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}\n.dpm-meter.dpm-warn{background:#fffbeb;color:#92400e;border-color:#fde68a}\n.dpm-meter.dpm-bad{background:#fef2f2;color:#991b1b;border-color:#fecaca}\n.dpm-legal{font-size:.78rem;color:#64748b;margin:.6rem 0 0;line-height:1.5}\n.dpm-err{display:none;background:#fef2f2;color:#991b1b;border:1px solid #fecaca;padding:.7rem .9rem;border-radius:.65rem;font-size:.9rem;margin-bottom:.75rem}\n.dpm-res{display:none;text-align:center}\n.dpm-res.dpm-show{display:block}\n.dpm-qr{background:#fff;padding:1rem;border:2px solid #e2e8f0;border-radius:1rem;display:inline-block;margin:.5rem 0 1rem}\n.dpm-qr img{width:260px;height:260px;image-rendering:pixelated;display:block}\n.dpm-res-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.5rem;margin-top:.5rem}\n.dpm-link{word-break:break-all;font-size:.75rem;color:#64748b;background:#f8fafc;border-radius:.5rem;padding:.5rem;margin-top:.75rem;max-height:4.5rem;overflow:auto}\n.dpm-cta{background:linear-gradient(135deg,#0f172a 0%,#1e3a5f 100%);border-radius:1.25rem;padding:1.75rem;color:#cbd5e1;text-align:center;margin:1.5rem 0}\n.dpm-cta h3{color:#4ade80;margin:0 0 .5rem;font-size:1.2rem}\n.dpm-cta p{margin:0 0 1rem;font-size:.95rem}\n.dpm-cta a{display:inline-block;background:#25d366;color:#fff;padding:.8rem 1.6rem;border-radius:.75rem;text-decoration:none;font-weight:700;margin:.25rem}\n.dpm-cta a.dpm-alt{background:transparent;border:2px solid #4ade80;color:#4ade80}\n.dpm-print{display:none}\n@media(max-width:560px){.dpm-item{grid-template-columns:1fr 100px 40px}.dpm-card{padding:1.1rem}}\n@media print{\n  body *{visibility:hidden!important}\n  .dpm-print,.dpm-print *{visibility:visible!important}\n  .dpm-print{display:block!important;position:absolute;left:0;top:0;width:100%}\n  .dpm-pc{width:9cm;margin:1cm auto;border:2px solid #0f172a;border-radius:12px;padding:.8cm .6cm;text-align:center;font-family:Arial,sans-serif;page-break-inside:avoid}\n  .dpm-pc h4{font-size:20pt;margin:0 0 .2cm;color:#0f172a}\n  .dpm-pc p{font-size:11pt;margin:0 0 .3cm;color:#334155}\n  .dpm-pc img{width:6.5cm;height:6.5cm;image-rendering:pixelated}\n  .dpm-pc small{display:block;font-size:7pt;color:#64748b;margin-top:.2cm}\n}\n<\/style>\n\n\n\n<div class=\"dpm\">\n\n  <div class=\"dpm-hero\">\n    <p>Arma la carta de tu restaurante, imprime el <strong>c\u00f3digo QR para las mesas<\/strong> y recibe los <strong>pedidos directo en tu WhatsApp<\/strong>. Gratis, sin app, sin comisiones y sin crear cuenta.<\/p>\n    <div class=\"dpm-steps\"><span>1 \u00b7 Escribe tu men\u00fa<\/span><span>2 \u00b7 Genera el QR<\/span><span>3 \u00b7 Impr\u00edmelo y recibe pedidos<\/span><\/div>\n  <\/div>\n\n  <div class=\"dpm-card\">\n    <h2>Datos del negocio<\/h2>\n    <div class=\"dpm-row\">\n      <div class=\"dpm-f\">\n        <label for=\"dpm-name\">Nombre del restaurante<\/label>\n        <input id=\"dpm-name\" maxlength=\"40\" placeholder=\"Ej: Perros Don Pacho\">\n      <\/div>\n      <div class=\"dpm-f\">\n        <label for=\"dpm-wa\">WhatsApp donde recibes los pedidos<\/label>\n        <input id=\"dpm-wa\" type=\"tel\" inputmode=\"numeric\" maxlength=\"16\" placeholder=\"Ej: 3001234567\">\n        <small>Celular colombiano de 10 d\u00edgitos. Ah\u00ed te llegan los pedidos.<\/small>\n      <\/div>\n    <\/div>\n    <div class=\"dpm-f\">\n      <label for=\"dpm-note\">Nota corta (opcional)<\/label>\n      <input id=\"dpm-note\" maxlength=\"90\" placeholder=\"Ej: Lun a s\u00e1b 12 m a 10 p. m. \u00b7 Domicilios en Itag\u00fc\u00ed\">\n    <\/div>\n  <\/div>\n\n  <div class=\"dpm-card\">\n    <h2>Tu men\u00fa<\/h2>\n    <div class=\"dpm-tools\">\n      <button type=\"button\" class=\"dpm-btn dpm-btn-light\" id=\"dpm-example\">Cargar un ejemplo<\/button>\n      <button type=\"button\" class=\"dpm-btn dpm-btn-light\" id=\"dpm-clear\">Empezar en blanco<\/button>\n    <\/div>\n    <div id=\"dpm-cats\"><\/div>\n    <button type=\"button\" class=\"dpm-add\" id=\"dpm-addcat\">+ Agregar categor\u00eda<\/button>\n  <\/div>\n\n  <div class=\"dpm-card\">\n    <div class=\"dpm-meter\" id=\"dpm-meter\">Agrega tus platos para ver el tama\u00f1o del QR.<\/div>\n    <div class=\"dpm-err\" id=\"dpm-err\"><\/div>\n    <button type=\"button\" class=\"dpm-btn dpm-btn-big\" id=\"dpm-go\">Generar mi QR gratis<\/button>\n    <p class=\"dpm-legal\">Al generar el QR, el nombre del negocio y el WhatsApp quedan registrados en el CRM de DonPedro Software para ofrecerte soporte y novedades. Si no quieres que te escribamos, av\u00edsanos por WhatsApp al +57 310 598 0444 y borramos tus datos. Tu men\u00fa no se guarda en ning\u00fan servidor: queda dentro del c\u00f3digo QR.<\/p>\n\n    <div class=\"dpm-res\" id=\"dpm-res\">\n      <h2 style=\"margin-top:1.5rem;\">\u00a1Listo! Este es el QR de tu men\u00fa<\/h2>\n      <div class=\"dpm-qr\"><img id=\"dpm-qrimg\" alt=\"C\u00f3digo QR del men\u00fa\"><\/div>\n      <div class=\"dpm-res-actions\">\n        <button type=\"button\" class=\"dpm-btn dpm-btn-dark\" id=\"dpm-dl\">Descargar QR (PNG)<\/button>\n        <button type=\"button\" class=\"dpm-btn dpm-btn-dark\" id=\"dpm-print\">Imprimir cartel para mesas<\/button>\n        <a class=\"dpm-btn dpm-btn-light\" id=\"dpm-open\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration:none;display:flex;align-items:center;justify-content:center;\">Ver mi men\u00fa<\/a>\n        <button type=\"button\" class=\"dpm-btn dpm-btn-light\" id=\"dpm-copy\">Copiar enlace<\/button>\n        <button type=\"button\" class=\"dpm-btn dpm-btn-wa\" id=\"dpm-share\">Compartir por WhatsApp<\/button>\n      <\/div>\n      <div class=\"dpm-link\" id=\"dpm-link\"><\/div>\n      <p class=\"dpm-legal\">\u00bfCambiaron los precios? Vuelve a esta p\u00e1gina desde el mismo celular o computador: tu men\u00fa queda guardado aqu\u00ed. Ed\u00edtalo y genera un QR nuevo.<\/p>\n    <\/div>\n  <\/div>\n\n  <div class=\"dpm-print\" id=\"dpm-printarea\"><\/div>\n\n  <div class=\"dpm-cta\">\n    <h3>\u00bfQuieres que esos pedidos entren directo a la caja?<\/h3>\n    <p>Con DonPedro POS el pedido pasa a cocina, se cobra y sale con factura electr\u00f3nica DIAN en el mismo sistema. Desde $90.000 al mes, sin cl\u00e1usula de permanencia.<\/p>\n    <a href=\"https:\/\/wa.me\/573105980444?text=Hola%2C%20hice%20mi%20men%C3%BA%20QR%20gratis%20y%20quiero%20saber%20de%20DonPedro%20POS\" target=\"_blank\" rel=\"noopener\">Hablar por WhatsApp<\/a>\n    <a class=\"dpm-alt\" href=\"\/negociosnubeIA\/punto-de-venta-pos\/\">Ver DonPedro POS<\/a>\n  <\/div>\n\n  <h2>C\u00f3mo funciona el men\u00fa QR gratis<\/h2>\n  <p>Escribes las categor\u00edas y los platos con su precio, y la herramienta convierte tu carta en un enlace y un <strong>c\u00f3digo QR<\/strong>. El cliente lo escanea en la mesa, ve el men\u00fa en su celular, elige lo que quiere y toca <em>Enviar pedido<\/em>: el pedido te llega por WhatsApp con las cantidades y el total ya sumados.<\/p>\n  <p>No hay plataforma en medio. No pagas comisi\u00f3n por pedido, no le pides al cliente que instale nada y no tienes que crear usuario ni contrase\u00f1a.<\/p>\n\n  <h2>Consejos para que el QR funcione en las mesas<\/h2>\n  <ul>\n    <li><strong>Impr\u00edmelo de m\u00ednimo 6 cm de lado.<\/strong> Si tu men\u00fa es largo, el QR tiene m\u00e1s puntos y necesita m\u00e1s tama\u00f1o. El medidor de arriba te avisa.<\/li>\n    <li><strong>Descripciones cortas.<\/strong> \u00abSalchicha americana, queso, papa ripio\u00bb basta. Entre menos texto, m\u00e1s f\u00e1cil se lee el QR.<\/li>\n    <li><strong>Prueba antes de imprimir.<\/strong> Escan\u00e9alo con dos celulares distintos y haz un pedido de prueba a tu propio WhatsApp.<\/li>\n    <li><strong>Si cambias precios, genera un QR nuevo.<\/strong> El men\u00fa vive dentro del QR, as\u00ed que los carteles viejos muestran los precios viejos.<\/li>\n  <\/ul>\n\n  <h2>Preguntas frecuentes<\/h2>\n  <h3>\u00bfEl men\u00fa QR es gratis de verdad?<\/h3>\n  <p>S\u00ed. No tiene l\u00edmite de tiempo, no cobra comisi\u00f3n por pedido y no pide tarjeta. Lo hacemos porque muchos de nuestros clientes de DonPedro POS empezaron as\u00ed.<\/p>\n  <h3>\u00bfD\u00f3nde se guarda mi men\u00fa?<\/h3>\n  <p>En ning\u00fan servidor. El men\u00fa completo va comprimido dentro del enlace del QR, y una copia queda en el navegador donde lo creaste para que puedas editarlo despu\u00e9s.<\/p>\n  <h3>\u00bfC\u00f3mo me llegan los pedidos?<\/h3>\n  <p>El cliente arma su pedido en el men\u00fa y, al enviarlo, se abre su WhatsApp con un mensaje listo para tu n\u00famero: platos, cantidades, total y el nombre o la mesa que escriba.<\/p>\n  <h3>\u00bfPuedo cambiar los precios despu\u00e9s?<\/h3>\n  <p>S\u00ed. Entra a esta p\u00e1gina desde el mismo dispositivo, cambia lo que necesites y genera un QR nuevo. Tambi\u00e9n puedes abrir tu men\u00fa y tocar <em>Editar este men\u00fa<\/em>.<\/p>\n  <h3>\u00bfSirve para domicilios?<\/h3>\n  <p>S\u00ed. Comparte el enlace en tus estados de WhatsApp, en Instagram o en Google Maps. El cliente pide igual que en la mesa y escribe su direcci\u00f3n en el campo de nombre o mesa.<\/p>\n\n<\/div>\n\n<script>\n(function(){\n  var BASE='https:\/\/posdonpedro.com\/negociosnubeIA\/carta\/';\n  var KEY='dpMenuQR';\n  var QRLIB='https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/qrcode-generator\/1.4.4\/qrcode.min.js';\n  var EXAMPLE={v:1,n:'Perros Don Pacho',w:'',t:'Lun a s\u00e1b 5 p. m. a 11 p. m. \u00b7 Domicilios',c:[\n    ['Perros calientes',[['Perro sencillo','Salchicha americana, queso y papa ripio',12000],['Perro especial','Doble salchicha, tocineta y huevo de codorniz',18000],['Perro hawaiano','Pi\u00f1a calada, jam\u00f3n y queso',16000]]],\n    ['Hamburguesas',[['Hamburguesa cl\u00e1sica','Carne 150 g, queso, lechuga y tomate',17000],['Hamburguesa doble','Doble carne y doble queso',24000]]],\n    ['Bebidas',[['Gaseosa 400 ml','',4000],['Jugo natural en agua','Mora, lulo o maracuy\u00e1',6000],['Limonada de coco','',8000]]]\n  ]};\n  var state=null, lastUrl='', qrData='', leadSent=false;\n\n  function $(id){return document.getElementById(id);}\n  function blank(){return {v:1,n:'',w:'',t:'',c:[['Platos',[['','',0]]]]};}\n  function save(){try{localStorage.setItem(KEY,JSON.stringify(state));}catch(e){}}\n  function load(){try{var s=localStorage.getItem(KEY);if(s)return JSON.parse(s);}catch(e){}return null;}\n\n  function b64u(b){var s='';for(var i=0;i<b.length;i++)s+=String.fromCharCode(b[i]);return btoa(s).replace(\/\\+\/g,'-').replace(\/\\\/\/g,'_').replace(\/=+$\/,'');}\n  function unb64u(t){t=t.replace(\/-\/g,'+').replace(\/_\/g,'\/');while(t.length%4)t+='=';var s=atob(t),b=new Uint8Array(s.length);for(var i=0;i<s.length;i++)b[i]=s.charCodeAt(i);return b;}\n  function pack(o){\n    var bytes=new TextEncoder().encode(JSON.stringify(o));\n    if(!window.CompressionStream)return Promise.resolve('j'+b64u(bytes));\n    var st=new Blob([bytes]).stream().pipeThrough(new CompressionStream('deflate-raw'));\n    return new Response(st).arrayBuffer().then(function(ab){return 'z'+b64u(new Uint8Array(ab));});\n  }\n  function unpack(t){\n    var kind=t.charAt(0),b=unb64u(t.slice(1));\n    if(kind==='j')return Promise.resolve(JSON.parse(new TextDecoder().decode(b)));\n    var st=new Blob([b]).stream().pipeThrough(new DecompressionStream('deflate-raw'));\n    return new Response(st).arrayBuffer().then(function(ab){return JSON.parse(new TextDecoder().decode(ab));});\n  }\n\n  function normWa(v){\n    var d=String(v||'').replace(\/\\D\/g,'');\n    if(d.length===10)if(d.charAt(0)==='3')d='57'+d;\n    return d;\n  }\n  function clean(){\n    var o={v:1,n:state.n.trim(),w:normWa(state.w),t:state.t.trim(),c:[]};\n    state.c.forEach(function(cat){\n      var items=cat[1].filter(function(it){return it[2]>0?it[0].trim()!=='':false;}).map(function(it){\n        var nm=it[0].trim(),ds=it[1].trim(),pr=Math.round(it[2]);return ds?[nm,ds,pr]:[nm,pr];\n      });\n      if(items.length)o.c.push([cat[0].trim()||'Men\u00fa',items]);\n    });\n    return o;\n  }\n\n  function el(tag,attrs){var e=document.createElement(tag);for(var k in attrs){if(k==='text')e.textContent=attrs[k];else e.setAttribute(k,attrs[k]);}return e;}\n\n  function render(){\n    $('dpm-name').value=state.n;$('dpm-wa').value=state.w;$('dpm-note').value=state.t;\n    var box=$('dpm-cats');box.innerHTML='';\n    state.c.forEach(function(cat,ci){\n      var c=el('div',{'class':'dpm-cat'});\n      var head=el('div',{'class':'dpm-cat-head'});\n      var cn=el('input',{maxlength:'30',placeholder:'Nombre de la categor\u00eda (ej: Entradas)','aria-label':'Categor\u00eda'});cn.value=cat[0];\n      cn.addEventListener('input',function(){cat[0]=cn.value;changed();});\n      var cx=el('button',{type:'button','class':'dpm-x',title:'Quitar categor\u00eda','aria-label':'Quitar categor\u00eda',text:'\u00d7'});\n      cx.style.minWidth='40px';\n      cx.addEventListener('click',function(){if(state.c.length>1||confirm('\u00bfQuitar esta categor\u00eda?')){state.c.splice(ci,1);if(!state.c.length)state.c=blank().c;render();changed();}});\n      head.appendChild(cn);head.appendChild(cx);c.appendChild(head);\n      cat[1].forEach(function(it,ii){\n        var row=el('div',{'class':'dpm-item'});\n        var n=el('input',{maxlength:'40',placeholder:'Plato','aria-label':'Nombre del plato'});n.value=it[0];\n        var p=el('input',{type:'number',min:'0',step:'100',inputmode:'numeric',placeholder:'Precio','aria-label':'Precio en pesos'});p.value=it[2]||'';\n        var x=el('button',{type:'button','class':'dpm-x',title:'Quitar plato','aria-label':'Quitar plato',text:'\u00d7'});\n        var d=el('input',{'class':'dpm-desc',maxlength:'60',placeholder:'Descripci\u00f3n corta (opcional)','aria-label':'Descripci\u00f3n'});d.value=it[1]||'';\n        n.addEventListener('input',function(){it[0]=n.value;changed();});\n        p.addEventListener('input',function(){it[2]=parseFloat(p.value)||0;changed();});\n        d.addEventListener('input',function(){it[1]=d.value;changed();});\n        x.addEventListener('click',function(){cat[1].splice(ii,1);if(!cat[1].length)cat[1].push(['','',0]);render();changed();});\n        row.appendChild(n);row.appendChild(p);row.appendChild(x);row.appendChild(d);c.appendChild(row);\n      });\n      var add=el('button',{type:'button','class':'dpm-add',text:'+ Agregar plato'});\n      add.addEventListener('click',function(){cat[1].push(['','',0]);render();changed();});\n      c.appendChild(add);box.appendChild(c);\n    });\n  }\n\n  var timer=null;\n  function changed(){save();$('dpm-res').classList.remove('dpm-show');clearTimeout(timer);timer=setTimeout(measure,250);}\n  function measure(){\n    var o=clean(),m=$('dpm-meter');\n    var count=o.c.reduce(function(a,c){return a+c[1].length;},0);\n    if(!count){m.className='dpm-meter';m.textContent='Agrega tus platos para ver el tama\u00f1o del QR.';return;}\n    pack(o).then(function(p){\n      var len=(BASE+'#'+p).length;\n      if(len<=700){m.className='dpm-meter';m.textContent='\u2713 '+count+' platos \u00b7 QR liviano: se lee f\u00e1cil incluso peque\u00f1o (5 cm).';}\n      else if(len<=1300){m.className='dpm-meter';m.textContent='\u2713 '+count+' platos \u00b7 QR mediano: impr\u00edmelo de m\u00ednimo 7 cm.';}\n      else if(len<=2300){m.className='dpm-meter dpm-warn';m.textContent='\u26a0 '+count+' platos \u00b7 QR denso: impr\u00edmelo de 10 cm o acorta las descripciones.';}\n      else{m.className='dpm-meter dpm-bad';m.textContent='\u2715 Men\u00fa demasiado largo para un solo QR. Quita descripciones o divide la carta en dos (por ejemplo, comidas y bebidas).';}\n    });\n  }\n\n  function showErr(t){var e=$('dpm-err');e.textContent=t;e.style.display=t?'block':'none';}\n\n  function loadLib(){\n    if(window.qrcode)return Promise.resolve();\n    return new Promise(function(ok,fail){var s=document.createElement('script');s.src=QRLIB;s.onload=ok;s.onerror=fail;document.head.appendChild(s);});\n  }\n  function qrPng(text,px){\n    var qr=window.qrcode(0,'M');qr.addData(text,'Byte');qr.make();\n    var n=qr.getModuleCount(),q=4,cell=Math.max(4,Math.floor(px\/(n+q*2))),size=(n+q*2)*cell;\n    var cv=document.createElement('canvas');cv.width=cv.height=size;var g=cv.getContext('2d');\n    g.fillStyle='#fff';g.fillRect(0,0,size,size);g.fillStyle='#000';\n    for(var r=0;r<n;r++)for(var c=0;c<n;c++)if(qr.isDark(r,c))g.fillRect((c+q)*cell,(r+q)*cell,cell,cell);\n    return cv.toDataURL('image\/png');\n  }\n\n  function sendLead(o){\n    if(leadSent)return;\n    var tag=o.n+'|'+o.w;\n    try{if(localStorage.getItem(KEY+'Lead')===tag){leadSent=true;return;}}catch(e){}\n    var platos=o.c.reduce(function(a,c){return a+c[1].length;},0);\n    fetch('\/negociosnubeIA\/crm-proxy.php',{method:'POST',headers:{'Content-Type':'application\/json'},\n      body:JSON.stringify({name:o.n,phone:o.w,email:'',type:'Herramienta gratis: Men\u00fa QR ('+platos+' platos)',website:''})})\n      .then(function(r){return r.json();}).then(function(d){if(d?d.ok:false){leadSent=true;try{localStorage.setItem(KEY+'Lead',tag);}catch(e){}}})\n      .catch(function(){});\n  }\n\n  function generate(){\n    showErr('');\n    var o=clean();\n    if(!o.n){showErr('Escribe el nombre del restaurante.');$('dpm-name').focus();return;}\n    if(!(\/^573\\d{9}$\/.test(o.w)||\/^\\d{11,15}$\/.test(o.w))){showErr('Escribe un WhatsApp v\u00e1lido: celular de 10 d\u00edgitos que empiece por 3.');$('dpm-wa').focus();return;}\n    if(!o.c.length){showErr('Agrega al menos un plato con nombre y precio.');return;}\n    var btn=$('dpm-go');btn.disabled=true;btn.textContent='Generando\u2026';\n    pack(o).then(function(p){\n      var url=BASE+'#'+p;\n      if(url.length>2300){throw new Error('largo');}\n      lastUrl=url;\n      return loadLib().then(function(){qrData=qrPng(url,1200);});\n    }).then(function(){\n      $('dpm-qrimg').src=qrData;\n      $('dpm-open').href=lastUrl;\n      $('dpm-link').textContent=lastUrl;\n      var pa=$('dpm-printarea');pa.innerHTML='';\n      for(var i=0;i<2;i++){\n        var card=el('div',{'class':'dpm-pc'});\n        card.appendChild(el('h4',{text:o.n}));\n        card.appendChild(el('p',{text:'Escanea, mira el men\u00fa y pide por WhatsApp'}));\n        card.appendChild(el('img',{src:qrData,alt:'QR'}));\n        card.appendChild(el('small',{text:'Men\u00fa digital gratis por posdonpedro.com'}));\n        pa.appendChild(card);\n      }\n      $('dpm-res').classList.add('dpm-show');\n      $('dpm-res').scrollIntoView({behavior:'smooth',block:'start'});\n      sendLead(o);\n    }).catch(function(e){\n      showErr((e?e.message:'')==='largo'?'El men\u00fa es demasiado largo para un QR. Acorta las descripciones o divide la carta.':'No pudimos generar el QR. Revisa tu conexi\u00f3n e int\u00e9ntalo de nuevo.');\n    }).then(function(){btn.disabled=false;btn.textContent='Generar mi QR gratis';});\n  }\n\n  function init(){\n    $('dpm-name').addEventListener('input',function(){state.n=this.value;changed();});\n    $('dpm-wa').addEventListener('input',function(){state.w=this.value;changed();});\n    $('dpm-note').addEventListener('input',function(){state.t=this.value;changed();});\n    $('dpm-addcat').addEventListener('click',function(){state.c.push(['',[['','',0]]]);render();changed();});\n    $('dpm-example').addEventListener('click',function(){var keep={n:state.n,w:state.w};state=JSON.parse(JSON.stringify(EXAMPLE));if(keep.w)state.w=keep.w;if(keep.n)state.n=keep.n;state.c.forEach(function(c){c[1].forEach(function(it){if(it.length<3)it.splice(1,0,'');});});render();changed();});\n    $('dpm-clear').addEventListener('click',function(){if(confirm('\u00bfBorrar el men\u00fa y empezar en blanco?')){state=blank();render();changed();}});\n    $('dpm-go').addEventListener('click',generate);\n    $('dpm-dl').addEventListener('click',function(){var a=document.createElement('a');a.href=qrData;a.download='menu-qr-'+(state.n||'restaurante').toLowerCase().replace(\/[^a-z0-9]+\/g,'-')+'.png';document.body.appendChild(a);a.click();a.remove();});\n    $('dpm-print').addEventListener('click',function(){window.print();});\n    $('dpm-copy').addEventListener('click',function(){var b=this;if(navigator.clipboard)navigator.clipboard.writeText(lastUrl).then(function(){b.textContent='\u2713 Copiado';setTimeout(function(){b.textContent='Copiar enlace';},2000);});});\n    $('dpm-share').addEventListener('click',function(){window.open('https:\/\/wa.me\/?text='+encodeURIComponent('Mira nuestro men\u00fa y pide por WhatsApp: '+lastUrl),'_blank');});\n\n    var h=location.hash.slice(1);\n    var start=\/^[zj][A-Za-z0-9_-]+$\/.test(h||'')?unpack(h).then(function(o){\n      return {v:1,n:o.n||'',w:o.w||'',t:o.t||'',c:(o.c||[]).map(function(c){return [c[0],c[1].map(function(it){return [it[0],it.length>2?it[1]:'',it.length>2?it[2]:it[1]];})];})};\n    }).catch(function(){return null;}):Promise.resolve(null);\n    start.then(function(fromLink){\n      state=fromLink||load()||blank();\n      if(!state.c||!state.c.length)state.c=blank().c;\n      render();measure();\n      if(fromLink)save();\n    });\n  }\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init);else init();\n})();\n<\/script>\n\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@graph\":[\n{\"@type\":\"WebApplication\",\"name\":\"Men\u00fa QR gratis para restaurantes\",\"url\":\"https:\/\/posdonpedro.com\/negociosnubeIA\/menu-qr-gratis-restaurantes\/\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"inLanguage\":\"es-CO\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"COP\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"DonPedro Software\",\"url\":\"https:\/\/posdonpedro.com\/negociosnubeIA\/\"}},\n{\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"\u00bfEl men\u00fa QR es gratis de verdad?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed. No tiene l\u00edmite de tiempo, no cobra comisi\u00f3n por pedido y no pide tarjeta.\"}},\n{\"@type\":\"Question\",\"name\":\"\u00bfD\u00f3nde se guarda mi men\u00fa?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"En ning\u00fan servidor. El men\u00fa completo va comprimido dentro del enlace del QR, y una copia queda en el navegador donde lo creaste para que puedas editarlo despu\u00e9s.\"}},\n{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo me llegan los pedidos?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"El cliente arma su pedido en el men\u00fa y, al enviarlo, se abre su WhatsApp con un mensaje listo para tu n\u00famero: platos, cantidades, total y el nombre o la mesa que escriba.\"}},\n{\"@type\":\"Question\",\"name\":\"\u00bfPuedo cambiar los precios despu\u00e9s?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed. Entra a la p\u00e1gina desde el mismo dispositivo, cambia lo que necesites y genera un QR nuevo. Tambi\u00e9n puedes abrir tu men\u00fa y tocar Editar este men\u00fa.\"}},\n{\"@type\":\"Question\",\"name\":\"\u00bfSirve para domicilios?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed. Comparte el enlace en tus estados de WhatsApp, en Instagram o en Google Maps. El cliente pide igual que en la mesa y escribe su direcci\u00f3n.\"}}\n]}]}\n<\/script>","protected":false},"excerpt":{"rendered":"<p>Arma la carta de tu restaurante, imprime el c\u00f3digo QR para las mesas y recibe los pedidos directo en tu WhatsApp. Gratis, sin app, sin comisiones y sin crear cuenta. 1 \u00b7 Escribe tu men\u00fa2 \u00b7 Genera el QR3 \u00b7 Impr\u00edmelo y recibe pedidos Datos del negocio Nombre del restaurante WhatsApp donde recibes los pedidos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-404","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/pages\/404","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/comments?post=404"}],"version-history":[{"count":1,"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/pages\/404\/revisions"}],"predecessor-version":[{"id":405,"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/pages\/404\/revisions\/405"}],"wp:attachment":[{"href":"https:\/\/posdonpedro.com\/negociosnubeIA\/wp-json\/wp\/v2\/media?parent=404"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}