微信开发(一) asp.net接入
步入微信公众平台开发之旅,首要之务便是拥有一个微信公众号。倘若您还未知微信公众号是何物,那么或许需要先深化了解,才能启程。简而言之,微信平台宛如一个繁华的社会,其中既有个人,也有各类组织机构,各自绽放光彩。
为了开展微信开发,服务器的设立是不可或缺的一环。若您尚无自己的服务器,可以借助花生壳工具,将内网映射到公网上,如此便能在公网环境中轻松访问您的网站。
接下来,您需要编写一个接入代码。微信平台目前主要提供php示例,此处我们提供asp的示例供您参考。
创建一个名为Default.aspx的文件,并在Page_Load事件中进行检验。其中,MyLog是日志类,用于记录调试信息,可以暂时忽略。关于checkSignature()的功能,与大多数资料所述相似。以下是其核心代码:
```csharp
MyLog.DebugInfo("request default.aspx");
String echoStr = Request.QueryString["echostr"];
MyLog.DebugInfo("echoStr:" + echoStr);
if (this.checkSignature()) //验证签名
{
if(!string.IsNullOrEmpty(echoStr)){ //如果echostr不为空
MyLog.DebugInfo("echostr:" + echoStr);
Response.Write(echoStr); //返回echostr给微信服务器
Response.End(); //结束响应,此句至关重要,缺少则无法正常接入
}
}
```
关于checkSignature()方法的核心逻辑如下:
```csharp
private bool checkSignature()
{
string signature = Request["signature"]; //获取微信服务器传回的signature等信息
string timestamp = Request["timestamp"];
string nonce = Request["nonce"];
MyLog.DebugInfo(String.Format("signature:{0},timestamp:{1},nonce:{2}", signature, timestamp, nonce));
string token = TOKEN; //此处替换为您设置的Token值
string[] tmpArr = new string[] { token, timestamp, nonce }; //按照字典序排序
Array.Sort(tmpArr);
string tmpStr = string.Join("", tmpArr); //拼接成字符串并进行SHA1加密
System.Security.Cryptography.SHA1 sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] secArr = sha1puteHash(System.Text.Encoding.Default.GetBytes(tmpStr));
tmpStr = BitConverter.ToString(secArr).Replace("-", "").ToLower(); //生成签名字符串并与微信服务器传回的signature对比
MyLog.DebugInfo(String.Format("after parse:{0}", tmpStr));
if (tmpStr == signature)
{
MyLog.DebugInfo("true");
return true;
}
else
{
return false;
}
}
```
在此过程中,Response.End()的调用至关重要,缺少它则无法正常接入微信服务器。有时因微信服务器原因可能导致Token验证失败,此时不妨尝试重新验证多次。希望这些经验分享能够帮助您顺利开启微信公众平台开发之旅。
编程语言
- 微信开发(一) asp.net接入
- ExtJs整合Echarts的示例代码
- JS与jQuery遍历Table所有单元格内容的方法
- 一个asp替换函数img里面多余的代码
- 详解使用nodeJs安装Vue-cli
- 总结一些PHP中好用但又容易忽略的小知识
- .net 预处理指令符的使用详解
- thinkPHP5.0框架自动加载机制分析
- mysql 行列动态转换的实现(列联表,交叉表)
- JS+HTML+CSS实现轮播效果
- Thinkphp5.0 框架的请求方式与响应方式分析
- angularjs下拉框空白的解决办法
- BootStrap.css 在手机端滑动时右侧出现空白的原因及
- jQuery实现调整表格单列顺序完整实例
- 利用JS动态生成隔行换色HTML表格的两种方法
- PHP排序算法系列之桶排序详解