知识点
相关文章
更多最近更新
更多.NET 微信开放平台接口
2019-03-02 00:55|来源: 网路
<%@ WebHandler Language=
"C#"
Class=
"WeixinInterface"
%>
using
System;
using
System.Web;
public
class
WeixinInterface : IHttpHandler
{
HttpContext context =
null
;
string
postStr =
""
;
public
void
ProcessRequest(HttpContext param_context)
{
context = param_context;
//以写日志为荣,以打断点为耻.
//WriteLog("before valid \n");
//valid();//用于验证
//WriteLog("after valid, before post \n");
if
(context.Request.HttpMethod.ToLower() ==
"post"
)
{
System.IO.Stream s = context.Request.InputStream;
byte
[] b =
new
byte
[s.Length];
s.Read(b, 0, (
int
)s.Length);
postStr = System.Text.Encoding.UTF8.GetString(b);
if
(!
string
.IsNullOrEmpty(postStr))
{
responseMsg(postStr);
}
//WriteLog("-------AfterResponseMsg:-------\n" + postStr);
}
}
public
void
valid()
{
var echostr = context.Request[
"echoStr"
].ToString();
if
(checkSignature() && !
string
.IsNullOrEmpty(echostr))
{
context.Response.Write(echostr);
context.Response.End();
//推送...不然微信平台无法验证token
}
}
public
bool
checkSignature()
{
var signature = context.Request[
"signature"
].ToString();
var timestamp = context.Request[
"timestamp"
].ToString();
var nonce = context.Request[
"nonce"
].ToString();
var token =
"faketoken"
;
string
[] ArrTmp = { token, timestamp, nonce };
Array.Sort(ArrTmp);
//字典排序
string
tmpStr =
string
.Join(
""
, ArrTmp);
tmpStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr,
"SHA1"
);
tmpStr = tmpStr.ToLower();
if
(tmpStr == signature)
{
return
true
;
}
else
{
return
false
;
}
}
public
string
GetSha1(System.Collections.Generic.List<
string
> codelist)
{
codelist.Sort();
var combostr =
string
.Empty;
for
(
int
i = 0; i < codelist.Count; i++)
{
combostr += codelist[i];
}
return
EncryptToSHA1(combostr);
}
public
string
EncryptToSHA1(
string
str)
{
System.Security.Cryptography.SHA1CryptoServiceProvider sha1 =
new
System.Security.Cryptography.SHA1CryptoServiceProvider();
byte
[] str1 = System.Text.Encoding.UTF8.GetBytes(str);
byte
[] str2 = sha1.ComputeHash(str1);
sha1.Clear();
(sha1
as
IDisposable).Dispose();
return
Convert.ToBase64String(str2);
}
public
void
responseMsg(
string
postStr)
{
System.Xml.XmlDocument postObj =
new
System.Xml.XmlDocument();
postObj.LoadXml(postStr);
WriteLog(
"responseMsg:-------"
+ postStr);
var FromUserNameList = postObj.GetElementsByTagName(
"FromUserName"
);
string
FromUserName =
string
.Empty;
for
(
int
i = 0; i < FromUserNameList.Count; i++)
{
if
(FromUserNameList[i].ChildNodes[0].NodeType == System.Xml.XmlNodeType.CDATA)
{
FromUserName = FromUserNameList[i].ChildNodes[0].Value;
}
}
var toUsernameList = postObj.GetElementsByTagName(
"ToUserName"
);
string
ToUserName =
string
.Empty;
for
(
int
i = 0; i < toUsernameList.Count; i++)
{
if
(toUsernameList[i].ChildNodes[0].NodeType == System.Xml.XmlNodeType.CDATA)
{
ToUserName = toUsernameList[i].ChildNodes[0].Value;
}
}
var keywordList = postObj.GetElementsByTagName(
"Content"
);
string
Content =
string
.Empty;
for
(
int
i = 0; i < keywordList.Count; i++)
{
if
(keywordList[i].ChildNodes[0].NodeType == System.Xml.XmlNodeType.CDATA)
{
Content = keywordList[i].ChildNodes[0].Value;
}
}
var time = DateTime.Now;
var textpl =
"<xml><ToUserName><![CDATA["
+ FromUserName +
"]]></ToUserName>"
+
"<FromUserName><![CDATA["
+ ToUserName +
"]]></FromUserName>"
+
"<CreateTime>"
+ ConvertDateTimeInt(DateTime.Now) +
"</CreateTime><MsgType><![CDATA[text]]></MsgType>"
+
"<Content><![CDATA[欢迎来到微信世界---"
+ Content +
"]]></Content><FuncFlag>0</FuncFlag></xml> "
;
context.Response.Write(textpl);
context.Response.End();
}
private
DateTime UnixTimeToTime(
string
timeStamp)
{
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(
new
DateTime(1970, 1, 1));
long
lTime =
long
.Parse(timeStamp +
"0000000"
);
TimeSpan toNow =
new
TimeSpan(lTime);
return
dtStart.Add(toNow);
}
private
int
ConvertDateTimeInt(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(
new
System.DateTime(1970, 1, 1));
return
(
int
)(time - startTime).TotalSeconds;
}
private
void
WriteLog(
string
strMemo)
{
string
filename =
"D:/WEBHOME/logs/log.txt"
;
if
(!System.IO.Directory.Exists(
"D:/WEBHOME/logs/"
))
System.IO.Directory.CreateDirectory(
"D:/WEBHOME/logs/"
);
System.IO.StreamWriter sr =
null
;
try
{
if
(!System.IO.File.Exists(filename))
{
sr = System.IO.File.CreateText(filename);
}
else
{
sr = System.IO.File.AppendText(filename);
}
sr.WriteLine(strMemo);
}
catch
{
}
finally
{
if
(sr !=
null
)
sr.Close();
}
}
public
bool
IsReusable
{
get
{
return
false
;
}
}
}
1.如果是为了验证微信接口的token是否通过, 将valid注释去掉
2.如果要返回给用户值, 注释掉valid
转自:http://www.cnblogs.com/rexql/articles/3078906
相关问答
更多-
微信公众平台能使用Java开发吗[2022-09-14]
能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发 -
微信公众平台开放 9 大高级接口,它有什么意义[2022-06-29]
只有服务号才有这9大接口,他能帮让服务号提供更好的服务,进行微信营销,望采纳 关注微商-唯购 -
微信公众平台企业号要安装一个oa接口,大家给推荐一下哪个好。[2022-05-16]
云海中腾OA办公自动化系统,基于java开发平台,MVP架构,配备各版本移动客户端,阿里钉钉、微信企业号接口,大量控件直接免费内置,产品包含200多个标准化的功能组件。 1、电子邮件、手机短信、即时通讯、论坛和讨论区等功能组件,建立起企业内部沟通和通讯平台; 2、公告通知、新闻管理、日程管理、工作计划、工作日志、投票管理等功能组件,建立起企业行政办公平台; 3、工作流系统提供灵活、可视化的“智能表单设计器”和“流程设计器”,提供强大的工作流引擎和业务引擎,提供完备的流程处理、监控、超时催办、数据分析等功能, ... -
传智播客何时出个.net开发微信公众平台教程[2023-01-07]
不对,您误会了,我说的是微信公众平台的开发啊。可以选用php和.net开发,但是网上只有php开发的教程 -
微信开放平台怎么用申请公众平台[2023-02-03]
登录 注册 微信开放平台 首页 资源中心 管理中心 数据中心 帐号中心第三方平台 开启公测 全新的开放类型,让开发者帮助公众号解决垂直行业需求 了解更多 微信登录 -
微信公众平台开发有哪些要注意的?[2022-10-26]
微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ... -
开发微信公众平台选择PHP还是.NET好?[2022-04-04]
没有哪个好哪个不好一说,只有适不适合,语言只是工具,看你自己会什么,或者习惯使用什么语言,不过网上关于开发微信PHP的DEMO比.NET的多一些,遇到不会的比较好查资料。 -
微信公众平台微网站开发流程是什么?[2023-09-21]
微网站开发模式教程: 第一步:申请消息接口 在公众平台网站的高级功能 – 开发模式页,点击“成为开发者”按钮,填写URL和Token,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者可以任意填写,用作生成签名。 第二步:验证URL有效性 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: 开发者通过检验signature对请求进行校验。若确认此次GET请求来自微信服务器,请原样返回 echostr参数内容,则接入生效,成为开发 ... -
普通网站怎么转换为微信网站[2022-03-28]
普通网站要改成微信网站,可以利用公共号的功能进行改造!一般需要启用微信公共号的开发者进行独立开发。 常见的微信网站一般需要公共号。需要调用微信公共号的功能,特别是菜单功能。 有很多微信公共号第三方平台往往有很多网站模板,都可以轻松实现微站的制作。并可以提供各种附加的增值功能,让微信网站更有利于营销。 使用第三方平台,需要将微信公共号绑定到平台网站。一般该类网站都会有说明和指导,研究一下自己也可以动手去操作。 也可以直接找专门的网站建设类的服务公司,付费设计,可以实现个性化需求。 -
微信公共平台开发适合的行业有哪些 ?[2022-04-10]
各个行业都有的。可以看下小猪CMS,,you shiyong