首先,开发者在接入时,微信服务器将发送get请求到你填写的url上,此请求携带四个参数,分别signature(微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。),timestamp(时间戳),nonce(随机数),echostr(随机字符串).用 HttpContext.Current.Request.RawUrl可以获取当前请求的原始url,如下图所示:

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序

2. 将三个参数字符串拼接成一个字符串进行sha1加密

3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。下面是代码实现。首先,在你的处理程序中(我是新建了一个一般处理程序wx.ashx),判断当前请求的类型,因为接入时,是发送的GET请求,消息处理是发送的POST请求。如下图:这里我对验证url的方法进行封装。///

/// 验证url权限, 接入服务器 ///

///

///

public static bool ValidUrl(string token)

{ string echoStr = VqiRequest.GetQueryString("echoStr"); if (CheckSignature(token))

{ if (!string.IsNullOrEmpty(echoStr))

{

Utils.ResponseWrite(echoStr); return true;

}

} return false;

}///

/// 验证微信签名 ///

/// * 将token、timestamp、nonce三个参数进行字典序排序 /// * 将三个参数字符串拼接成一个字符串进行sha1加密 /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。 ///

public static bool CheckSignature(string token)

{ string signature = VqiRequest.GetQueryString("signature"); string timestamp = VqiRequest.GetQueryString("timestamp"); string nonce = VqiRequest.GetQueryString("nonce"); string[] ArrTmp = { token, timestamp, nonce };

Array.Sort(ArrTmp); //字典排序

string tmpStr = string.Join("", ArrTmp);

tmpStr = Utils.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");

tmpStr = tmpStr.ToLower(); if (tmpStr == signature)

{ return true;

} else

{ return false;

}

}

注:代码VqiRequest.GetQueryString是封装的QueryString请求的方法,使用的时候可以改成QueryString[“”]

处理过程如图:

将signature,timestamp,nonce三个参数放在数组中,

排序后的ArrTmp:

将三个将三个参数字符串拼接成一个字符串:

将tmpStr进行sha1加密,加密后的字符串转换成小写:

然后和签名进行对比,相同则表示验证成功。

验证成功将echoStr返回给微信。

///

/// 根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码 ///

/// 要进行哈希运算的密码

/// 要使用的哈希算法

/// 经过哈希运算的密码

public static string HashPasswordForStoringInConfigFile(string str, string type)

{ return FormsAuthentication.HashPasswordForStoringInConfigFile(str, type);

} public static void ResponseWrite(string str)

{

HttpContext.Current.Response.Write(str);

HttpContext.Current.Response.End();

}

微信开发者接入php,微信开发系之新手接入指南相关推荐

  1. 使用微信开发者工具调试微信网页授权登录-react

    转:https://www.jianshu.com/p/9ced1a297c95 1.使用localhost本地调试 使用微信开发者工具, 选择微信网页授权, 微信团队为广大的开发者提供了一个测试账号 ...

  2. 使用uniapp开发微信公众号(H5页面),用微信开发者工具调试微信公众号

    1.先引入入口.html文件 参见官网https://uniapp.dcloud.io/collocation/manifest?id=h5-template 2.配置manifest.json 3. ...

  3. 历史 微信开发者工具_微信开发者工具PC版-微信开发者工具下载v1.03.2010240-IE浏览器中文网站...

    微信自成一个生态,微信开发者工具让用户能够自行设计自己的小程序界面.添加各种需要的功能,软件相对比较容易上手,可以与公众号对接,提升流量. 功能介绍 菜单栏 微信web开发者工具 切换帐号:快速切换登 ...

  4. HBuilder X运行小程序时,打开了微信开发者工具 但微信开发者工具未运行项目但又没有错误提示

    1.检查配置文件里有没有配置小程序APPid 2.确定开发者工具登录的账号和id属于同账号 3.微信开发者工具不是最新版本 卸载重新安装 下载地址传送门:微信开发者工具下载地址与更新日志 | 微信开放 ...

  5. 微信开发者模式php,微信开发之开发者模式

    1.0启用开发者模式 ①填写服务器配置 启用开发模式需要先成为开发者,而且编辑模式和开发模式只能选择一个(进入微信公众平台=>开发=>基本配置)就可以看到以下的界面: 点击修改配置,会出现 ...

  6. 微信公众平台-第三方平台开发(二)接入微信平台服务器

    验证票据 验证票据(component_verify_ticket),在第三方平台创建审核通过后,微信服务器会向其 "授权事件接收URL" 每隔 10 分钟以 POST 的方式推送 ...

  7. 用微信开发者工具--打开微信小程序weui组件示例

    浏览器搜索 :https://github.com/Tencent/weui-wxss/ 1.下载为小程序设计的weui组件, 2.在开发者工具中打开dist目录,而不是整个目录, 在开发者工具中就可 ...

  8. 钉钉接入access_无需开发,IT事件接入钉钉的方法详解

    1.市场在拥抱钉钉 最近一篇名为<为什么有很多企业沉迷钉钉无法自拔>的文章很火,文章不短,其中有一部分阐述了:钉钉抓住以人为核心的"智能协同"差异化路线,帮助企业打破过 ...

  9. 微信开发者工具source看不了代码_微信开发者工具和开发

    微信开发者工具的用途 开发微信小程序和公众号网页开发 小程序 添加小程序项目 在小程序的管理页面可以增删项目 添加小程序可以使用小程序公众号的appid,也可以不使用(一些功能不能使用) 小程序编辑器 ...

最新文章

  1. 湖北大数据采集平台的应用价值及领域,数道云
  2. python处理多个excel文件-Python将多个excel文件合并为一个文件
  3. 初探WCF 如何在配置文件中指定Address?
  4. 性能测试负载模型(七)
  5. smartform 与调用程序间内表数据传递方法
  6. fastdfs 测试客户端_分布式文件服务 FastDFS (第一篇)
  7. [PAT乙级]1021 个位数统计
  8. 《Python Cookbook 3rd》笔记(5.3):使用其他分隔符或行终止符打印
  9. 安卓linux终端 计算,5种在Linux终端中进行算术运算的方法
  10. 思杰彻底简化浏览器应用的安全交付
  11. C语言-学生管理系统
  12. DBUtil 的使用
  13. 微服务面试题及详细答案
  14. 【Appium实战】如何使用mumu模拟器模拟安卓手机
  15. 10种方法打开EPUB文件
  16. java面试题:编写java程序,随机生成n个m以内的加减法算式,形如a±b=c,其中n,m∈N+,a,b,c∈[0,m].请结合自身请款勾选作答的题目,然后在下面写出代(伪)码.
  17. 如何用Robotics Toolbox 建模多自由度的机械手臂
  18. gtsam Overview
  19. 【C 语言之项目实战】生成随机数并排序(详细版)
  20. http(https)请求响应状态码

热门文章

  1. Python Appium 元素定位方法简单介绍
  2. 爬虫、请求库requests
  3. 最佳实践之Android代码规范
  4. 对“优秀工程师”的一点感悟
  5. python制作印刷体数据集:数字符号数据集(字符串转图片)
  6. 华为机试HJ35:蛇形矩阵
  7. java mongodb 语句,MongoDB语句
  8. bypass最新版d盾mysql_Bypass 护卫神SQL注入防御(多姿势)
  9. python os模块打开文件_Python 文件操作之OS模块
  10. 武大金融工程和计算机专业,求解!武大的金融工程可以排第几