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

ホームページ WeChat アプレット WeChatの開発 WeChat 開発をソース コードから分析します。

WeChat 開発をソース コードから分析します。

May 05, 2017 am 10:49 AM

この2日間、プロジェクトはWeChat上でインターフェースを開く必要があったので、そのプロセスは非常に困難でしたが、結(jié)果は理想的でした。次に、WeChatを開発する際に注意する必要があることを紹介します。

1、アカウントの問題

/* まず第一に、パブリックプラットフォームを選択する必要があります(オープンプラットフォームはアプリケーション統(tǒng)合用のようです、私はこれを注意深く勉強(qiáng)していません、誰かが知っていれば幸いです)教えてください), パブリックプラットフォームにアカウントを登録する必要があります。アカウントには個人タイプとエンタープライズタイプの 2 種類があり、個人タイプはサブスクリプションアカウントのみを申請できます。サービス アカウントを取得するユーザーが送ったメッセージに別の內(nèi)容で返信したら、あとは寢るだけです。 */

開発に攜わっている人なら誰でも上記の段落の意味を知っています。今日サブスクリプション アカウントにログインしたところ、サブスクリプション アカウントにも高度な機(jī)能があることがわかりました。その時點(diǎn)でのレビューはOK、次の共有を妨げるものではありません。

2、開発モード

サービスアカウントを取得すると、機(jī)能に高度な機(jī)能があることがわかります(サブスクリプションアカウントには高度な機(jī)能オプションはありません)。どの方法をアクティブ化するかを選択できます?,F(xiàn)在、開発と編集のために開始できるのは 1 つだけです。

3、サーバーを構(gòu)成する

WeChatインターフェイスにはURLが1つだけあり、このURL(GETまたはPOST)を介してサーバーに接続されるすべてのデータは、このインターフェイスを使用する必要があります。以下の2つについて説明します。 . 使用場所。

4、サーバーを確認(rèn)します

サーバーの URL を入力すると、WeChat は URL にアクセスするためのいくつかのパラメーターを提供します。特定のメソッドについては、これを確認(rèn)することもできます。 //mp.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%97

接続中 phpコードがいくつかあります參考までに、私のコードを以下に載せておきます。かなり寄り道したので、できるだけ完全に載せてみました

 1         /// <summary> 2         /// 驗(yàn)證微信簽名 3         /// </summary> 4         /// <param name="sigNature">微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。</param> 5         /// <param name="timestamp">時間戳</param> 6         /// <param name="nonce">隨機(jī)數(shù)</param> 7         /// <param name="echoStr">隨機(jī)字符串</param> 8         /// <returns>開發(fā)者通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。</returns> 9         [System.Web.Http.AcceptVerbs("GET")]10         [System.Web.Http.ActionName("Api")]11         [ApiExplorerSettings(IgnoreApi = false)]12         public HttpResponseMessage CheckSignature(string sigNature, string timestamp, string nonce, string echoStr)13         {14             var content =15                    string.Format("SigNature:{0}\nTimestamp:{1}\nNonce:{2}\nEchoStr:{3}",16                                  sigNature, timestamp, nonce, echoStr);17             logger.Debug(content);    // 此處的log你可以刪掉18 19             var list = new string[] { timestamp, nonce, TOKEN };20             Array.Sort(list);21             var tmpArr = string.Join("", list);22             var tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpArr, "SHA1").ToLower();23 24             if (tmpStr == sigNature && !string.IsNullOrEmpty(echoStr))     //根據(jù)微信的驗(yàn)證規(guī)則做判斷25                 return Tools.GetReturn(echoStr);26 27             return Tools.GetReturn("error");28         }

GetReturn関數(shù)を書いた理由はMVCだからです。文字列を返すたびに、WeChat はまだ愚かで、文字列を認(rèn)識しません。 。 。 。この関數(shù)は主に MVC カプセル化を削除するためのものです

1      public static HttpResponseMessage GetReturn(string message)2         {3             return new HttpResponseMessage4                 {5                     Content = new StringContent(message, Encoding.UTF8, "text/html")6                 };7         }
上記の CheckSignature は、主に WeChat サービスを検証するために使用される GET インターフェイスです

もちろん、WeChat が言ったことを注意深く調(diào)べれば、それがいつであるかを見つけることもできます。 echoStr を受け取った場合は、追加の検証手順を行わずに直接返しても問題ありません。

5、メッセージ受信インターフェース ユーザーがメッセージを送信

するとき、私は 1 つの機(jī)能だけに注目し、テキスト メッセージだけに注目します。他のタイプのメッセージも同様です)。

ここでいくつかの點(diǎn)に注意する必要があります:

a. このインターフェースの ActionName は、上で検証したインターフェースと同じです。このように、外部では同じ URL にアクセスしますが、アクセスされるメソッドは異なります。

1         [System.Web.Http.AcceptVerbs("POST")]2         [System.Web.Http.ActionName("Api")]3         [ApiExplorerSettings(IgnoreApi = false)]4         public HttpResponseMessage ReceiveMessage()

b. 私はこのメッセージコンテンツを取得する方法を見つけるまで長い間研究してきましたが、大変な労力がかかりました。

1   var message = Request.Content.ReadAsStringAsync().Result;

c. このインターフェイスでは、彼はたくさんの

変數(shù)

をPOSTし、私はそれらを取得するために正規(guī)表現(xiàn)を使用しました

1             var toUserName = GetItemValue(message, ToUserNameReg);2             var fromUserName = GetItemValue(message, FromUserNameReg);3             var createTime = GetItemValue(message, CreateTimeReg);4             var msgType = GetItemValue(message, MsgTypeReg);5             var content = GetItemValue(message, ContentReg);6             var msgId = GetItemValue(message, MsgIdReg);7             var eventStr = GetItemValue(message, EventReg);8             var eventKey = GetItemValue(message, EventKeyReg);
d 私はイベントとテキスト、イベントの2種類のイベント

だけに注目します。誰かのフォローを解除するには、送信されたテキストに対して感謝の意を表明する必要があります。返信の內(nèi)容を確認(rèn)する必要があります。

            switch (msgType)
            {                case "text":
                    {
                    }                case "event":
                    {
                    }                default:                    return Tools.GetReturn("error");
            }
、すべてのコードはここにあります:
1         private static readonly Regex ToUserNameReg = new Regex(@"(?<=<ToUserName><!\[CDATA\[).*?(?=\]\]></ToUserName>)", RegexOptions.Compiled);2         private static readonly Regex FromUserNameReg = new Regex(@"(?<=<FromUserName><!\[CDATA\[).*?(?=\]\]></FromUserName>)", RegexOptions.Compiled);3         private static readonly Regex CreateTimeReg = new Regex(@"(?<=<CreateTime>)\d*?(?=</CreateTime>)", RegexOptions.Compiled);4         private static readonly Regex MsgTypeReg = new Regex(@"(?<=<MsgType><!\[CDATA\[).*?(?=\]\]></MsgType>)", RegexOptions.Compiled);5         private static readonly Regex ContentReg = new Regex(@"(?<=<Content><!\[CDATA\[).*?(?=\]\]></Content>)", RegexOptions.Compiled);6         private static readonly Regex MsgIdReg = new Regex(@"(?<=<MsgId>)\d*?(?=</MsgId>)", RegexOptions.Compiled);7         private static readonly Regex EventReg = new Regex(@"(?<=<Event><!\[CDATA\[).*?(?=\]\]></Event>)", RegexOptions.Compiled);8         private static readonly Regex EventKeyReg = new Regex(@"(?<=<EventKey><!\[CDATA\[).*?(?=\]\]></EventKey>)", RegexOptions.Compiled);
 1      /// <summary> 2         /// 接受微信消息,如果需要反饋,則調(diào)用回復(fù)接口進(jìn)行答復(fù) 3         /// </summary> 4         /// <param name="ToUserName">開發(fā)者微信號</param> 5         /// <param name="FromUserName">發(fā)送方帳號(一個OpenID)</param> 6         /// <param name="CreateTime">消息創(chuàng)建時間 (整型)</param> 7         /// <param name="MsgType">text</param> 8         /// <param name="Content">文本消息內(nèi)容</param> 9         /// <param name="MsgId">消息id,64位整型</param>10         /// <returns>successful or not</returns>11         [System.Web.Http.AcceptVerbs("POST")]12         [System.Web.Http.ActionName("Api")]13         [ApiExplorerSettings(IgnoreApi = false)]14         public HttpResponseMessage ReceiveMessage()15         {16             var message = Request.Content.ReadAsStringAsync().Result;17 18             var toUserName = GetItemValue(message, ToUserNameReg);19             var fromUserName = GetItemValue(message, FromUserNameReg);20             var createTime = GetItemValue(message, CreateTimeReg);21             var msgType = GetItemValue(message, MsgTypeReg);22             var content = GetItemValue(message, ContentReg);23             var msgId = GetItemValue(message, MsgIdReg);24             var eventStr = GetItemValue(message, EventReg);25             var eventKey = GetItemValue(message, EventKeyReg);26 27             var logStr = string.Format("Message:{8}\n\nToUserName:{0}\nFromUserName:{1}\nCreateTime:{2}\nMsgType:{3}\nContent:{4}\nMsgId:{5}\nEvent:{6}\nEventKey:{7}",28                         toUserName, fromUserName, createTime, msgType, content, msgId, eventStr, eventKey, message);29             logger.Debug(logStr);30 31             switch (msgType)32             {33                 case "text":34                     {35                         var returnMessage = Tools.GetCategory(content);  // 這塊是獲取反饋信息的方法,你的和我的應(yīng)該不一樣,所以這塊你得修改一下。36                         var sendMessage = GetSendMessage(fromUserName, returnMessage, toUserName);37                         logger.Debug("MsgId:" + msgId + Environment.NewLine + sendMessage);38 39                         return Tools.GetReturn(sendMessage);        // 這個函數(shù)在上面已經(jīng)貼出來了,在這塊就不在貼了40                     }41                 case "event":42                     {43                         if (eventStr == "subscribe")      // 關(guān)注事件44                         {45                             var returnMessage = "歡迎關(guān)注**賬號 [微笑]";46                             var sendMessage = GetSendMessage(fromUserName, returnMessage, toUserName);47                             return Tools.GetReturn(sendMessage);48                         }49                         return Tools.GetReturn("error");50                     }51                 default:52                     return Tools.GetReturn("error");53             }54         }
