Si en tu página web, creada con WordPress, utilizas el plugin de membresía Paid Memberships Pro y además utilizas Stripe como pasarela de pago, puede que te haya aparecido alguna vez alguno de estos problemas al finalizar la compra o el pago:

  • There are JavaScript errors on the page. Please contact the webmaster.
  • Please complete all required fields.

O dicho de otra manera, en español:

  • Hay errores de JavaScript en la página. Por favor, contacta a el creador de la pagina web.
  • Por favor completa todos los campos requeridos. (Aunque completaste todos los campos).

Hoy vamos a ver cómo solucionarlo de manera muy fácil.

¿Por qué pasa esto?

En casi todos los casos, lo que sucede es que el código JavaScript de Stripe no puede “hablar” a través de la API de Stripe para validar la tarjeta de crédito del usuario y procesar el pago.

La razón por la que a veces aparece el error “completar todos los campos obligatorios” es que no se pudo detectar el error real con la integración de Stripe y se intenta enviar el formulario sin el token de tarjeta de crédito actualizado que Paid Memberships Pro necesita para lanzar la pasarela de Stripe. Entonces, para PMPro, parece que algunos campos se dejaron vacíos. Pero realmente se rompió el código JavaScript y esos campos ocultos nunca fueron actualizados.

Entonces, ¿cómo puedo arreglar esto? Antes de nada, estas cosas son las que debes tener en cuenta para solucionar el problema.

1. Asegúrate de que tu configuración de pago es correcta.

Primero, asegúrate de que la “clave secreta” y la “clave pública” de Stripe no tengan ningún espacio en blanco adicional o caracteres extraños. Y asegúrate también de que el “entorno de la puerta de enlace” esté configurado en “En directo / Producción”, a menos que estés utilizando una cuenta en modo de prueba de Stripe.

2. Asegúrate de que otros plugins o temas no estén causando problemas de JavaScript al finalizar la compra.

Puedes utilizar la consola de depuración de Chrome en Google Chrome para buscar errores de JavaScript. En Chrome, haz clic en Ctrl + Shift + J para abrir la consola de JavaScript. Los errores aparecerán en rojo. Los errores pueden darte una pista sobre qué complemento, tema o archivo está causando el problema. Existen herramientas similares para otros navegadores, como Firebug para Firefox y Developer Tools para IE.

3. Asegúrate de que todos los archivos se carguen a través de HTTPS / SSL correctamente.

Si su página de pago se carga a través de HTTPS, lo cual es obligatorio ya para utilizar Stripe, pero intenta cargar un archivo de origen a través de HTTP, tu navegador puede detener la carga de ese archivo. Si se trata de un archivo JavaScript que espera que se cargue un complemento, pueden ocurrir errores que impidan que funcione. Puede encontrar estos errores usando la consola JavaScript de Chrome (Ctrl + Shift + J).

Habilitar la opción “Filtro de URL HTTPS adicional” en la configuración de pago eliminará algunos de estos problemas. Si no, puedes usar el plugin WordPress HTTPS , sólo asegúrate de configurar la opción “Forzar SSL” en la configuración de pago de PMPro en “No” y verificar la opción “forzar SSL” en el pago de PMPro y actualizar las páginas de facturación para que el plugin sabe para controlar HTTPS para esas páginas.

Si todavía tienes problemas, todavía tendrás que editar el plugin o el tema para usar https:// en las URL que se están cargando o ajustar las URL utilizando la función site_url () en WordPress.

4. Asegúrate de que no tienes plugins o Add-Ons conflictivos de PMPro.

En principio, puede aparecer el error “completar todos los campos obligatorios” si, por ejemplo, estás utilizando el Add-On Require Name and Address for Free Levels, pero tienes la configuración “Mostrar Dirección de Facturación” establecida en “No” para Stripe. La configuración ocultará el campo de dirección, pero el plugin seguirá esperándolo.

Otra situación que puede surgir es si tienes un campo nuevo creado usando el Add-On Register Helper Add On que se agrega al área “after_password” u otra área que no está presente cuando un usuario conectado está finalizando el pago. El campo no se mostrará al finalizar la compra, pero el código aún así lo “requerirá”. Puedes asegurarte de que los campos obligatorios se agreguen de forma tal que siempre estén visibles en el proceso de finalización de la compra (usa el área checkout_boxes).

Por último, agrega el siguiente código a cualquier campo que no sea necesario para los miembros que ya iniciaron sesión.

if(is_user_logged_in())
  $required = false;
else
  $required = true;
  
$fields[] = new PMProRH_Field(
  "company",              // input name, will also be used as meta key
  "text",                 // type of field
  array(
      "size"=>40,         // input size
      "class"=>"company", // custom class
      "profile"=>true,    // show in user profile
      "required"=>$required // set above
  ));

Después de revisar todos estos puntos y realizar las acciones que hemos detallado, lo más probable es que desaparezca el error. Si aún así, sigue apareciendo, deberías contactar con el departamento de soporte de Paid Membership Pro, ellos te ayudarán en todo lo que necesites sin ningún tipo de problema.

Si has logrado solucionar el error, déjanos un comentario para contarnos tu experiencia. ¡Hasta la próxima!