Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证要对接微信公众平台的”开发模式”,即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MPSDK微信公众平台开发教程(一):微信公众平台注册),等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单。使用“高级功能”>“开发模式”之前,必须有一个已经部署在Internet上,可以用80端口访问的网站(域名或IP访问都可以),一些…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

    要对接微信公众平台的”开发模式”,即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方审核,审核通过之后,会在后台顶部出现“高级功能”菜单。

    使用“高级功能”>“开发模式”之前,必须有一个已经部署在Internet上,可以用80端口访问的网站(域名或IP访问都可以),一些开发的准备工作见文章:Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者

    首次进入“高级功能”后界面如下:

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

    我们看到默认情况下,“编辑模式”是开启的,要使用“开发模式”,必须先关闭“编辑模式”。

    点击进入编辑模式。如下图:

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

    点击右上角的滑块,关闭“编辑功能”。

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

   然后回到“高级功能”,进入“开发模式”,如下图:

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

    进入开发模式后,我们需要设置与微信服务器通讯的Url,以及只有我们自己知道的Token(千万不可泄露)。

    官方已经提供了一个PHP版本的示例:http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip,你也可以根据官方API的说明用自己的语言编写。

    在Senparc.Weixin.MP的开源项目中,我们也提供了ASP.NET MVC和ASP.NET Web Forms两种可以直接部署的Demo:https://github.com/JeffreySu/WeiXinMPSDK

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

    在提交的时候,微信服务器会对填写的URL,使用Token进行一次Get方式请求的验证,如果顺利通过,则保存成功,如果不通过,会给出错误信息,并且所填写的信息是无法保存的。

    为了更加直观地演示这个URL对应的程序中,应高包含哪些必要元素,我这里给出Senparc.Weixin.MP的实现方法(我会分别以MVC和WebForms为例):

方法一:使用MVC

    1、建立一个Controller,如WeixinController.cs,引用Senparc.Weixin.MP.dll(using Senparc.Weixin.MP.dll),最新的DLL见开源项目的Senparc.Weixin.MP.BuildOutPut文件夹https://github.com/JeffreySu/WeiXinMPSDK/tree/master/src/Senparc.Weixin.MP.BuildOutPut

  注意:Senparc.Weixin.MP.BuildOutPut 中的 dll 需要自己下载 Senparc.Weixin SDK 项目源代码并编译,如果常规开发建议使用 nuget 进行安装:https://www.nuget.org/packages/Senparc.Weixin.MP,其他类库也都可以根据名字在 nuget 找到。 

    2、设置一个私有变量(当然你也可以保存在数据库中),如:

        public readonly string Token = "weixin";//与微信公众账号后台的Token设置保持一致,区分大小写。

    3、建立一个名称为Index,用于Get请求的Action,如:

        /// <summary>
        /// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
        /// </summary>
        [HttpGet]
        [ActionName("Index")]
        public ActionResult Get(string signature, string timestamp, string nonce, string echostr)
        {
            if (CheckSignature.Check(signature, timestamp, nonce, Token))
            {
                return Content(echostr); //返回随机字符串则表示验证通过
            }
            else
            {
                return Content("failed:" + signature + "," + MP.CheckSignature.GetSignature(timestamp, nonce, Token)+"。如果您在浏览器中看到这条信息,表明此Url可以填入微信后台。");
            }
        }

  至此,这些代码编译后按照要求部署到网站上,并且在“接口配置信息”中填写http://YourDomain/weixin,Token填写weixin。

    上述代码完整的WeixinController.cs可以看这里

