zoukankan      html  css  js  c++  java
  • 微信企业号开发(1)WebAPI在回调模式中的URL验证

    微信回调模式的官方文档

    开发语言:C#(微信相关功能代码可以从官网下载

    首先,必须要明确几个参数,这几个参数在微信企业号中,每次调用都会使用到。

    1、msg_signature:签名(已加密,加密方法可从官网下载

    2、timestamp:时间戳

    3、nonce:随机数

    4、echostr:随机字符串(已加密)

    注:前面3个参数每次都会自动带上,属于必填项,第4个参数只有在首次校验URL时(意思就是点下图中的“保存”按钮时,可能不准确,先这样理解吧)才会带上。

    针对上图的说明:

    1、URL:任意网址(推荐使用二级域名)

    2、Token:随意字符,可点后面的“随机获取”来随机填入几个字符,也可以自己输入,我就是输入的公司英文名称

    3、EncodingAESKey:有一定的格式要求,懒得输的可以点后面的“随机获取”,我就是使用这一项

    4、在点击上图的“保存”按钮时,页面会根据图中框内输入的内容,自动生成最终请求的URL地址,同时,会自动附带上本文开始时说的那四个参数,并向该URL地址发起GET请求

    5、只有上图的“保存”按钮执行成功后,才会看到如下图所示:

    开始上代码

    首先,在Web.config中添加几个AppSetting:

    1 <add key="WXCorpID" value="从配置页面获取" />
    2 <add key="WXCorpToken" value="自行输入" />
    3 <add key="WXCorpAESKey" value="自行输入" />

    说明:

    1、WXCorpID:企业号唯一的ID,可以从设置页面复制过来,如下图所示

    2、WXCorpToken:一定要和配置界面的Token框内输入的一致

    3、WXCorpAESKey:一定要和配置界面的EncodingAESKey框内输入的一致

    其次,配置一个WebAPI的路径:

    1 config.Routes.MapHttpRoute(name: "VerifyApi", routeTemplate: "api", defaults: new { controller = "Verify" });

    然后,建立一个VerifyController,并添加方法:

     1 [HttpGet]
     2 public void VerifyURL()
     3 {
     4     // 本文顶部说的四个参数,最好进行URL解码
     5     var signature = HttpUtility.UrlDecode(HttpContext.Current.Request["msg_signature"] ?? string.Empty);
     6     var timestamp = HttpUtility.UrlDecode(HttpContext.Current.Request["timestamp"] ?? string.Empty);
     7     var nonce = HttpUtility.UrlDecode(HttpContext.Current.Request["nonce"] ?? string.Empty);
     8     var echo = HttpUtility.UrlDecode(HttpContext.Current.Request["echostr"] ?? string.Empty);
     9 
    10     // 验证结束后的返回值,一定不要带引号!!!
    11     var echoResult = string.Empty;
    12 
    13     // 微信提供的验证对象(参数为AppSetting中的三个值)
    14     var crypt = new WXBizMsgCrypt(AppSettings.WX_CORP_TOKEN, AppSettings.WX_CORP_AES_KEY, AppSettings.WX_CORP_ID);
    15 
    16     // 微信提供的验证方法
    17     var result = crypt.VerifyURL(signature, timestamp, nonce, echo, ref echoResult);
    18     if (result != 0)
    19     {
    20         return;
    21     }
    22 
    23     // 将验证后的返回值写入响应流,这样可以去掉引号!!!
    24     HttpContext.Current.Response.Clear();
    25     HttpContext.Current.Response.Write(echoResult);
    26     HttpContext.Current.Response.End();
    27 }

    最后,在企业号界面上点“保存”按钮,即可验证,一般来说,就可以通过了。

  • 相关阅读:
    iOS-Block的多种使用
    iOS-验证码倒计时60秒
    iOS-AFNetworking-上传图片
    Xcode 报错信息
    iOS-定时器
    iOS-开发技巧-页面布局
    iOS-nil,Nil,NULL的区别
    iOS-Debug
    iOS-NSDate
    iOS-生命周期
  • 原文地址:https://www.cnblogs.com/jacksonwj/p/4870589.html
Copyright © 2011-2022 走看看