>  기사  >  위챗 애플릿  >  asp.net을 사용하여 WeChat 공개 플랫폼을 개발하여 사용자 메시지를 얻고 처리합니다.

asp.net을 사용하여 WeChat 공개 플랫폼을 개발하여 사용자 메시지를 얻고 처리합니다.

高洛峰
高洛峰원래의
2017-03-15 16:59:411911검색

이 글에서는 주로 asp.net의 사용법을 소개합니다. WeChat 공개 플랫폼을 개발하여 사용자 메시지를 얻고 이를 처리하는 방법에 대한 관련 정보는 도움이 필요한 친구가

사용자 메시지 받기

사용자가 보낸 메시지를 참조할 수 있습니다. WeChat 서버에 전송된 HTTP POST 요청에 포함되어 있으며, 사용자가 보낸 메시지를 얻으려면 POST 요청

의 데이터 스트림에서 가져와야 합니다. WeChat 서버가 메시지를 서버로 푸시합니다

POST /cgi-bin/wxpush?msg_signature=477715d11cdb4164915debcba66cb864d751f3e6&timestamp=1409659813&nonce=1372623149 HTTP/1. 1

호스트: qy .weixin.qq.com

POST 요청에서 데이터 가져오기

asp.net을 사용하여 WeChat 공개 플랫폼을 개발하여 사용자 메시지를 얻고 처리합니다.

이런 방식으로 얻은 사용자 메시지는 두 가지 상황에 있을 수 있습니다. : 암호화된 메시지 또는 암호화되지 않은 메시지. 이는 WeChat 공개 플랫폼에서 웹사이트를 구성할 때 메시지 암호화 및 암호 해독 모드 선택과 관련됩니다. 일반 텍스트 모드를 선택하면 암호화되지 않습니다. , 암호 텍스트와 일반 텍스트가 모두 존재하게 됩니다. 안전 모드 를 선택하면 사용자 메시지가 암호화되므로 추가 처리 전에 암호를 해독해야 합니다

2. 사용자 메시지에 답장

WeChat 공개 플랫폼 개발 문서 참조

•문자 메시지

<xml> 
<ToUserName><![CDATA[{0}]]></ToUserName> 
<FromUserName><![CDATA[{1}]]></FromUserName> 
<CreateTime>{2}</CreateTime> 
<MsgType><![CDATA[text]]></MsgType> 
<Content><![CDATA[{3}]]></Content> 
</xml>


사진메시지

<xml> 
<ToUserName><![CDATA[{0}]]></ToUserName> 
<FromUserName><![CDATA[{1}]]></FromUserName> 
<CreateTime>{2}</CreateTime> 
<MsgType><![CDATA[image]]></MsgType> 
<Image> 
<MediaId><![CDATA[{3}]]></MediaId> 
</Image> 
</xml>

메시지 형식이 이미 있으므로 해당 매개변수만 설정하면 됩니다.

responseContent = string.Format(ReplyType.Message_Text, 
 FromUserName.InnerText, 
 ToUserName.InnerText, 
DateTime.Now.Ticks, 
String.IsNullOrEmpty(reply)?"Sorry,I can not follow you." :reply);

3. 사용자 메시지 및 서버 메시지의 암호화 및 복호화

WeChat 공개 플랫폼 개발자 문서는 다음에서 암호화 및 복호화 예제를 제공합니다. C++, C#, java 등 다양한 언어를 사용합니다. C#을 사용하며 프로젝트에 두 개의 파일만 추가하면 됩니다. Sample.cs는 WeChat 팀에서 제공하는 샘플 코드입니다. 을 참조할 필요가 없습니다.

WXBizMsg

Crypt.cs 및 Cryptography.cs 파일에 대한 참조를 추가하면 됩니다. WeChatSecurityHelper

클래스와 각각 두 가지 메소드를 정의했습니다. 암호화(EncryptMsg)와 복호화(DecryptMsg)를 수행하려면 WXBizMsgCrypt

객체를 생성하고 해당 메소드를 호출하여 암호화 및 복호화할 수 있습니다. 코드 예시에서 확인하세요

asp.net을 사용하여 WeChat 공개 플랫폼을 개발하여 사용자 메시지를 얻고 처리합니다.

WeChatSecurityHelper


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Common
{
  public class WeChatSecurityHelper
  {
    /// <summary>
    /// 定义Token,与微信公共平台上的Token保持一致
    /// </summary>
    private const string Token = "StupidMe";
    /// <summary>
    /// AppId 要与 微信公共平台 上的 AppId 保持一致
    /// </summary>
    private const string AppId = "11111111111";
    /// <summary>
    /// 加密用 
    /// </summary>
    private const string AESKey = "pvX2KZWRLQSkUAbvArgLSAxCwTtxgFWF3XOnJ9iEUMG";

    private static Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(Token, AESKey, AppId);
    private string signature,timestamp,nonce;
    private static LogHelper logger = new LogHelper(typeof(WeChatSecurityHelper));


    public WeChatSecurityHelper(string signature, string timestamp, string nonce)
    {
      this.signature = signature;
      this.timestamp = timestamp;
      this.nonce = nonce;
    }

    /// <summary>
    /// 加密消息
    /// </summary>
    /// <param name="msg">要加密的消息</param>
    /// <returns>加密后的消息</returns>
    public string EncryptMsg(string msg)
    {
      string encryptMsg="";
      int result = wxcpt.EncryptMsg(msg, timestamp, nonce, ref encryptMsg);
      if (result == 0)
      {
        return encryptMsg;
      }
      else
      {
        logger.Error("消息加密失败");
        return "";
      }
    }

    /// <summary>
    /// 解密消息
    /// </summary>
    /// <param name="msg">消息体</param>
    /// <returns>明文消息</returns>
    public string DecryptMsg(string msg)
    {
      string decryptMsg = "";
      int result = wxcpt.DecryptMsg(signature, timestamp, nonce, msg,ref decryptMsg);
      if (result != 0)
      {
        logger.Error("消息解密失败,result:"+result);
      }
      return decryptMsg;
    }
  }
}

위는 전체 내용입니다 이 기사가 마음에 드셨으면 좋겠습니다.

위 내용은 asp.net을 사용하여 WeChat 공개 플랫폼을 개발하여 사용자 메시지를 얻고 처리합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.