rree
 1      /// <summary> 2         /// 獲取消息體中正則所能匹配到的內(nèi)容 3         /// </summary> 4         /// <param name="message">消息內(nèi)容</param> 5         /// <param name="regex">正則</param> 6         /// <returns>返回正則匹配的所有內(nèi)容</returns> 7         [ApiExplorerSettings(IgnoreApi = true)] 8         private string GetItemValue(string message, Regex regex) 9         {10             if(regex.IsMatch(message))11                 return regex.Match(message).Value;12             return "";13         }
【関連推奨事項】

1. WeChat パブリック アカウント プラットフォームのソース コードのダウンロード

2. Xiaozhu CMS Lifetong O2O システム v2.0 専用バージョンのダウンロード

以上がWeChat 開発をソース コードから分析します。の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

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

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Linux での CURL バージョンの更新に関するチュートリアル! Linux での CURL バージョンの更新に関するチュートリアル! Mar 07, 2024 am 08:30 AM

Linux でカールのバージョンを更新するには、以下の手順に従います。 現(xiàn)在のカールのバージョンを確認(rèn)します。 まず、現(xiàn)在のシステムにインストールされているカールのバージョンを確認(rèn)する必要があります。ターミナルを開き、次のコマンドを?qū)g行します。curl --version このコマンドは、現(xiàn)在のcurlバージョン情報を表示します。利用可能なcurlのバージョンを確認(rèn)する:curlを更新する前に、利用可能な最新バージョンを確認(rèn)する必要があります。 Curl の公式 Web サイト (curl.haxx.se) または関連ソフトウェア ソースにアクセスして、curl の最新バージョンを見つけることができます。 Curl ソース コードをダウンロードする:curl またはブラウザを使用して、選択した CURL バージョンのソース コード ファイル (通常は .tar.gz または .tar.bz2) をダウンロードします。

Linux カーネルのソースコード配布の詳細(xì)な調(diào)査 Linux カーネルのソースコード配布の詳細(xì)な調(diào)査 Mar 15, 2024 am 10:21 AM

これは、Linux カーネルのソース コード配布を詳しく調(diào)査した 1500 ワードの記事です。スペースが限られているため、ここでは Linux カーネル ソース コードの組織構(gòu)造に焦點(diǎn)を當(dāng)て、読者の理解を深めるためにいくつかの具體的なコード例を示します。 Linux カーネルは、ソース コードが GitHub でホストされているオープン ソース オペレーティング システム カーネルです。 Linux カーネルのソース コード配布全體は非常に大きく、複數(shù)の異なるサブシステムとモジュールが関與する數(shù)十萬行のコードが含まれています。 Linux カーネルのソース コードをより深く理解するには

