微信企业号C#开发配置API
微信开发第一步 : 配置API,实现接收消息服务配置
1.在下图界面先填好内容,事件消息处理可自行选择,我这里是没处理的

2.第二步: 使用vs 进行代码的编写,以下是我的代码。LogTextHelper类需要自己写的,微信官方文档下载地址 https://work.weixin.qq.com/api/doc#10128 ,里面有多种版本,可自行选择。
/// <summary>
/// 处理企业号的信息
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)
{
byte[] btHtml = context.Request.BinaryRead(context.Request.ContentLength);
string strHtml = System.Text.Encoding.Default.GetString(btHtml);
LogTextHelper.WriteLogFile(context.Request.Url.ToString() + "\r\n" + strHtml);
string postString = string.Empty;
if (context.Request.HttpMethod.ToUpper() == "GET")
{
Auth();
}
//POST
}
/// <summary>
/// 成为开发者的第一步,验证并相应服务器的数据
/// </summary>
private void Auth()
{
LogTextHelper LogHelper = new LogTextHelper();
string token = ConfigurationManager.AppSettings["CorpToken"];//从配置文件获取Token
string encodingAESKey = ConfigurationManager.AppSettings["EncodingAESKey"];//从配置文件获取EncodingAESKey
string corpId = ConfigurationManager.AppSettings["CorpId"];//从配置文件获取corpId
string echoStringinitial = HttpContext.Current.Request.QueryString["echostr"];
string echoString = HttpUtility.UrlDecode(echoStringinitial); // 开发文档中写的“企业在获取时需要做urldecode处理”
string signature = HttpContext.Current.Request.QueryString["msg_signature"];
string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
string nonce = HttpContext.Current.Request.QueryString["nonce"];
string decryptEchoString = "";
if (CheckSignature(token, signature, timestamp, nonce, corpId, encodingAESKey, echoString, ref decryptEchoString))
{
if (!string.IsNullOrEmpty(decryptEchoString))
{
HttpContext.Current.Response.Write(decryptEchoString);
HttpContext.Current.Response.End();
}
}
}
/// <summary>
/// 验证企业号签名
/// </summary>
/// <param name="token">企业号配置的Token</param>
/// <param name="signature">签名内容</param>
/// <param name="timestamp">时间戳</param>
/// <param name="nonce">nonce参数</param>
/// <param name="corpId">企业号ID标识</param>
/// <param name="encodingAESKey">加密键</param>
/// <param name="echostr">内容字符串</param>
/// <param name="retEchostr">返回的字符串</param>
/// <returns></returns>
public bool CheckSignature(string token, string signature, string timestamp, string nonce, string corpId, string encodingAESKey, string echostr, ref string retEchostr)
{
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAESKey, corpId);
int ret=wxcpt.VerifyURL(signature,timestamp,nonce,echostr,ref retEchostr);
if (ret != )
{
//LogTextHelper.Error("ERR: VerifyURL fail, ret: " + ret);
return false;
}
// HttpContext.Current.Response.Write(retEchostr);
return true;
//ret==0表示验证成功,retEchostr参数表示明文,用户需要将retEchostr作为get请求的返回参数,返回给企业号。
//HttpUtils.SetResponse(retEchostr);
}
public bool IsReusable
{
get
{
return false;
}
}
}
3.第三步: 导入微信官方加解密文件,之后注意 token ,corpid ,encodingAESKey 的值保持一致 。 还有一点就是要注意,cshap 库要下载最新版,老版是没有 VerifyURL() 这个方法的。 这是下载地址 : https://work.weixin.qq.com/api/doc#10128
<appSettings>
<!--企业号配置信息-->
<add key="CorpToken" value="自己所填的token"/>
<add key="CorpId" value="自己企业号的corpid"/>
<add key="EncodingAESKey" value="自己所填的加密键"/>
</appSettings>
4.将所写的 web应用程序发布到 FTP 上 ,在回到 服务器配置那 ,点击保存,第一次点击会出现 回调URL失败 ,这是因为值还没传过来 。 之后你写的日志文件里就会多个Log ,将里面的值返回到web应用程序里。 如下图:

这微信服务器发过来的参数 ,Log 里面有。

