国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
2. WeChatコールバックメッセージの検証
同様に、WeChat サーバーへのメッセージに応答するときも、対応するパラメーターを取得して、メッセージ応答を構(gòu)築する必要があります。
ホームページ WeChat アプレット WeChatの開(kāi)発 C# は WeChat ポータルを開(kāi)発し、WeChat エンタープライズ アカウントを使用してメッセージとイベントを受信、処理、復(fù)號(hào)化します。

C# は WeChat ポータルを開(kāi)発し、WeChat エンタープライズ アカウントを使用してメッセージとイベントを受信、処理、復(fù)號(hào)化します。

Mar 02, 2017 am 09:29 AM

1. エンタープライズ アカウントのコールバック モードの設(shè)定

パブリック アカウントと同様に、WeChat エンタープライズ アカウントで二次開(kāi)発が必要な場(chǎng)合は、次のインターフェイスに示すように、対応するコールバック パラメーターをバックグラウンドで設(shè)定する必要があります。

C# は WeChat ポータルを開(kāi)発し、WeChat エンタープライズ アカウントを使用してメッセージとイベントを受信、処理、復(fù)號(hào)化します。

これらを設(shè)定してチェックに合格すると、獨(dú)自の WeChat アプリケーション サーバーでメッセージを送受信できるようになります。

コールバックメッセージのエントリでは、POSTデータと通常のGETデータを別々に処理する必要があります。GETデータはWeChat獨(dú)自の検証処理であり、POSTデータはWeChatメッセージの対話的な操作です。

    /// <summary>
    /// 企業(yè)號(hào)回調(diào)信息接口。統(tǒng)一接收并處理信息的入口。    /// </summary>
    public class corpapi : IHttpHandler
    {        /// <summary>
        /// 處理企業(yè)號(hào)的信息        /// </summary>
        /// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {

上記では、メッセージを処理するための一般的なアプリケーション ハンドラーを定義しました。

次に、さまざまなメッセージ タイプ (POST、GET メソッド) を分離し、それに応じて処理します。

                    if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
                    {                        using (Stream stream = HttpContext.Current.Request.InputStream)
                        {
                            Byte[] postBytes = new Byte[stream.Length];
                            stream.Read(postBytes, 0, (Int32)stream.Length);
                            postString = Encoding.UTF8.GetString(postBytes);
                        }                        if (!string.IsNullOrEmpty(postString))
                        {
                            Execute(postString, accountInfo);
                        }
                    }                    else
                    {
                        Auth(accountInfo);
                    }

2. WeChatコールバックメッセージの検証

以下は、WeChatのコールバックモードと検証URLの手順です。

URL の有効性を確認(rèn)します

上記の情報(bào)を送信すると、企業(yè)アカウントは入力された URL に GET リクエストを送信します。GET リクエストには 4 つのパラメーターが含まれます。 企業(yè)は取得時(shí)に URL デコード処理を行う必要があります。そうでない場(chǎng)合、検証は失敗します。

パラメータ説明必須ですか?msg_signatureWeChat暗號(hào)化署名、msg_signatureは、企業(yè)によって入力されたトークン、リクエスト內(nèi)のタイムスタンプ、nonceパラメータ、および暗號(hào)化されたメッセージを組み合わせます。 bodyはいtimestamptimestampはnonce亂數(shù)はechostr暗號(hào)化されたランダムですmsg_encrypt 形式で提供される文字列。 echostr 平文を復(fù)號(hào)して返す必要があります。random、msg_len、msg、および msg は最初の検証に含める必要があります。パラメータ msg_signature. で、この GET リクエストがエンタープライズ アカウントからのものであることが確認(rèn)された場(chǎng)合、エンタープライズ アプリケーションは echostr パラメータを復(fù)號(hào)し、echostr プレーン テキストをそのまま (引用符なし) 返します。その後、アクセス検証が有効になり、コールバックが実行されます。モードをオンにすることができます。 その後エンタープライズにコールバックが行われる場(chǎng)合、上記のパラメーター (echostr を除く) がリクエスト URL に含まれ、検証方法は最初の検証 URL と同じになります。 上記の手順に従って、これらのパラメータを取得し、WeChat が提供するメッセージ処理関數(shù)を呼び出して暗號(hào)化と復(fù)號(hào)化処理を?qū)g行する必要があります。 URL を検証する Auth(accountInfo); オペレーションでは、コアの內(nèi)容が次のようになっていることがわかります。これは、渡されたパラメーター情報(bào)を取得し、それを基本クラスに渡して、メッセージ。

                        #region 具體處理邏輯                        string echoString = HttpContext.Current.Request.QueryString["echoStr"];                        string signature = HttpContext.Current.Request.QueryString["msg_signature"];//企業(yè)號(hào)的 msg_signature
                        string timestamp = HttpContext.Current.Request.QueryString["timestamp"];                        string nonce = HttpContext.Current.Request.QueryString["nonce"];                        string decryptEchoString = "";                        if (new CorpBasicApi().CheckSignature(token, signature, timestamp, nonce, corpId, encodingAESKey, echoString, ref decryptEchoString))
                        {                            if (!string.IsNullOrEmpty(decryptEchoString))
                            {
                                HttpContext.Current.Response.Write(decryptEchoString);
                                HttpContext.Current.Response.End();
                            }
                        } 
                        #endregion

