El programa de procesamiento general ashx accede a la configuración del servidor WeChat

Primero, complete la configuración relacionada con el servidor en el backend de Weixin, simplemente complétela directamente de acuerdo con las instrucciones aquí. Antes de enviar la configuración, debemos preparar la URL en nuestro servidor para aceptar solicitudes de WeChat y verificar el contenido de la solicitud.

Preparar la información de configuración de la interfaz.

A. URL del servidor

    Esta URL se utiliza como dirección de solicitud GET para la verificación de WeChat cuando los desarrolladores acceden. La información posterior enviada por usuarios comunes a través de su cuenta pública de WeChat o los eventos generados por diversas operaciones serán reenviados y PUBLICADOS a esta URL por el servidor de WeChat. De esta manera, puede realizar un enrutamiento de URL basado en diferentes tipos de mensajes y manejar diferentes mensajes o eventos respectivamente. Cabe señalar que actualmente solo se admite el modo http, el modo https no y solo se admite el puerto predeterminado 80.

B. Cadena de tokens

    El token es una cadena que se utiliza para generar una firma. Puede completarla como desee (deben ser letras o números en inglés, al menos 3 caracteres y como máximo 32 caracteres). Siempre que utilice este token al verificar la validez. de la firma cifrada de WeChat. Genera un parámetro de firma cifrada de WeChat, que se utiliza principalmente para verificar la seguridad del acceso.

    Consejo : si está utilizando una cuenta de prueba, simplemente configure la información anterior; pero si está en desarrollo oficial, los requisitos más recientes de WeChat también requieren que complete la "Clave de cifrado de mensajes" y seleccione el "Método de cifrado y descifrado de mensajes".

C. Clave de cifrado de mensajes

    La clave de cifrado de mensajes (EncodingAESKey) es el último requisito de WeChat. Consta de 43 caracteres. Puede completarla manualmente o hacer clic en "Generar aleatoriamente". La clave de cifrado del mensaje solo puede consistir en letras o números en inglés y su función es "cifrar y descifrar el cuerpo del mensaje".

D. Métodos de cifrado y descifrado de mensajes

    Hay tres formas de cifrar y descifrar mensajes, a saber, "modo de texto sin formato", "modo de compatibilidad" y "modo de seguridad".

        En el modo de texto sin formato, la clave de cifrado del mensaje no es válida, el cuerpo del mensaje no se cifrará con la clave anterior y el sistema de seguridad es bajo;

        Los desarrolladores utilizan principalmente el modo de compatibilidad para depurar programas, cuando coexisten texto sin formato y texto cifrado;

        El modo seguro es el método recomendado por WeChat. El cuerpo del mensaje se cifra en texto cifrado puro. El sistema de seguridad es mayor, pero los desarrolladores deben cifrar y descifrar ellos mismos.

2. Escriba el código para responder a la solicitud GET de WeChat.

// <summary>
        /// 开发者指定的Token
        /// </summary>
        const string token = "pmlaomao";

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            switch (context.Request.HttpMethod)
            {
                case "GET":
                    //接入成功后可以注释此行
                    JoinWeixin(context);
                    break;
                case "POST":
                    //解析微信请求的XML消息文档
                    ParseXmlDocument(context);
                    break;
                default:
                    context.Response.Write("不支持" + context.Request.HttpMethod + "方式!");
                    break;
            }

            context.Response.End();
        }

B. Verificar la validez de la firma de WeChat


        /// <param name="signature">
        /// 微信加密签名
        ///     <para>signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。</para>
        /// </param>
        /// <param name="timestamp">时间戳</param>
        /// <param name="nonce">随机数</param>
        /// <returns></returns>
        private bool CheckSignature(string signature, string timestamp, string nonce)
        {
            string[] tmpArr = { token, timestamp, nonce };//将token、timestamp、nonce三个参数进行字典序排序
            Array.Sort(tmpArr);
            string tmpStr = string.Join("", tmpArr);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//将三个参数字符串拼接成一个字符串进行sha1加密
            tmpStr = tmpStr.ToLower();

            return tmpStr == signature;//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
        }

 C. Devolver el parámetro echostr tal cual

/// <summary>
        /// 接入微信
        ///     <para>返回echostr参数内容,则接入生效,否则接入失败。 </para>
        /// </summary>
        /// <param name="context"></param>
        private void JoinWeixin(HttpContext context)
        {
            string signature = context.Request.QueryString["signature"];
            string timestamp = context.Request.QueryString["timestamp"];
            string nonce = context.Request.QueryString["nonce"];
            string echostr = context.Request.QueryString["echostr"];

            if (CheckSignature(signature, timestamp, nonce))
            {
                if (!string.IsNullOrEmpty(echostr))
                {
                    context.Response.Write(echostr);
                }
                else
                {
                    context.Response.Write("随机字符串为空!");
                }
            }
            else
            {
                context.Response.Write("微信加密签名验证失败!");
            }

            context.Response.End();
        }

3. Envíe la solicitud en la página de configuración.

    Después de escribir el código anterior e implementarlo en su servidor, puede completar la información de configuración de la interfaz preparada anteriormente en el "Centro de desarrolladores" de la plataforma pública WeChat -> "Elementos de configuración" y luego hacer clic en el botón "Enviar" para enviar el información de configuración al servidor WeChat. Después de que el servidor WeChat reciba la información, enviará una solicitud GET a la dirección URL que envió.

Después de completar el trabajo anterior, envíe la configuración en segundo plano de WeChat para su verificación. Tenga en cuenta que el token debe ser coherente con la configuración de WeChat.

Supongo que te gusta

Origin blog.csdn.net/hyx199012/article/details/126118496
Recomendado
Clasificación