实用IT课程集锦微信运营与开发

微信企业号开发(1)——建立连接(上)

2015-09-15  本文已影响425人  说话的萝卜

连接微信企业号有三种方式

1、主动调用:主动调用是指企业应用调用企业号提供的接口,管理或查询企业号后台的资源、或给成员发送消息等

主动调用是最基本的连接模式,当调用企业号时,需要使用Https协议、Json数据格式、UTF8编码、访问域名为http://qyapi.weixin.qq.com,数据包不需要加密。

例如:

//获取企业号的部门

string url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token={0}&id={1}", accessToken, 1);

WebClient wc = new WebClient();

byte[] responseBytes = wc.DownloadData(url);

string responseStr = Encoding.UTF8.GetString(responseBytes);

//返回结果

/*

{"errcode":0,"errmsg":"ok","department":

[{"id":1,"name":"技术部","parentid":0,"order":200},

{"id":2,"name":"Android组","parentid":1,"order":200},

{"id":3,"name":"iOS组","parentid":1,"order":400},

{"id":4,"name":".net组","parentid":1,"order":600}]

}

*/

上面的例子,是获取企业号的部门,可以看到请求过程和返回结果,都是安装上面所说的格式。其中,我们需要注意一下access_token这个参数,这个参数是企业号的全局唯一票据,调用所有的接口都需要传入这个参数(如何获取我们会在后面看到)

2、回调模式:回调模式是指把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理

在回调模式下,企业应用不仅可以主动调用企业号接口,还可以处理用户发送的消息或事件。接收的消息使用XML数据格式、UTF8编码,并以AES方式加密。企业号的每个应用都有自己的回调模式开关,设置好相关参数后,此应用的回调模式才会生效。

例如:

public void ProcessRequest(HttpContext context)

{

int ret = 0;

WXBizMsgCrypt wxcpt=new WXBizMsgCrypt(token,encodingAESKey,corpId);

if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")

{

string msg="";

string postStr = string.Empty;

using (System.IO.Stream stream = HttpContext.Current.Request.InputStream)

{

byte[] postBytes = new Byte[stream.Length];

stream.Read(postBytes, 0, (Int32)stream.Length);

postStr = System.Text.Encoding.UTF8.GetString(postBytes);//将返回的数据用UTF8解码

//接收数据不为空

if (!string.IsNullOrEmpty(postStr))

{

//将接收的数据用AES解密,微信提供的方法

ret = wxcpt.DecryptMsg(signature, timestamp, nonce, postStr, ref msg);

if (ret != 0)

{

HttpContext.Current.Response.Write("ERR:VeriyURL fail,ret:" + ret);

return;

}

//由于接收信息是xml格式的,将其读取到xml文档中

System.Xml.XmlDocument doc = new System.Xml.XmlDocument();

doc.LoadXml(msg);

System.Xml.XmlNode root = doc.FirstChild;

string UserOID = root["FromUserName"].InnerText;

string msgType = root["MsgType"].InnerText;

//判断接收数据是一个Text类型的

if (msgType.ToLower() == "text")

{

string content = root["Content"].InnerText;

//将消息内容回发给用户

SendMessage(content);

}

}

};

}

}

上面的例子是将接收到用户发的文字消息再回发给用户,其中传输的数据格式正如上面所说的那样。SendMessage是一个自定义方法,会在以后讲到

3、JSAPI模式:JSAPI模式是指在使用Html5开发的时候,可以直接调用微信提供的原生接口,使用微信开放的终端能力。

在JSAPI模式里,微信提供了微信JS-SDK,通过使用它,web开发者可以借助微信高效的使用拍照、选图、语音、位置等手机系统能力,同时可以直接使用微信分享、扫一扫等微信特有能力。

上一篇下一篇

猜你喜欢

热点阅读