方法二:使用Web Forms

    Web Forms的验证过程和MVC是一样的,只是写法上有点差别,这里直接给出代码(也要using Senparc.Weixin.MP.dll),假设文件名为根目录下weixin.aspx:

 public partial class Weixin : System.Web.UI.Page
    {
        private readonly string Token = "weixin";//与微信公众账号后台的Token设置保持一致,区分大小写。

        protected void Page_Load(object sender, EventArgs e)
        {
            string signature = Request["signature"];
            string timestamp = Request["timestamp"];
            string nonce = Request["nonce"];
            string echostr = Request["echostr"];

            if (Request.HttpMethod == "GET")
            {
                //get method - 仅在微信后台填写URL验证时触发
                if (CheckSignature.Check(signature, timestamp, nonce, Token))
                {
                    WriteContent(echostr); //返回随机字符串则表示验证通过
                }
                else
                {
                    WriteContent("failed:" + signature + "," + CheckSignature.GetSignature(timestamp, nonce, Token));
                }
               
            }
            else
            {
                 //判断Post或其他方式请求
            }
             Response.End();
        }

        private void WriteContent(string str)
        {
            Response.Output.Write(str);
        }
}

  按照上面的代码,在“接口配置信息”中,Url应当填写http://YourDomain/weixin.aspx,Token应当填写weixin。

    上述weixin.aspx.cs完整代码看这里(当然你也可以写成ashx进一步提高效率)。

    

    CheckSignature.Check()方法是Senparc.Weixin.MP SDK中一个验证请求的方法,已经做了封装。这里直接使用是为了简化代码突出重点,感兴趣的朋友可以直接看源代码。

    用以上MVC和Web Forms两种方法的任意一种,已经可以让后台验证通过。但是注意,光有Get的方法,尚不能与微信用户发来的信息通讯,因为通过前面的教程我们知道,微信后台的Url是通过Get方式请求,而微信客户端的请求是由Post方式请求的,关于Post的方法,我会在后面的教程中详细说明。

    并且,在目前的设置状态下,即便你写了Post相关的方法,通过验证之后也并不表示你的服务器已经可以接收到微信服务器的消息了,还有最后一步:手动打开“开发者模式”:

Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证

    现在这个微信账号已经成功切换到了“开发者模式”,所有微信客户端发送到该公众账号的消息,都将转发到刚才填写的Url中。

    下一篇我们将介绍如何使用最“粗矿”的方式响应客户端的发来的Post请求。

    了解了“粗矿”方法之后,我们会正式进入“精致”和“简洁”的Senparc.Weixin.MP SDK的方法。

 

 系列教程索引

地址:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html

  1. Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册
  2. Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者
  3. Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
  4. Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello World
  5. Senparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDK
  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
  7. Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
  8. Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明
  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明
  10. Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
  11. Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明
  12. Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明
  13. Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明
  14. Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重
  15. Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
  16. Senparc.Weixin.MP SDK 微信公众平台开发教程(十六):AccessToken自动管理机制
  17. Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明
  18. Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能
  19. Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理
  20. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
  21. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
  22. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试

 

 

转载于:https://www.cnblogs.com/szw/p/3202857.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171589.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 大数据教程:Transformation和Action算子演示

    大数据教程:Transformation和Action算子演示大数据教程:Transformation和Action算子演示

  • lamda中stream的forEach与for循环对比

    lamda中stream的forEach与for循环对比对比方式将一个字符串数组进行输出的方式:代码publicstaticvoidmain(String[]args)throwsIOException{intn=500000;String[]strings=newString[n];LongstreamStart=System.currentTimeMillis();Arrays.stream(strings).forEach(System

  • 【ElasticSearch面试】10道不得不会的ElasticSearch面试题[通俗易懂]

    【ElasticSearch面试】10道不得不会的ElasticSearch面试题[通俗易懂]以下是ElasticSearch面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。评论区见关于es的面试,建议使用名词用官方语言描述会更准确。文章目录1.说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段2.elasticsearch的倒排索引是什么3.elasticsearch是如何实现master选举的5.描述一下Elasticsearch索引

  • 初识AngularJS

    初识AngularJS初识AngularJS一、AngularJS是什么?AngularJS,简称:ng它是一款非常优秀的前端高级JS框架由MiskoHevery等人创建2009年被Google公司收购,用于其多款产品有一个全职的开发团队继续开发和维护这个库这个框架可以轻松构建SPA应用程序通过指令扩展HTML,通过表达式将数据绑定到HTML(基本不需要DOM操作)二、SPA应用程序简单介绍单页面应用

  • linux查看端口占用的方法有哪些_docker查看端口占用情况

    linux查看端口占用的方法有哪些_docker查看端口占用情况一、liof命令lsof命令的英文是:listopenfiles,用于列出当前系统打开文件。lsof-i:<端口号>例如:lsof-i:8188二、netstat命令netstat-tunlp|grep<port>例如:netstat-tunlp|grep8188…

    2022年10月28日
  • Python学习(一)-环境搭建之PyCharm专业版激活成功教程

    Python学习(一)-环境搭建之PyCharm专业版激活成功教程PyCharm专业版激活成功教程1、下载地址:https://www.jetbrains.com/pycharm/download/#section=windows2、直接运行下载好的3、选择安装路径:E:\Pycharm\PyCharm2018.2.44、根据电脑配置打钩5、Install安装,安装后不打开软件6、将C:\Windows\System32\dri…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号