{"id":1954,"date":"2025-05-16T02:27:50","date_gmt":"2025-05-16T08:27:50","guid":{"rendered":"https:\/\/cshec.xoc.uam.mx\/sdpc\/?page_id=1954"},"modified":"2025-05-16T02:27:50","modified_gmt":"2025-05-16T08:27:50","slug":"envio-para-validacion-de-identidad","status":"publish","type":"page","link":"https:\/\/cshec.xoc.uam.mx\/sdpc\/envio-para-validacion-de-identidad\/","title":{"rendered":"Env\u00edo para Validaci\u00f3n de Identidad"},"content":{"rendered":"\n<div class=\"message-box relative\" style=\"padding-top:15px;padding-bottom:15px;\"><div class=\"message-box-bg-image bg-fill fill\" ><\/div><div class=\"message-box-bg-overlay bg-fill fill\" style=\"background-color:rgb(255, 255, 255);\"><\/div><div class=\"container relative\"><div class=\"inner last-reset\">\n\n<div class=\"row align-middle align-center\"  id=\"row-1808158222\">\n\n\n\t<div id=\"col-1629950065\" class=\"col medium-3 small-12 large-3\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div class=\"img has-hover x md-x lg-x y md-y lg-y\" id=\"image_1775971309\">\n\t\t\t\t\t\t\t\t<div class=\"img-inner image-cover dark\" style=\"padding-top:28%;\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"157\" src=\"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-content\/uploads\/2022\/05\/logo_educ_2022-e1653943669451.jpeg\" class=\"attachment-original size-original\" alt=\"\" \/>\t\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n<style>\n#image_1775971309 {\n  width: 100%;\n}\n<\/style>\n\t<\/div>\n\t\n\n\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n\n\t<div id=\"col-1271318679\" class=\"col medium-6 small-12 large-6\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div id=\"text-224785901\" class=\"text\">\n\t\t\n\n<h1 style=\"text-transform: uppercase;\">Validaci\u00f3n de identidad para\u00a0 la Capacitaci\u00f3n Profesional de Carrera<\/h1>\n\t\t\n<style>\n#text-224785901 {\n  line-height: 1.95;\n}\n<\/style>\n\t<\/div>\n\t\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-1271318679 > .col-inner {\n  padding: 0px 0px 0px 0px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n\t<div id=\"col-1329533491\" class=\"col medium-2 small-12 large-2\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div class=\"img has-hover x md-x lg-x y md-y lg-y\" id=\"image_167403572\">\n\t\t\t\t\t\t\t\t<div class=\"img-inner dark\" >\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"638\" height=\"241\" src=\"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-content\/uploads\/2021\/06\/186551752_544978736493961_261708449087042936_n.png\" class=\"attachment-large size-large\" alt=\"\" \/>\t\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n<style>\n#image_167403572 {\n  width: 100%;\n}\n<\/style>\n\t<\/div>\n\t\n\n\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n\n<\/div>\n\n<\/div><\/div><\/div>\n<div class=\"row align-middle align-center\"  id=\"row-100860676\">\n\n\n\t<div id=\"col-1369237669\" class=\"col medium-7 small-12 large-7\"  >\n\t\t\t\t<div class=\"col-inner text-center box-shadow-2\" style=\"background-color:rgba(148, 215, 255, 0.169);\" >\n\t\t\t\n\t\t\t\n\n<p><span style=\"font-size: 110%;\">Para iniciar tu proceso de verificaci\u00f3n de identidad reg\u00edstrese previamente con nuestro equipo del Centro de Atenci\u00f3n Telefonica y as\u00ed podr\u00e1 continuar con su proceso de asignaci\u00f3n a una acci\u00f3n de capacitaci\u00f3n.<\/span><span style=\"font-size: 110%;\">\u00a0<\/span><\/p>\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-1369237669 > .col-inner {\n  padding: 20px 20px 0px 20px;\n  border-radius: 20px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n<\/div>\n<div class=\"row align-center row-box-shadow-2\"  id=\"row-38089373\">\n\n\n\t<div id=\"col-827130279\" class=\"col medium-7 small-12 large-7\"  >\n\t\t\t\t<div class=\"col-inner text-center\" style=\"background-color:rgba(240, 248, 255, 0.959);\" >\n\t\t\t\n\t<div class=\"is-border\"\n\t\tstyle=\"border-color:rgba(206, 236, 255, 0.82);border-radius:20px;border-width:1px 1px 1px 1px;\">\n\t<\/div>\n\t\t\t\n\n  <style>\n    \/* Contenedor para video, canvas y capa de error *\/\n    .video-container {\n      position: relative;\n      width: 100%;\n      max-width: 420px;\n      \/* Ancho m\u00e1ximo consistente *\/\n      margin: 1em auto;\n      \/* Centrar el contenedor *\/\n    }\n\n    \/*\t   \n.video-container {\n  position: relative;\n  width:100%;\n  max-width: 396px;\n  aspect-ratio: 4\/3;\n  margin: 1em 0;\n\tz-index: 10; \n\toverflow: hidden;\n}*\/\n    \/*\n.video-container video {\n\t\t    \n  display: block;\n  max-width: 100%;\n  height: 100%;\n  object-fit: cover;\n  width: 100% !important;\n  height: auto !important;\n  aspect-ratio: 4\/3; \n  z-index: 1; \n  border-radius: .75em;         \n}\n\t   \n.video-container canvas {\n  position: absolute;\n  top: 0; left: 0;\n  width: 100%;\n  height: 100%;\n  border-radius: .75em;\n  z-index: 2;\t\n}\n\t   *\/\n    .video-container video,\n    .video-container canvas {\n      width: 100% !important;\n      height: auto !important;\n      border-radius: .75em;\n      \/*aspect-ratio: 4\/3;  Forzar relaci\u00f3n de aspecto *\/\n    }\n\n    \/* Oculto por defecto el canvas y la capa de error \n.video-container canvas,\n.video-container .video-error {\n  display: none;\n}*\/\n    \/* Overlay de error *\/\n    .video-container .video-error {\n      position: relative;\n      top: 0;\n      left: 0;\n      width: 100%;\n      height: 200px;\n      display: none;\n      \/* oculta por defecto *\/\n      z-index: 3;\n\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      text-align: center;\n      background: rgba(255, 255, 255, 0.95);\n      padding: 1em;\n      border-radius: .75em;\n    }\n\n    .video-container .video-error .btn-retry {\n      margin-top: .5em;\n      padding: .5em 1em;\n      background: #e0f3ff;\n      border: none;\n      border-radius: .75em;\n      color: #0077cc;\n      cursor: pointer;\n    }\n\n    \/* Toast notifications *\/\n    .toast-container {\n      position: fixed;\n      left: 50%;\n      transform: translateX(-50%);\n      z-index: 10000;\n    }\n\n    .toast {\n      min-width: 200px;\n      margin-bottom: .5em;\n      padding: .75em 1em;\n      border-radius: .25em;\n      color: #fff;\n      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);\n      opacity: 0;\n      transform: translateY(-10px);\n      transition: all .3s ease;\n    }\n\n    .toast.show {\n      opacity: 1;\n      transform: translateY(0);\n    }\n\n    .toast.success {\n      background: #34a853;\n    }\n\n    .toast.error {\n      background: #ea4335;\n    }\n\n    .toast.warning {\n      background: #ffba19;\n    }\n\t.toast.info {\n      background: #0077cc;\n    }  \n\t.dataviewer-res {\n\t\n    background-color:rgb(231 239 250);\n    border-radius: .5rem;\n\t\tborder-color:rgb(185 213 249);\n\t\t  color:hsl(222.2deg 80.51% 6.26%);\n\t\tfont-size: 0.8rem;\n\t  }\n    \/* Flatsome-compatible wizard styling *\/\n    .step {\n      display: none;\n    }\n\n    .step.active {\n      display: block;\n    }\n\n    .wizard-nav {\n      margin-bottom: 1.5em;\n      text-align: center;\n    }\n\n    .wizard-nav .step-item {\n      display: inline-block;\n      width: 120px;\n      padding: .5em;\n      border-radius: .25em;\n      background: #eef6fc;\n      color: #0077cc;\n      margin-right: .5em;\n      position: relative;\n    }\n\n    .wizard-nav .step-item.active {\n      background: #0077cc;\n      color: #fff;\n    }\n\n    .wizard-nav .step-item.completed {\n      background: #e6f5e6;\n      color: #34a853;\n    }\n\n    .wizard-nav .step-item.completed::after {\n      content: \"\u2713\";\n      position: absolute;\n      top: 4px;\n      right: 2px;\n      font-size: .8em;\n      color: #34a853;\n    }\n\n    .canvas-preview {\n      width: 100%;\n      max-width: 320px;\n      border: 2px solid #0077cc;\n      border-radius: .75em;\n      \/* aspect-ratio: 4\/3;*\/\n      margin: 1em 0;\n    }\n\n    .ux-btn {\n      padding: .6em 1.2em;\n      border-radius: .25em;\n      background: #00a2df;\n      color: #fff;\n      border: none;\n      margin: .5em .25em;\n      cursor: pointer;\n    }\n\n    .ux-input-text {\n      width: 100%;\n      padding: .6em;\n      border: 1px solid #0077cc;\n      border-radius: .25em;\n      margin-bottom: 1em;\n    }\n  <\/style>\n  <div class=\"toast-container\"><\/div>\n  <div id=\"overlay\">\n   <div class=\"cv-spinner\">\n     <span class=\"spinner\"><\/span>\n   <\/div>\n  <\/div>\t\n  <div id=\"cec-wizard\">\n    <div class=\"wizard-nav\">\n      <span class=\"step-item active\" data-step=\"1\">1. Folio<\/span>\n      <span class=\"step-item\" data-step=\"2\">2. Personal<\/span>\n      <span class=\"step-item\" data-step=\"3\">3. Frente INE<\/span>\n      <span class=\"step-item\" data-step=\"4\">4. Reverso INE<\/span>\n      <span class=\"step-item\" data-step=\"5\">5. Selfie<\/span>\n      <span class=\"step-item\" data-step=\"6\">6. Revisar<\/span>\n    <\/div>\n\n    <!-- Paso 1: verificaci\u00f3n de folio -->\n    <div id=\"step-1\" class=\"step active\">\n      <form id=\"wizard-form-1\">\n        <label for=\"sfolio\">Folio SDPC*<\/label>\n        <input type=\"number\" id=\"sfolio\" class=\"ux-input-text\" required>\n        <button class=\"ux-btn\" id=\"check-folio\">Revisar Folio \u2192<\/button>\n      <\/form>\n    <\/div>\n\n    <!-- Paso 2: datos personales -->\n    <div id=\"step-2\" class=\"step\">\n      <form id=\"wizard-form-2\">\n        <label>Nombre(s)*<\/label>\n        <input type=\"text\" id=\"nombre\" class=\"ux-input-text\" required>\n        <label>Apellidos*<\/label>\n        <input type=\"text\" id=\"apellido\" class=\"ux-input-text\" required>\n        <label>Email*<\/label>\n        <input type=\"email\" id=\"email\" class=\"ux-input-text\" required>\n        <label>Tel\u00e9fono*<\/label>\n        <input type=\"tel\" id=\"telefono\" class=\"ux-input-text\" required>\n        <button class=\"ux-btn\" id=\"back-2\">\u2190 Atr\u00e1s<\/button>\n        <button class=\"ux-btn\" id=\"next-2\">Continuar \u2192<\/button>\n      <\/form>\n    <\/div>\n\n    <!-- Paso 3: captura frente INE -->\n    <div id=\"step-3\" class=\"step\">\n      <p>Toma una foto clara del <strong>frente<\/strong> de tu INE. Aseg\u00farate de que el texto sea legible.<\/p>\n      <div class=\"video-container\" data-step=\"3\">\n        <video id=\"video-3\" autoplay playsinline width=\"640\"><\/video>\n        <canvas id=\"canvas-3\" class=\"canvas-preview\"><\/canvas>\n        <div class=\"video-error\">\n          <p style=\"color:coral\"><strong>\u00a1Error!<\/strong><br>No se puede acceder a la c\u00e1mara.<br>\n            Verifica permisos y que tu dispositivo tenga c\u00e1mara.<\/p>\n          <button class=\"btn-retry\">Intentar de nuevo<\/button>\n        <\/div>\n      <\/div>\n      <button class=\"ux-btn\" id=\"back-3\">\u2190 Atr\u00e1s<\/button>\n      <button class=\"ux-btn\" id=\"capture-3\">\ud83d\udcf7 Capturar Frente<\/button>\n      <button class=\"ux-btn\" id=\"next-3\">Continuar \u2192<\/button>\n    <\/div>\n\n    <!-- Paso 4: captura reverso INE -->\n    <div id=\"step-4\" class=\"step\">\n      <p>Toma una foto clara del <strong>reverso<\/strong> de tu INE. Aseg\u00farate de que el texto sea legible.<\/p>\n      <div class=\"video-container\" data-step=\"4\">\n        <video id=\"video-4\" autoplay playsinline width=\"640\"><\/video>\n        <canvas id=\"canvas-4\" class=\"canvas-preview\"><\/canvas>\n        <div class=\"video-error\">\n          <p><strong>\u00a1Error!<\/strong><br>No se puede acceder a la c\u00e1mara.<br>\n            Verifica permisos y que tu dispositivo tenga c\u00e1mara.<\/p>\n          <button class=\"btn-retry\">Intentar de nuevo<\/button>\n        <\/div>\n      <\/div>\n      <button class=\"ux-btn\" id=\"back-4\">\u2190 Atr\u00e1s<\/button>\n      <button class=\"ux-btn\" id=\"capture-4\">\ud83d\udcf7 Capturar Reverso<\/button>\n      <button class=\"ux-btn\" id=\"next-4\">Continuar \u2192<\/button>\n    <\/div>\n\n    <!-- Paso 5: captura selfie -->\n    <div id=\"step-5\" class=\"step\">\n      <p>Toma una <strong>selfie<\/strong> clara. Cara centrada y bien iluminada.<\/p>\n      <div class=\"video-container\" data-step=\"5\">\n        <video id=\"video-5\" autoplay playsinline width=\"640\"><\/video>\n        <canvas id=\"canvas-5\" class=\"canvas-preview\"><\/canvas>\n        <div class=\"video-error\">\n          <p><strong>\u00a1Error!<\/strong><br>No se puede acceder a la c\u00e1mara.<br>\n            Verifica permisos y que tu dispositivo tenga c\u00e1mara.<\/p>\n          <button class=\"btn-retry\">Intentar de nuevo<\/button>\n        <\/div>\n      <\/div>\n      <button class=\"ux-btn\" id=\"back-5\">\u2190 Atr\u00e1s<\/button>\n      <button class=\"ux-btn\" id=\"capture-5\">\ud83d\udcf7 Tomar Selfie<\/button>\n      <button class=\"ux-btn\" id=\"next-5\">Continuar \u2192<\/button>\n      <p id=\"selfie-error\" style=\"color:#c00;\"><\/p>\n    <\/div>\n\n    <!-- Paso 6: resumen -->\n    <div id=\"step-6\" class=\"step\">\n      <h3>Revisa tus datos antes de enviar<\/h3>\n      <p><strong>Folio:<\/strong> <span id=\"summary-folio\"><\/span><\/p>\n      <p><strong>Nombre:<\/strong> <span id=\"summary-nombre\"><\/span><\/p>\n      <p><strong>Apellidos:<\/strong> <span id=\"summary-apellido\"><\/span><\/p>\n      <p><strong>Email:<\/strong> <span id=\"summary-email\"><\/span><\/p>\n      <p><strong>Tel\u00e9fono:<\/strong> <span id=\"summary-telefono\"><\/span><\/p>\n      <figure>\n        <figcaption>Frente INE<\/figcaption>\n        <canvas id=\"summary-canvas-3\" class=\"canvas-preview\"><\/canvas>\n      <\/figure>\n      <figure>\n        <figcaption>Reverso INE<\/figcaption>\n        <canvas id=\"summary-canvas-4\" class=\"canvas-preview\"><\/canvas>\n      <\/figure>\n      <figure>\n        <figcaption>Selfie<\/figcaption>\n        <canvas id=\"summary-canvas-5\" class=\"canvas-preview\"><\/canvas>\n      <\/figure>\n\t\t <div id=\"dataViewerFace\" role=\"alert\" class=\"hidden dataviewer-res p-4\">\n         <\/div>\n      <button class=\"ux-btn\" id=\"back-6\">\u2190 Atr\u00e1s<\/button>\n      <button class=\"ux-btn\" id=\"submit-all\">Enviar Registro<\/button>\n    <\/div>\n  <\/div>\n\n  <script>\n    jQuery(function($) {\n      let stream = null,\n        images = {};\n\n      function showToast(type, msg) {\n        const $container = $('.toast-container');\n        const $toast = $(`<div class=\"toast ${type}\">${msg}<\/div>`);\n        $container.append($toast);\n        \/\/ animar entrada\n        setTimeout(() => $toast.addClass('show'), 10);\n        \/\/ desaparecer y retirar\n        setTimeout(() => {\n          $toast.removeClass('show');\n          setTimeout(() => $toast.remove(), 300);\n        }, 2500);\n      }\n\n\n      function startCamera(step) {\n        const mode = (step < 5 ? 'environment' : 'user'),\n          $cont = $(`.video-container[data-step=\"${step}\"]`),\n          video = $cont.find('video')[0],\n          canvas = $cont.find('canvas')[0],\n          $overlay = $cont.find('.video-error');\n\n        \/\/ 1) ocultar restos de intentos previos\n        $overlay.hide();\n        $(canvas).hide();\n        $(video).show();\n\n        \/\/ 2) cerrar stream anterior\n        if (stream) {\n          stream.getTracks().forEach(t => t.stop());\n          stream = null;\n        }\n\n        \/\/ 3) arrancar la c\u00e1mara\n        navigator.mediaDevices.getUserMedia({\n            video: {\n              facingMode: mode\n            }\n          })\n          .then(s => {\n            stream = s;\n            video.srcObject = s;\n\n            $overlay.hide();\n          })\n          .catch(err => {\n            \/\/ fallo: mostra overlay con bot\u00f3n de retry\n            $(video).hide();\n            $overlay.show();\n            showToast('error', 'No se pudo acceder a la c\u00e1mara. ' + err.message);\n          });\n      }\n\n      function goToStep(n) {\n        \/\/ pasos \n        $('.step').removeClass('active');\n        $('#step-' + n).addClass('active');\n        $('.wizard-nav .step-item').each((i, el) => {\n          const s = +$(el).data('step');\n          $(el).toggleClass('active', s === n);\n          $(el).toggleClass('completed', s < n);\n        });\n\n        \/\/ s\u00f3lo arrancar c\u00e1mara en 3\u20135\n        if (n >= 3 && n <= 5) {\n          startCamera(n);\n        } else if (stream) {\n          stream.getTracks().forEach(t => t.stop());\n          stream = null;\n        }\n      }\n      \/\/ Handler para \u201cIntentar de nuevo\u201d\n      $(document).on('click', '.btn-retry', function() {\n        const step = $(this).closest('.video-container').data('step');\n        startCamera(step);\n      });\n      \/\/ Paso 1 \u2192 Paso 2\n      $('#check-folio').click(function(e) {\n        e.preventDefault();\n        const folio = $('#sfolio').val().trim();\n        if (!folio) return showToast('warning', 'Ingrese su Folio SDPC');\n        $.post(cec_data_ajax.ajaxurl, {\n            action: 'buscar_folio_cec_data',\n            nonce: cec_data_ajax.nonce,\n            folio\n          },\n          function(res) {\n            const data = JSON.parse(res);\n            if (data.status === 'REGISTRADO' && data.estado === 10) {\n              $('#nombre').val(data.nombre);\n\t\t\t  $('#apellido').val(data.apellido);\n\t\t\t  $('#email').val(data.email);\n\t\t\t  $('#telefono').val(data.telefono);\n              goToStep(2);\n            }else if(data.status === 'REGISTRADO' && data.estado === 19) {\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0showToast('success', 'Folio con proceso de verificaci\u00f3n completado');\n              return;\n            } else if(data.status === 'REGISTRADO' && data.estado === 21) {\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0showToast('info', 'Gracias por subir sus archivos. Se encuentran en proceso de verificaci\u00f3n');\n              return;\n            }else {\n\t\t\t\t\n\t\t\t  showToast('warning', 'Folio no registrado, Comunicate al Centro de Atenci\u00f3n Telef\u00f3nica');\n              return;\n\t\t\t\t\n\t\t\t}\n          }\n        );\n      });\n\n      \/\/ Paso 2 \u2192 Paso 3\n      $('#next-2').click(function(e) {\n        e.preventDefault();\n\t\t  $('#summary-nombre').text($('#sfolio').val());\n        $('#summary-nombre').text($('#nombre').val());\n        $('#summary-apellido').text($('#apellido').val());\n        $('#summary-email').text($('#email').val());\n        $('#summary-telefono').text($('#telefono').val());\n        goToStep(3);\n      });\n\n      \/\/ Captura foto: pasos 3,4,5\n      $('[id^=capture-]').click(function(e) {\n        e.preventDefault();\n        const step = $(this).attr('id').split('-')[1],\n          container = $(`.video-container[data-step=\"${step}\"]`),\n          video = container.find('video')[0],\n          canvas = container.find('canvas')[0],\n          ctx = canvas.getContext('2d'),\n          overlay = container.find('.video-error');\n\n        if (!stream) {\n          showToast('error', 'C\u00e1mara no disponible o sin permisos.');\n          return;\n        }\n        \/\/ Dibujar en el canvas\n        canvas.width = video.videoWidth || 640;\n        canvas.height = video.videoHeight || 480;\n        \/\/showToast('success', canvas.width + 'x' + video.videoWidth);\n        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n\n        \/\/ Ocultar video y overlay, mostrar canvas\n        $(video).hide();\n        overlay.hide();\n        $(canvas).show();\n\n        images[step] = canvas.toDataURL('image\/png');\n        showToast('success', 'Foto capturada correctamente');\n      });\n\n      \/\/ Paso 3 \u2192 Paso 4\n      $('#next-3').click(e => {\n        e.preventDefault();\n        if (!images['3']) {\n          showToast('error', 'Por favor, toma la foto del frente antes de continuar.');\n          return;\n        }\n        goToStep(4);\n      });\n      \/\/ Paso 4 \u2192 Paso 5\n      $('#next-4').click(e => {\n        e.preventDefault();\n        if (!images['4']) {\n          showToast('error', 'Por favor, toma la foto del reverso antes de continuar.');\n          return;\n        }\n        goToStep(5);\n      });\n      \/\/ Paso 5 \u2192 Paso 6 (resumen)\n      $('#next-5').click(function(e) {\n        e.preventDefault();\n        if (!images['5']) {\n          showToast('error', 'Por favor, toma la selfie antes de continuar.');\n          return;\n        }\n        \/\/ Validar selfie mediante AJAX\n        $(\"#overlay\").fadeIn(300);\n        $.post(cec_data_ajax.ajaxurl, {\n            action: 'check_image',\n            nonce: cec_data_ajax.nonce,\n            image: images['5']\n          },\n          function(res) {\n\t\t\t$(\"#overlay\").fadeOut(300);\n            console.log(res);\n            const dt = res;\n\n            if (!dt.data.face_detected) {\n              $('#selfie-error').text('Selfie no aceptada: ' + dt.data.message);\n              return;\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0  }\n\t\t\t\/\/ Verificamos que haya al menos un mensaje de calidad\n\t\t\tif (dt.data.faces && dt.data.faces.length > 0){\n\t\t\t\t\/\/ Recolectamos todos los mensajes de quality_issues\n        let issues = [];\n        $.each(dt.data.faces, function(i, face) {\n            if (face.quality_issues && face.quality_issues.length) {\n                \/\/ Los concatenamos al array\n                issues = issues.concat(face.quality_issues);\n                }\n            });\n\t\t\t\t\/\/mensajes de quality issues\n\t\t\t\t \/\/ Si hay mensajes, los mostramos\n        if (issues.length) {\n            \/\/ Puedes usar .html() para saltos de l\u00ednea o .text() si prefieres todo en una l\u00ednea\n            $('#dataViewerFace').removeClass('hidden');\n\t\t\tlet html='Se encontraron algunos detalles de calidad en tu foto, te sugerimos corregirlos en la medida de lo posible.<br>';\n\t\t\t$('#dataViewerFace').html( html + issues.join('<br>') );\n        } \n\t\t\/*\t\telse {\n            $('#dataViewerFace').text('No se encontraron problemas de calidad.');\n        }\n    } else {\n        $('#dataViewerFace').text('No se detectaron caras.');\n    }*\/\n\t\t\t\t\n         \n\t\t\t}\n\t\t\t\/\/ Pintar canvases de resumen\n            ['3', '4', '5'].forEach(s => {\n              const c = $('#summary-canvas-' + s)[0],\n                ctx = c.getContext('2d'),\n                img = new Image();\n              img.onload = () => {\n                c.width = img.width;\n                c.height = img.height;\n                ctx.drawImage(img, 0, 0);\n              };\n              img.src = images[s];\n            });\n            goToStep(6);\n          }\n        );\n      });\n      \/\/ Paso 2 \u2190 Paso 1\n      $('#back-2').click(function(e) {\n        e.preventDefault();\n        goToStep(1);\n      });\n      \/\/ Paso 3 \u2190 Paso 2\n      $('#back-3').click(function(e) {\n        e.preventDefault();\n        goToStep(2);\n      });\n      \/\/ Paso 4 \u2190 Paso 3\n      $('#back-4').click(function(e) {\n        e.preventDefault();\n        goToStep(3);\n      });\n      \/\/ Paso 5 \u2190 Paso 4\n      $('#back-5').click(function(e) {\n        e.preventDefault();\n        goToStep(4);\n      });\n      \/\/ Paso 6 \u2190 Paso 5\n      $('#back-6').click(function(e) {\n        e.preventDefault();\n        goToStep(5);\n      });\n\n      \/\/ Env\u00edo final\n      $('#submit-all').click(function() {\n        const fd = new FormData();\n        fd.append('action', 'procesar_formulario_cec_data');\n        fd.append('nonce', cec_data_ajax.nonce);\n        fd.append('folio', $('#sfolio').val());\n        fd.append('nombre', $('#nombre').val());\n        fd.append('apellido', $('#apellido').val());\n        fd.append('email', $('#email').val());\n        fd.append('telefono', $('#telefono').val());\n        ['3', '4', '5'].forEach(s => fd.append('img' + s, images[s]));\n        $.ajax({\n          url: cec_data_ajax.ajaxurl,\n          method: 'POST',\n          data: fd,\n          contentType: false,\n          processData: false,\n          success() {\n            alert('Registro enviado con \u00e9xito');\n\t\t\twindow.location.href = \"https:\/\/cshec.xoc.uam.mx\/sdpc\/requisitos-de-verificacion-de-identidad-completado\/\";\n          },\n          error() {\n            alert('Error al enviar registro');\n          }\n        });\n      });\n    });\n  <\/script>\n\n\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-827130279 > .col-inner {\n  padding: 20px 20px 30px 20px;\n  border-radius: 20px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-blank.php","meta":{"footnotes":""},"area":[],"class_list":["post-1954","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/pages\/1954","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/comments?post=1954"}],"version-history":[{"count":2,"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/pages\/1954\/revisions"}],"predecessor-version":[{"id":1956,"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/pages\/1954\/revisions\/1956"}],"wp:attachment":[{"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/media?parent=1954"}],"wp:term":[{"taxonomy":"area","embeddable":true,"href":"https:\/\/cshec.xoc.uam.mx\/sdpc\/wp-json\/wp\/v2\/area?post=1954"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}