検索
ホームページWeChat アプレットWeChatの開発C# WeChat 開発手順の使用の概要

C# WeChat 開発手順の使用の概要

Mar 15, 2017 pm 05:05 PM
c#WeChatの開発

この記事は主に誰でも使用できるようにするためのものです C#WeChat の開発手順を詳細に説明しています。興味のある友人は参照してください

くだらない話をしたくありません。エッセイを書くのはあなたに任されているので、マスターの皆様、それを見ても文句を言わないでください...
1. WeChat 公開アカウントが必要です
2. テスト WeChat アカウントを申請することもできます。 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
その後、数回クリックするだけで mvc が作成されます。自分のためにやれ。これはナンセンスではありません
次に、一般的な処理プログラムを作成する必要があります。適当に名前を付けます。テストに合格することが重要です。急いでください...

/// <summary>
 /// 验证微信签名
 /// </summary>
 /// <returns></returns>
 /// * 将token、timestamp、nonce三个参数进行字典序排序
 /// * 将三个参数字符串拼接成一个字符串进行sha1加密
 /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
 private bool CheckSignature()
 {
 var token = "token"; 
 var signature = HttpContext.Current.Request.QueryString["signature"];
 var timestamp = HttpContext.Current.Request.QueryString["timestamp"];
 var nonce = HttpContext.Current.Request.QueryString["nonce"];
 var echostr = HttpContext.Current.Request.QueryString["echostr"];
 string[] ArrTmp = { token, timestamp, nonce };
 Array.Sort(ArrTmp); //字典排序
 var tmpStr = string.Join("", ArrTmp);
 tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//加密方式

 if (tmpStr.ToLower() == signature)
 {
 return true;
 }
 return false;
 }

このコードは、[開発] に相当します。 WeChat公式アカウントで--》 【基本構成】 書き込んだトークンは1対1のトークン通信ハンドシェイクで通信できれば完了です。

終わらせるのは後回し、やるべきことはまだある、書き続けましょう!
どうやって設定するのですか? これが問題です。少なくとも、長時間プレイした後に動作するかどうかを確認する必要があります。
下の図を見てください: 左側はピーナッツ シェルの構成-----右側はバインディングを公開しているiis Webサイトです

C# WeChat 開発手順の使用の概要

この図を見ると、次のステップのプレイ方法がわかります。ローカル iis にはドメイン名が付いています。これは本当に素晴らしいです…
以下。コードを追加していきます。送信テストと自動応答テストを設定して、

 #region 接收消息
 /// <summary>
 /// 接收微信发送的XML消息并且解析
 /// </summary>
 private void ReceiveXml()
 {
 var requestStream = HttpContext.Current.Request.InputStream;
 var requestByte = new byte[requestStream.Length];
 requestStream.Read(requestByte, 0, (int)requestStream.Length);
 var requestStr = Encoding.UTF8.GetString(requestByte);

 if (!string.IsNullOrEmpty(requestStr))
 {
 //封装请求类
 var requestDocXml = new XmlDocument();
 requestDocXml.LoadXml(requestStr);
 var rootElement = requestDocXml.DocumentElement;
 if (rootElement == null) return;
 var wxXmlModel = new WxXmlModel
 {
  ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
  FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
  CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
  MsgType = rootElement.SelectSingleNode("MsgType").InnerText
 };

 switch (wxXmlModel.MsgType)
 {
  case "text"://文本
  wxXmlModel.Content = rootElement.SelectSingleNode("Content").InnerText;
  break;
  case "image"://图片
  wxXmlModel.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
  break;
  case "event"://事件
  wxXmlModel.Event = rootElement.SelectSingleNode("Event").InnerText;
  if (wxXmlModel.Event != "TEMPLATESENDJOBFINISH")//关注类型
  {
  wxXmlModel.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
  }
  break;
  default:
  break;
 }

 ResponseXML(wxXmlModel);//回复消息
 }
 }
 #endregion

 #region 回复消息
 private void ResponseXML(WxXmlModel WxXmlModel)
 {
 var QrCodeApi = new QrCodeApi();
 var XML = "";
 switch (WxXmlModel.MsgType)
 {
 case "text"://文本回复
  XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.Content);
  break;
 case "event":
  switch (WxXmlModel.Event)
  {
  case "subscribe":
  if (string.IsNullOrEmpty(WxXmlModel.EventKey))
  {
  XML = ResponseMessage.GetText(WxXmlModel.FromUserName, WxXmlModel.ToUserName, "关注成功");
  }
  else
  {
  XML = ResponseMessage.SubScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//扫描带参数二维码先关注后推送事件
  }
  break;
  case "SCAN":
  XML = ResponseMessage.ScanQrcode(WxXmlModel.FromUserName, WxXmlModel.ToUserName, WxXmlModel.EventKey);//扫描带参数二维码已关注 直接推送事件
  break;
  }
  break;
 default://默认回复
  break;
 }
 HttpContext.Current.Response.Write(XML);
 HttpContext.Current.Response.End();
 }
 #endregion

を再生できるかどうかを確認します。上記の 1 つは送信で、もう 1 つは受信であり、まだ WhApi.ashx ハンドラー ファイル内にあります。はっきりさせておきたいのですが(笑)!
パブリック プラットフォームとのハンドシェイクが成功したので、試しに何かを送信する必要がありますね~~
下の図は、受信方法と自動マッチング返信ファイルの関連付けを示しています。心配しないでください。これを アップロードします。以下のファイルです!

C# WeChat 開発手順の使用の概要

まだ構成が 1 つありません。つまり、VS は [Debug]----[プロセスにアタッチ] を設定する必要があります。[すべてのユーザー プロセスを表示] の下のボックスをチェックするだけです。 w3wp .exe を見つけることができます このようなプロセスが複数ある場合は、[ユーザー名] 列を確認し、プログラム プールと同じ名前のプロセスを選択し、[OK] をクリックして、[添付] をクリックして、添付ファイルを確認する必要があります。
次へ。楽しいです……………………………………………………
WeChat でテスト公開アカウントをスキャンし、カスタム メッセージを送信して、どのような返信があるかを確認します。上記の面倒な設定は、デバッグ用にブレークポイントを追加することもできます。そうでない場合は、それほど多くのことを行う意味がありません。送信と受信が設定した内容と一致していることを確認するだけで問題ありません。

以上がC# WeChat 開発手順の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 中国語版

SublimeText3 中国語版

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

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。