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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java文件处理(3)——实现文件复制和文件移动「建议收藏」

    java文件处理(3)——实现文件复制和文件移动「建议收藏」任务要求:通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件复制(而不是调用windows命令行的内部命令copy)。通过二进制流的操作方式把程序调整为可以实现对任何类型文件进行文件移动(而不是调用windows命令行的外部命令move)。1.介绍InputStream和OutputStreamInputStream和OutputStream是抽象类,是所有字节输入流和输…

    2022年6月22日
    24
  • 什么是ARM?_arm开发板

    什么是ARM?_arm开发板原文一、ARM是什么?ARM既可以认为是一个公司的名字,也可以认为是对一类处理器的统称,还可以认为是一种技术的名字。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,而是转让设计许可,由合作公司生产各具特色的芯片。ARM处理器的内核是统一的,由ARM公司提供,而片内部件则是多样的,由各大半导体公司设计,这使得ARM设计嵌入式系统的时候,可以基于同样的核心,使用不同的片内外设,从而具有很大的优势。二、ARM内核与架构

    2022年10月14日
    0
  • 加密_摩斯密码

    加密_摩斯密码加密

    2022年4月21日
    48
  • window清理系统垃圾文件代码

    window清理系统垃圾文件代码创建一个txt,后缀改为.bat,文件名自己取,但是要知道这个文件是拿来清理系统垃圾的。代码如下:@echooffpauseecho正在清理系统垃圾文件,请稍等……del/f/s/q%systemdrive%\*.tmpdel/f/s/q%systemdrive%\*._mpdel/f/s/q%systemdrive%\*.logdel/f…

    2022年6月18日
    19
  • nfs 文件句柄_NFS端口

    nfs 文件句柄_NFS端口上一篇文章中我们以REMOVE请求为例讲解了NFS请求的处理过程,其中提到了文件句柄的概念,NFS需要根据文件句柄查找一个文件,这篇文章中我们就来聊聊文件句柄。在普通的文件系统中,我们用文件索引节点编号(ino)表示一个文件。ino就是一个数字,ino保存在磁盘中,整个文件系统中任何两个文件的ino都不相同,因此给定一个ino,我们就能找到对应的文件。当使用NFS文件系统时就出现问题了,我们无法通

    2022年10月18日
    0
  • hdu 4964 Emmet()模拟

    hdu 4964 Emmet()模拟

    2022年1月12日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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