【移动应用开发技术】如何使用C#开发微信_第1页
【移动应用开发技术】如何使用C#开发微信_第2页
【移动应用开发技术】如何使用C#开发微信_第3页
【移动应用开发技术】如何使用C#开发微信_第4页
【移动应用开发技术】如何使用C#开发微信_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】如何使用C#开发微信

这篇文章主要介绍如何使用C#开发微信,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.必须有微信公众账号2.你也可以申请测试微信号,链接给你/debug/cgi-bin/sandbox?t=sandbox/login然后,建立mvc,你只需要点几下vs就帮你搞定了。这不废话接着,要创建一个一般处理程序,随便起个名字,测试通过才是重点,抓紧时间……///

<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;

}这代码相当于是跟微信公众号中【开发】--》【基本配置】里面你所写的Token一个一对一令牌通信握手,只要互相通了,那么你就算是搞定了!搞定是后话,还有工作没做完,接着写!怎么配置,这是问题,哎只能用花生壳给测试先,至少要知道玩了半天是不是通的!看下图:左边花生壳配置右边iis网站发布绑定看到这图,你也明白下一步怎么玩了吧。本地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上面一个发送,一个接收,还是在WhApi.ashx处理程序文件里面。我就想说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论