認(rèn)証コード部門は以下の通りです。

        /// <summary>
        /// 驗(yàn)證企業(yè)號(hào)簽名        /// </summary>
        /// <param name="token">企業(yè)號(hào)配置的Token</param>
        /// <param name="signature">簽名內(nèi)容</param>
        /// <param name="timestamp">時(shí)間戳</param>
        /// <param name="nonce">nonce參數(shù)</param>
        /// <param name="corpId">企業(yè)號(hào)ID標(biāo)識(shí)</param>
        /// <param name="encodingAESKey">加密鍵</param>
        /// <param name="echostr">內(nèi)容字符串</param>
        /// <param name="retEchostr">返回的字符串</param>
        /// <returns></returns>
        public bool CheckSignature(string token, string signature, string timestamp, string nonce, string corpId, string encodingAESKey, string echostr, ref string retEchostr)
        {
            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAESKey, corpId);            int result = wxcpt.VerifyURL(signature, timestamp, nonce, echostr, ref retEchostr);            if (result != 0)
            {
                LogTextHelper.Error("ERR: VerifyURL fail, ret: " + result);                return false;
            }            return true;
        }

3. エンタープライズアカウントのメッセージ処理

上で紹介したように、WeChat エンタープライズアカウントの URL の検証プロセスには、別のメッセージ処理プロセスがあります。つまり、WeChat サーバーがメッセージを獨(dú)自のアプリケーションに送信します。処理用サーバー 処理プロセス中、アプリケーション サーバーはメッセージを受信した後、タイムリーに定期的な応答処理を?qū)g行する必要があります。

それが以下のコードロジックです。

                    if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
                    {                        using (Stream stream = HttpContext.Current.Request.InputStream)
                        {
                            Byte[] postBytes = new Byte[stream.Length];
                            stream.Read(postBytes, 0, (Int32)stream.Length);
                            postString = Encoding.UTF8.GetString(postBytes);
                        }                        if (!string.IsNullOrEmpty(postString))
                        {
                            Execute(postString, accountInfo);
                        }
                    }

同様に、WeChat サーバーへのメッセージに応答するときも、対応するパラメーターを取得して、メッセージ応答を構(gòu)築する必要があります。

            string echoString = HttpContext.Current.Request.QueryString["echoStr"];            string signature = HttpContext.Current.Request.QueryString["msg_signature"];//企業(yè)號(hào)的 msg_signature
            string timestamp = HttpContext.Current.Request.QueryString["timestamp"];            string nonce = HttpContext.Current.Request.QueryString["nonce"];

その他のパラメーター情報(bào)は、エンタープライズ アカウントの構(gòu)成パラメーターから取得されます。

            //獲取配置參數(shù)并對(duì)加解密函數(shù)初始化
            string CorpToken = accountInfo.Token;            string AESKey = accountInfo.EncodingAESKey;            string CorpId = accountInfo.CorpID;

次に、WeChat が提供するメッセージ暗號(hào)化および復(fù)號(hào)化クラスを使用して、メッセージを正常に暗號(hào)化および復(fù)號(hào)化します。具體的なオペレーションコードは以下の通りです。

            //根據(jù)參數(shù)信息,初始化微信對(duì)應(yīng)的消息加密解密類
            WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(CorpToken, AESKey, CorpId);            //對(duì)收到的密文進(jìn)行解析處理
            string sMsg = "";  // 解析之后的明文
            int flag = wxcpt.DecryptMsg(signature, timestamp, nonce, postStr, ref sMsg);            if (flag == 0)
            {                //LogTextHelper.Info("記錄解密后的數(shù)據(jù):");                //LogTextHelper.Info(sMsg);//記錄解密后的數(shù)據(jù)
                CorpApiDispatch dispatch = new CorpApiDispatch();                string responseContent = dispatch.Execute(sMsg);                //加密后并發(fā)送                //LogTextHelper.Info(responseContent);
                string encryptResponse = "";
                timestamp = DateTime.Now.DateTimeToInt().ToString();
                wxcpt.EncryptMsg(responseContent, timestamp, nonce, ref encryptResponse, ref signature);

                HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
                HttpContext.Current.Response.Write(encryptResponse);
            }            else
            {
                LogTextHelper.Info("解密消息失??!");
            }

最後に、統(tǒng)合処理のために、復(fù)號(hào)化されたメッセージを?qū)潖辘工毳抓互牖楗工硕嗓工坤堡扦埂?

                CorpApiDispatch dispatch = new CorpApiDispatch();                string responseContent = dispatch.Execute(sMsg);

このようにして、Enterprise API をカプセル化するときは、メッセージに応答する方法のロジックのみに集中する必要があり、殘りのことについて心配する必要はありません。

WeChat ポータルの C# 開(kāi)発と、WeChat エンタープライズ アカウントの受信、メッセージとイベントの処理と復(fù)號(hào)化のアプリケーションの詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトに注目してください。

C# は WeChat ポータルを開(kāi)発し、WeChat エンタープライズ アカウントを使用してメッセージとイベントを受信、処理、復(fù)號(hào)化します。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)