一般処理プログラム ashx が WeChat サーバー設定にアクセス

まず、Weixin バックエンドでサーバー関連の設定を入力します。ここの指示に従って直接入力してください。構成を送信する前に、WeChat リクエストを受け入れ、リクエストの内容を確認するための URL をサーバー上に準備する必要があります。

インターフェース構成情報の準備

A. サーバー URL

    この URL は、開発者がアクセスする際に WeChat 認証の GET リクエスト アドレスとして使用され、その後一般ユーザーが WeChat パブリック アカウントを通じて送信した情報や、さまざまな操作によって生成されたイベントは、WeChat サーバーによってこの URL に転送および POST されます。このようにして、さまざまなメッセージ タイプに基づいて URL ルーティングを実行し、それぞれ異なるメッセージやイベントを処理できます。現在、http モードのみがサポートされており、https モードはサポートされておらず、デフォルトのポート 80 のみがサポートされていることに注意してください。

B. トークン文字列

    Tokenは署名生成に使用する文字列で、有効性を検証する際にこのTokenを使用する限り、任意に入力できます(英字または数字、3文字以上、32文字以内)。 WeChat の暗号化された署名。これは、主にアクセスの安全性を検証するために使用される WeChat 暗号化署名のパラメーターを生成します。

    ヒント: テスト アカウントを使用している場合は、上記の情報を設定するだけですが、正式な開発中の場合、WeChat の最新の要件により、「メッセージ暗号化キー」を入力し、「メッセージの暗号化と復号化方法」を選択する必要もあります。

C. メッセージ暗号化キー

    メッセージ暗号化キー (EncodingAESKey) は WeChat の最新の要件であり、43 文字で構成されており、手動で入力するか、[ランダムに生成] をクリックすることができます。メッセージ暗号化キーには英字または数字のみを使用でき、その機能は「メッセージ本文の暗号化と復号化」です。

D. メッセージの暗号化と復号化の方法

    メッセージの暗号化と復号化には、「プレーンテキストモード」、「互換モード」、「セキュリティモード」の 3 つの方法があります。

        平文モードでは、メッセージ暗号化キーが無効であり、メッセージ本文は上記のキーを使用して暗号化されず、セキュリティ システムが低くなります。

        互換モードは、主に開発者が平文と暗号文が共存する場合にプログラムをデバッグするために使用されます。

        セーフ モードは WeChat が推奨する方式で、メッセージ本文が純粋な暗号文に暗号化され、セキュリティ システムはより高くなりますが、開発者が自分で暗号化と復号化を行う必要があります。

2. WeChat GET リクエストに応答するコードを作成します。

// <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. 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. echostrパラメータをそのまま返す

/// <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. 設定ページでアプリケーションを送信します

    上記のコードの作成とサーバーへのデプロイが完了したら、WeChat パブリック プラットフォームの [開発者センター] -> [構成項目] に上記で準備したインターフェイス構成情報を入力し、[送信] ボタンをクリックして、構成情報を WeChat サーバーに送信します。WeChat サーバーは情報を受信すると、送信した URL アドレスに GET リクエストを送信します。

上記の作業を完了したら、検証のために WeChat バックグラウンドで構成を送信します。トークンは WeChat 構成と一致している必要があることに注意してください。

おすすめ

転載: blog.csdn.net/hyx199012/article/details/126118496