C# WeChat パブリック アカウント開発 WeChat イベント インタラクション

高洛峰
リリース: 2017-01-17 10:42:51
オリジナル
1258 人が閲覧しました

前書き

すべての準備ができたら、まず公開アカウントをフォローしてから、クライアントにメッセージをプッシュします。注意を払ってメッセージをプッシュするには、get リクエストと post リクエストが必要です。get リクエストは主に WeChat サーバーとの検証を目的とし、post リクエストは主に WeChat メッセージを処理します。 インターフェース調整時に渡すappidとappsecretには、公式アカウントに対応したパラメータを渡してください。

WeChat イベント インタラクション

WeChat イベント インタラクションは、主に XML データ パケットを WeChat サーバーにプッシュします

C#微信公众号开发 微信事件交互

コードを見てください

[HttpGet]
[ActionName("Index")]
public ActionResult Get(string signature,string timestamp,string nonce,string echostr)
{
  if (CheckSignature.Check(signature, timestamp, nonce, token))
  {
    return Content(echostr);
  }
  else
  {
    return Content("err");
  }
ログイン後にコピー
[HttpPost]
[ActionName("Index")]
public ActionResult Get(string signature, string timestamp, string nonce)
{
   StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8);
   XmlDocument doc = new XmlDocument();
   doc.Load(sr);
   sr.Close();
   sr.Dispose();
  
   WxMessage wxMessage = new WxMessage();
   wxMessage.ToUserName = doc.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;
   wxMessage.FromUserName = doc.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;
   wxMessage.MsgType = doc.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;
   wxMessage.CreateTime = int.Parse(doc.SelectSingleNode("xml").SelectSingleNode("CreateTime").InnerText);
  
   if (wxMessage.MsgType == "event")
   {
     wxMessage.EventName = doc.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;
     if (!string.IsNullOrEmpty(wxMessage.EventName) && wxMessage.EventName == "subscribe")
     {
       string content = "您好,欢迎访问garfieldzf8测试公众平台";
       content = SendTextMessage(wxMessage, content);
       return Content(content);
    }
  }
      return Content("");
}
  
  
private string SendTextMessage(WxMessage wxmessage,string content)
{
   string result = string.Format(Message, wxmessage.FromUserName,wxmessage.ToUserName,DateTime.Now.Ticks, content);
   return result;
}
  
  
 public string Message
 {
   get
   {
     return @"<xml>
           <ToUserName><![CDATA[{0}]]></ToUserName>
           <FromUserName><![CDATA[{1}]]></FromUserName>
           <CreateTime>{2}</CreateTime>
           <MsgType><![CDATA[text]]></MsgType>
           <Content><![CDATA[{3}]]></Content>
         </xml>";
      }
  }
ログイン後にコピー
public class WxMessage
 {
    public string ToUserName { get; set; }
    public string FromUserName { get; set; }
    public long CreateTime { get; set; }
  
    public string Content { get; set; }
    public string MsgType { get; set; }
    public string EventName { get; set; }
    public string EventKey { get; set; }
 }
ログイン後にコピー

概要

WeChat インターフェイスの開発中にデバッグすることはできません。問題を解決するには、重要な場所にログを保管する必要があります。

WeChat イベント インタラクションは主に、WeChat によって送信された XML データ パケットを分析し、XML を解析し、メッセージで指定された形式に従って XML を結合して応答に送信します。 Getメソッドで使用されるCheckSignatureは、Shengpai WeChat SDKのクラスであり、署名検証用です。

主に、クライアントにメッセージを送信するときの ToUserName と FromUserName。最初に 2 つのパラメータを逆に書いたため、クライアントがメッセージを受信できなくなりました。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

C# WeChat パブリック アカウント開発および WeChat イベント インタラクション関連記事の詳細については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート