#设置接收事件服务器
#openapi回调地址请求不通过?
#企业微信api
#添加外部联系人事件

using System.Web.UI.WebControls;
using System.IO;
using System.Text;using System.Data;
using System.Xml.Serialization;
using System.Xml;
using System.Net.Http;namespace WebApi2
{public class TestController : ApiController{//公司string sCorpID = "*********************";string sToken = "***************************";string sEncodingAESKey = "*************************";public HttpResponseMessage Get() {HttpContext context = System.Web.HttpContext.Current;context.Response.ContentType = "text/plain; charset=utf-8"; //context.Response.Cache.SetCacheability(HttpCacheability.NoCache);//context.Response.Headers.Add("Content-type", "text/html; charset=utf-8");///htmlcontext.Response.StatusCode = 200;using (var reader = new System.IO.StreamReader(context.Request.InputStream)){String xmlData = reader.ReadToEnd();//string Url = System.Web.HttpUtility.UrlDecode(context.Request.Url.ToString());string Url = context.Request.Url.ToString();if (Url != "") Url = Url.Split('?')[1];string param = string.Empty;if (!string.IsNullOrEmpty(Url)){string msg_signature = "";string timestamp = "";string nonce = "";string echostr = xmlData; //密文List<string> para = new List<string>(Url.Split('&'));foreach (var item in para){if (item.Contains("=")){string[] dic = item.Split('=');if (dic[0] == "msg_signature"){msg_signature = dic[1];}if (dic[0] == "timestamp"){timestamp = dic[1];}if (dic[0] == "nonce"){nonce = dic[1];}if (dic[0] == "echostr"){echostr = dic[1];}}}if (para.Count == 0){//return;}Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(sToken, sEncodingAESKey, sCorpID);string sVerifyMsgSig = msg_signature;string sVerifyTimeStamp = timestamp;string sVerifyNonce = nonce;string sVerifyEchoStr = echostr + "==";// int ret = 0;string sEchoStr = "";//wxcpt.VerifyURL 可以在企业微信api官网上下载到已经封装好的 // https://developer.work.weixin.qq.com/devtool/introduce?id=10128ret = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, sVerifyNonce, sVerifyEchoStr, ref sEchoStr);if (ret != 0){System.Console.WriteLine("ERR: VerifyURL fail, ret: " + ret);HttpResponseMessage responseMessage = new HttpResponseMessage { Content = new StringContent("校验失败!", Encoding.GetEncoding("UTF-8"), "text/plain") };return responseMessage;}else{//写入数据库if (执行事务操作(sEchoStr)){}else{}//去掉回传字符串的 双引号HttpResponseMessage responseMessage = new HttpResponseMessage { Content = new StringContent(sEchoStr, Encoding.GetEncoding("UTF-8"), "text/plain") };return responseMessage;}///*POST正确响应本次请求· 企业微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次· 当接收成功后,http头部返回200表示接收ok,其他错误码企业微信后台会一律当做失败并发起重试回复* * 步骤4中,不同的业务回调要求返回不同内容。比如回复空串,或者特定字符串(如success),* 以及上一步构造的加密被动回复消息。具体要求在各个回调业务文档会有说明。GET在1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)*/}}HttpResponseMessage Result = new HttpResponseMessage { Content = new StringContent("要返回的明文", Encoding.GetEncoding("UTF-8"), "text/plain") };return Result;}

企业微信官方
(2018年10月11日更新,点击下载)
注意事项:
Cryptography.cs文件封装了AES加解密过程,用户无须关心具体实现。WXBizMsgCrypt.cs文件提供了用户接入企业微信的三个接口,Sample.cs文件提供了如何使用这三个接口的示例。
WXBizMsgCrypt.cs封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证接收消息的url、接收消息的解密以及开发者回复消息的加密过程。使用方法可以参考Sample.cs文件。
下载地址
https://developer.work.weixin.qq.com/devtool/introduce?id=10128

C#企业微信 接收事件服务器(添加外部联系人事件)#openapi回调地址请求不通过# 完整源代码相关推荐

  1. 企业微信设置接收消息的参数,报错“openapi回调地址请求不通过”

    接口文档地址:https://developer.work.weixin.qq.com/document/10514 在保存时提示:openapi回调地址请求不通过. 验证URL有效性这步有问题,查看 ...

  2. 企业微信 接收消息服务器,接收消息与事件

    [TOC] 关于接收消息 为了能够让自建应用和企业微信进行双向通信,企业可以在应用的管理后台开启接收消息模式. 开启接收消息模式的企业,需要提供可用的接收消息服务器URL. 开启接收消息模式后,用户在 ...

  3. 在微信公众号中添加外部的链接图文教程

    2017-9-18,长沙,有点闷,有点热. 本教程教大家如何在微信公众号中,添加外部的链接,网络有很多教程,但由于表述不太清楚,出个教程吧.最终实现在微信后台管理平台"原文链接"处 ...

  4. 获取微信通讯录php,微信小程序实现添加手机联系人功能实现方法

    本文主要介绍了微信小程序实现添加手机联系人功能,结合实例形式分析了微信小程序添加联系人的具体步骤,包括布局与逻辑实现技巧,需要的朋友可以参考下,希望能帮助到大家. 本文实例讲述了微信小程序实现添加手机 ...

  5. PC企业微信hook接口,通过查询添加外部联系人教程

    通过查询添加为联系人(外部联系人) 操作码 102008 请求说明 参数名 必选 类型 说明 type 是 int 类型 addType 是 string 类型14微信用户 1企业用户 user_id ...

  6. 企业微信接收服务器php代码,企业微信通知机器人 - 利用ThinkPHP+企业微信随时随地接受业务提醒、日报表等,个人亦可接入 – 基于ThinkPHP和Bootstrap的快速后台开发框架...

    此插件基于FastAdmin+企业微信机器人进行二次开发,用于管理员.开发者等接受实时.免费的通知服务,配置简单,个人亦可接入zrOiJ4E2dpaDH/3I+1YljA== 功能特性一行代码即可向您 ...

  7. 企业微信 自建服务器,企业微信单点登录自建系统过程记录

    项目上接到一个需求,为方便员工登录各种内部系统,统一以企业微信为入口,在企业微信面板中增加系统跳转链接实现单点登录. 整体思路比较简单,大致如下: 1.由于自建系统和企业微信的用户ID不同,所以需要建 ...

  8. 企业微信怎么输入服务器id,在后台设置企业微信信息时,如何获得企业ID( CorpId )和 Secret ?...

    **一.登录企业微信管理后台** 点击下方的链接,前往企业微信管理后台,使用管理员的企业微信扫码登录 [https://work.weixin.qq.com/](https://work.weixin ...

  9. 企业微信怎么输入服务器id,系统账号绑定企业微信成员id

    原标题:系统账号绑定企业微信成员id 场景 在白码系统中需要使用各种接口对接企业微信时,发现需要使用企业微信的成员id,比如创建日程.获取打卡数据等接口,所以在此之前需要先将成员id与白码系统中的用户 ...

最新文章

  1. DSA签名算法 - Java加密与安全
  2. efcore根据多个条件更新_EF Core 基础知识
  3. Docker学习(三):镜像
  4. 巧用ActionFilter的AOP特性,为返回的数据增加返回码和消息
  5. scala的字符串的方法(五)
  6. android 动态添加listview,动态向listView Android添加元素
  7. 苹果Mac最好用的FTP客户端:Transmit
  8. Java学习笔记:统计视频播放量
  9. 整体大于部分_整体叶盘球头鼓锥形铣刀五轴加工技术
  10. php实现秒数倒计时,jQuery网页倒计时代码 显示天、小时、分钟与秒数
  11. 淘宝API 添加上传商品图片
  12. C语言求2/1,-3/2,5/3,-8/5...前十项之和
  13. 随着数字化转型加速,Entrust Datacard更名为“Entrust”
  14. Nginx启动不了报错未找到命令的解决方法(- bash: nginx: 未找到命令)
  15. MySQL--数据导入导出
  16. 高屋建瓴学机器学习/深度学习
  17. 如何启用dhcp linux,怎么开启DHCP服务器啊
  18. 怎样建立产品体系?(三)- 什么是产品?
  19. 《你是我的小羊驼》游戏源码 v1.0
  20. 可以不用U盘一键迁移电脑软件吗

热门文章

  1. python360指数_Python批量采集360关键词指数
  2. 百度移动关键词排名查询API接口-(api_submit- 百度移动关键词排名查询API接口)
  3. php+条形码在线怎么生成,php实现生成code128条形码的方法详解
  4. 如何将ieda设置为中文版
  5. [附源码]Sprintboot计算机毕业设计面向高校活动聚App【源码+数据库+LW+部署】
  6. CPU的个数,核心数,线程数
  7. apex英雄机器人探路者怎么玩_Apex英雄探路者技能怎么用 机器人技能技巧介绍
  8. 前端Vue项目实现钉钉扫码免登录
  9. 魅族android10内侧,魅族Flyme内测招募:10款机型升级Android 10!
  10. 问财同花顺spider(爬虫)