5.这是LogTextHelper.cs 类
public class LogTextHelper
{
// 创建日志
///-----------------------------------------------------------------------------
/// <summary>创建错误日志 在c:\ErrorLog\</summary>
/// <param name="message">记录信息
/// <returns></returns>
///-----------------------------------------------------------------------------
public static void WriteLogFile(string message)
{
string strPath; //文件的路径
DateTime dt = DateTime.Now;
try
{
strPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Log"); //winform工程\bin\目录下 创建日志文件夹 if (Directory.Exists(strPath) == false) //工程目录下 Log目录 '目录是否存在,为true则没有此目录
{
Directory.CreateDirectory(strPath); //建立目录 Directory为目录对象
}
strPath = strPath + "\\" + dt.ToString("yyyy"); if (Directory.Exists(strPath) == false)
{
Directory.CreateDirectory(strPath);
}
strPath = strPath + "\\" + dt.Year.ToString() + "-" + dt.Month.ToString() + ".txt"; StreamWriter FileWriter = new StreamWriter(strPath, true); //创建日志文件
FileWriter.WriteLine("[" + dt.ToString("yyyy-MM-dd HH:mm:ss") + "] " + message);
FileWriter.Close(); //关闭StreamWriter对象
}
catch (Exception ex)
{
string str = ex.Message.ToString();
}
}
微信企业号C#开发配置API的更多相关文章
- 微信企业号回调模式配置解说 Java Servlet+Struts2版本号 echostr校验失败解决
微信企业号回调模式配置解说 Java Servlet+Struts2版本号 echostr校验失败解决 echostr校验失败,请您检查是否正确解密并输出明文echostr 异常java.securi ...
- 微信公众平台开发,API接入与推送事件(1)
博客好久没有更新了,今天说说微信开发.微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别.我们常说的微信开发也就是公众号开,微信公众号分为三个类 ...
- Asp.net 微信企业号网页开发流程
一.在pageload方法中获取code var code = GetCode(); private string GetCode() { return HttpContext.Current.Req ...
- C#开发微信门户及应用(16)-微信企业号的配置和使用
在本系列随笔的前面,主要就是介绍微信公众号的门户应用开发,最近把整个微信框架进行了扩展补充,增加了最新的企业号的API封装和开发,后续主要介绍如何利用C#进行微信企业号的开发工作,本篇作为微信企业号的 ...
- 微信企业号公测开启OA红海模式
之前就有传出消息说腾讯要出微信企业号,百度直达号的发布间接敦促了微信企业号的开发进度,这不,企业号开始公测了.以下是微信π的消息.[微信企业号已开通账号超过10万 日均消息量超过100万条] 今日,微 ...
- php微信支付接口开发程序
php微信支付接口开发程序讲解 微信支付接口现在也慢慢的像支付宝一个可以利用api接口来实现第三方网站或应用进行支付了, 下文整理了一个php微信支付接口开发程序并且己测试,有兴趣的朋友可进入参考. ...
- 微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤
1.准备 1.1.公众号为服务号,开通微信支付功能 1.2.为了方便调试微信后台的回调URL(必须为外网),我用了nat123软件来做一个映射 1.3.官方微信开发的示例WxP ...
- php微信支付接口开发程序(流程已通)
php微信支付接口开发程序(流程已通) 来源:未知 时间:2014-12-11 17:11 阅读数:11843 作者:xxadmin [导读] 微信支付接口现在也慢慢的像支付宝一个可以利 ...
- php微信支付测试开发(流程已通)
必要条件: appid //公众号后台开发者中心获得(和邮件内的一样) mchid//邮件内获得 key//商户后台自己设置 appsecret //公众号开发者中心获得 两个证书文件,邮件内 ...
随机推荐
- 团队作业4——第一次项目冲刺(Alpha版本) Day6
首先和助教及老师表示抱歉,博客确实当时就写了,但是一直不算写好,因为这几天卡住了,预计实现的功能实现不了,进度跟不上,现在也在寻求解决方法. 1.站立式会议: 2. Leangoo任务分解图: 3.任 ...
- 201521123097《Java程序设计》第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 在本周的学习中,我知道了在类的定义里,还学习到了抽象类以及抽象方法的使用格式. 2. 书面作 ...
- 戴建钊 201521123023《Java程序设计》第1周学习总结
1. 本周学习总结 Java 不同于C语言面向过程的编程思想,它是一种面向对象的编程方式,其在语句语法上与C++类似,因此刚开始可能比较容易理解 2. 书面作业 为什么java程序可以跨平台运行?执行 ...
- 201521123013 《Java程序设计》第1周学习总结
1. 本章学习总结 1.Java是面向对象的编程语言,它在通过jvm和jre将其转成本地机器代码,达到一次撰写,到处运行的效益,实现跨平台运行,代码开源,使用范围广. 2.了解jdk.jre.jvm的 ...
- 关闭Sublime Text的自动更新的方法
每次打开Sublime text 软件都会提示我让我更新软件,如图: 经过仔细的研究发现可以通过以下途径关闭软件的自动更新 打开Submine Text,找到Preferences -> Set ...
- 201521123073 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 1. finally 题目4-2 1.1 截图你的提交结果( ...
- 201521123060 《Java程序设计》第12周学习总结
1.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2.书面作业 将Student对象(属性:int id, String name,int age,double ...
- 201521123096《Java程序设计》第十一周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 (1)互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) ...
- linux 下怎样查找一个文件夹在哪个目录下?
如果只显示所在目录的路径: find 目录 -type d -name "查询目录名" -printf "%h\n" 如果同时显示目录名称和所在目录的路径: f ...
- Redis的安装以及在项目中使用Redis的一些总结和体会
第一部分:为什么我的项目中要使用Redis 我知道有些地方没说到位,希望大神们提出来,我会吸取教训,大家共同进步! 注册时邮件激活的部分使用Redis 发送邮件时使用Redis的消息队列,减轻网站压力 ...