firma no válida, qué hacer
1. Primero, confirme que el algoritmo de firma sea correcto y vaya a la herramienta de página /debug/cgi-bin/sandbox?t=jsapisign para su verificación. Es decir, la firma generada por usted en segundo plano debe ser coherente con la firma generada por el algoritmo de verificación de WeChat.
2. Hay otro error que encontró el autor. Vi en el SDK de WeChat que los tokens y los tickets deben almacenarse en caché en el servidor, y el período de validez es de 7200 segundos. Al escribir el código, la firma generada también se almacenó en caché. Después de usarlo varias veces, informó una firma no válida. Después de leer el documento detenidamente, decidí regenerar la firma cada vez que abría la página. Todavía estaban almacenados en caché, pero la marca de tiempo cambió, por lo que cada vez Las subfirmas también son diferentes.
3. Los campos involucrados en la firma incluyen jsapi_ticket válido (consulte el documento WeChat JSSDK para obtener detalles sobre cómo obtenerlo), noncestr (cadena aleatoria, generada aleatoriamente por el desarrollador), marca de tiempo (la marca de tiempo actual). generado por el desarrollador), url (la URL de la página web actual, excluyendo # y sus siguientes partes.
4. Nota especial: cuando utilice parámetros para generar una firma, debe seguir el código ASCII código del nombre del campo para todos los parámetros que se van a firmar. Después de ordenar de pequeño a grande (orden lexicográfico), utilice el formato de par clave-valor de URL (es decir, clave1 = valor1 y clave2 = valor2...) para concatenar en la cadena cadena1. Tenga en cuenta que todos los nombres de los parámetros son caracteres en minúscula.
5. Confirme que el nonceStr (S mayúscula estándar en mayúscula en js) y la marca de tiempo en la configuración sean consistentes con el noncestr y la marca de tiempo correspondientes utilizados en la firma.
6. Confirme que la URL es la URL completa de la página (ingrese la URL actual (confirmación de ubicación.href.split('#')[0]), incluida). la parte 'http(s)://' y la parte del parámetro GET después de '? ', pero sin incluir la parte hash '#' porque una vez que se comparte la página, el cliente WeChat agregará otros parámetros al final de. su enlace. Si el enlace actual no se obtiene dinámicamente, la firma de la página compartida fallará.