Javaのソースコードを表示する方法 Javaのソースコードを表示する方法 Dec 27, 2023 pm 04:41 PM

表示手順: 1. インストール ディレクトリを見つけるか、オンラインで表示します; 2. ソース コードを解凍します; 3. テキスト エディタまたは統(tǒng)合開発環(huán)境を使用します; 4. ソース コードに移動して表示します。詳細(xì)な紹介: 1. インストール ディレクトリを見つけるか、オンラインで表示します。JDK がインストールされている場合は、JDK インストール ディレクトリで Java ソース コードを見つけることができます。通常、JDK のインストール ディレクトリには、Java コア クラス ライブラリのソース コードを含む src.zip などの圧縮ファイルが存在し、Java ソース コードをオンラインなどで表示することもできます。

Linux カーネルのソース コードのストレージ パスの分析 Linux カーネルのソース コードのストレージ パスの分析 Mar 14, 2024 am 11:45 AM

Linux カーネルは、ソース コードが専用のコード リポジトリに保存されているオープン ソース オペレーティング システム カーネルです。この記事では、Linux カーネル ソース コードのストレージ パスを詳細(xì)に分析し、読者の理解を助けるために具體的なコード例を使用します。 1. Linux カーネル ソース コードの保存パス Linux カーネル ソース コードは、[https://github.com/torvalds/linux](http) でホストされている linux という Git リポジトリに保存されます。

Tomcat のソース コードを表示する方法 Tomcat のソース コードを表示する方法 Jan 25, 2024 pm 01:56 PM

Tomcat ソース コードを表示する手順: 1. Tomcat ソース コードをダウンロードする; 2. Tomcat ソース コードを IDEA にインポートする; 3. ソース コードを表示する; 4. Tomcat の動作原理を理解する; 5. コミュニティに參加して貢獻(xiàn)する; 6. 注意事項; 7. 継続的に學(xué)習(xí)して更新する; 8. ツールとプラグインを使用する。詳細(xì)な紹介: 1. Tomcat のソース コードをダウンロードするには、まず Tomcat のソース コードを入手する必要があり、Apache Tomcat の公式 Web サイトなどからソース コード パッケージをダウンロードできます。

PHP WeChat 開発: メッセージの暗號化と復(fù)號化を?qū)g裝する方法 PHP WeChat 開発: メッセージの暗號化と復(fù)號化を?qū)g裝する方法 May 13, 2023 am 11:40 AM

PHP は、Web 開発およびサーバーサイド プログラミング、特に WeChat 開発で広く使用されているオープン ソースのスクリプト言語です?,F(xiàn)在、ますます多くの企業(yè)や開発者が WeChat 開発に PHP を使用し始めています。これは、PHP が本當(dāng)に學(xué)びやすく、使いやすい開発言語となっているためです。 WeChat の開発では、メッセージの暗號化と復(fù)號化はデータのセキュリティに関わるため、非常に重要な問題となります。暗號化と復(fù)號化の方法を持たないメッセージの場合、ハッカーは簡単にデータを入手でき、ユーザーに脅威を與える可能性があります。

ソース コードを読んで、最新の PHP コード仕様の背後にある設(shè)計原則と目標(biāo)を理解するにはどうすればよいでしょうか? ソース コードを読んで、最新の PHP コード仕様の背後にある設(shè)計原則と目標(biāo)を理解するにはどうすればよいでしょうか? Sep 05, 2023 pm 02:46 PM

ソース コードを読んで、最新の PHP コード仕様の背後にある設(shè)計原則と目標(biāo)を理解するにはどうすればよいでしょうか?はじめに: 高品質(zhì)の PHP コードを作成する場合、特定のコーディング標(biāo)準(zhǔn)に従うことが非常に重要です。コード仕様により、コードの可読性、保守性、拡張性を向上させることができます。 PHP 言語には、PSR (PHPStandardsRecommendations) という広く採用されているコード仕様があります。この記事では、最新のPHPコード仕様のソースコードの見方を紹介します。

Javaソースコードの接尾辭は何ですか? Javaソースコードの接尾辭は何ですか? Dec 27, 2023 pm 04:31 PM

Java では、ソース コード ファイルの接尾辭は通常 .java です。 Java プログラムを作成すると、Java ソース コードを含む .java 接尾辭が付いたソース コード ファイルが作成されます。たとえば、単純な Java ソース コード ファイルには MyClass.java という名前を付けることができます。MyClass はクラス名、.java はファイルの接尾辭です。

See all articles