以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77194)

--  作者:Hyphen
--  发布时间:2015/11/12 15:58:00
--  一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始

本帖为学习实践帖,一切代码和资源均共享,无需回复盖楼。

 

本人接触狐表不久,能力也有限,如有任何错漏和好的建议可以在汇总帖回帖说明 ,不胜感谢。

 

如果有什么开发上的疑问,请另开一帖提问,本帖不回。

 

----------------------------------------以下为正文-----------------------------------------------

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

上图是Foxtable、微信公众平台与Asp.net网页的对接流程,  可以看的出来,微信用户(就是手机端)是通过微信接口服务和开发者联系起来的。

 

 

Foxtable2006里已经有一个Asp.net网页和Foxtable通讯的例子了,这里我们就先把微信公众平台与Asp.net网页对接起来,这样一来,三者就可以互联互通了:


 

(1)微信端配置


 

1. 首先,得注册一个微信公众号。怎么注册?网上一搜一大筐,这里就不说了。


 

2. 登录自己的公众号,在左边功能区点击“开发者中心”,按提示激活开发者功能


 

3. 进入开发者中心,可以看到以下信息:包括开发者ID、服务器配置、接口文档、接口权限等等。


这里就说说服务器配置,其它的先自行查看接口文档。

 

 


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 

 

4. 点击修改配置,打开配置页面,如下

 

URL:填写Asp.net网页对外发布的地址,可以是页面、处理程序或者MVC都可以

Token:如果不需要在网页端做签名验证,不用理会随便填几个符合规则的字符就行;如果需要做签名验证,填写的字符和网页中定义的一样就行。这个在网页设计时会讲到

EncodingAESKey:采用随机生成一个即可

消息加密方式:根据需要选择。一般开发阶段采用明文或者兼容模式即可。

 


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

 

当然在网页还没有开发的情况下,填写完成上面的配置后是提交不了的,因为微信会通过填写的URL去验证服务是否正常,不然提交了也没有意义。既然这样,那就放一放,我们先来做一个网页。


 


--  作者:Hyphen
--  发布时间:2015/11/12 15:58:00
--  
 

(2)Asp.net网页开发

 

1. 打开vs,创建一个Asp.net web应用程序,名称、路径以及Framework的版本根据自己的情况设置和选择。

 


此主题相关图片如下:4.png
按此在新窗口浏览图片

 

2. 默认会生成一个Default.aspx的页面,右键选择查看代码,看到代码如下

Public Class _Default

    Inherits System.Web.UI.Page

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

 

    End Sub

 

End Class

 

Page_Load过程添加代码:

 

Public Class _Default

    Inherits System.Web.UI.Page

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

 

        Dim echostr As String = Request("echostr")

 

        If Request.HttpMethod = "GET" Then

            Response.Write(echostr) \'返回随机字符串则表示验证通过
                 Response.End()

        End If

    End Sub

 

End Class

 

在上面微信服务器端配置的时候,如果点击提交,微信就会调用URL中配置的地址,传入一些签名验证的数据。

 

echostr是其中一个。我们在页面中获取到echostr数据之后原样返回给微信,微信收到这串数据,就表示开发者的服务器验证通过了。如果没有返回这串数据而是返回其它内容,微信就会认为验证错误,而返回Token验证错误的提示。

 

3. 保存生成网站,然后发布出去。

 

3)网站发布

1. 安装并确保服务器IIS可以使用,具体方法百度一下

https://www.baidu.com/s?tn=87048150_pg&word=IIS

 

2. 打开IIS,添加一个站点,比如MicroMsgWebApp

 

3. 在上面创建的Aspnet项目中右键菜单选择发布

 


此主题相关图片如下:5.png
按此在新窗口浏览图片

4. 进入发布web页面

发布方法根据自己情况进行选择,如果开发电脑和服务器在一个局域网内,可以采用文件系统方式,跨网段的话可以采用ftp或者web部署的方式。

 

这里使用文件系统方式,目标位置选择IIS中配置好的网站,点击发布就完成了

 


此主题相关图片如下:6.png
按此在新窗口浏览图片

 

 

5. 外网的访问设置

 

a、服务器网络对外需要有固定的IP,如果没有可以上网搜索下如何设置动态域名如花生壳等,这里不做描述

 

b、如果是固定IP,在路由中做端口映射配置,端口必须使用80,因为现在微信接口服务只认80端口。web服务可以不用设置DMZ主机。

 

4)继续微信端的配置

1. 在服务器配置中填好URL,比如

http://120.198.222.222/MicroMsgWebApp/Default.aspx

 

2. 点击提交,如果URL可以正常连接的话,就可以看到修改成功的提示了,否则就会提示Token验证失败。

 

5)关于接口安全验证

 

1. 实际上微信接口在调用服务器URL(即我们开发的网页)时,传递了4个和签名有关的参数,分别是

 

signature :微信加密签名

timestamp :当前时间戳

nonce :随机数

echostr :随机字符串

 

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,则原样返回echostr参数内容,微信才认为是正确的服务调用者,则接入生效,否则接入失败。

 

2. 加密/校验流程:

a. tokentimestampnonce三个参数进行字典序排序

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

c. 加密后的字符串可与signature对比,如果一致则说明请求验证通过

 

函数如下:

    Public Shared Function Verify(ByVal token As String, ByVal timeStamp As String, ByVal nonce As String, ByVal signature As String) As Boolean

        Dim arrTmp() As String = {token, timeStamp, nonce}

 

        Array.Sort(arrTmp)

        Dim tmpStr As String = String.Join("", arrTmp)

 

        tmpStr = Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1")

        tmpStr = tmpStr.ToLower()

 

        Return tmpStr = signature

    End Function

 

Page_Load过程中增加验证代码:

 

        If Request.HttpMethod = "GET" Then

            If Verify(Token, timestamp, nonce, signature) Then

                Response.Write(echostr) \'返回随机字符串则表示验证通过
                       Response.End()

            End If

        End If


 

[此贴子已经被作者于2015/11/25 10:14:17编辑过]

--  作者:Hyphen
--  发布时间:2015/11/12 15:58:00
--  网页例子

 

例子看汇总贴
[此贴子已经被作者于2015/11/25 10:13:15编辑过]

--  作者:Hyphen
--  发布时间:2015/11/12 15:58:00
--  

 

[此贴子已经被作者于2015/11/12 16:06:58编辑过]

--  作者:Hyphen
--  发布时间:2015/11/12 16:00:00
--  

 

[此贴子已经被作者于2015/11/12 16:06:47编辑过]

--  作者:新福星
--  发布时间:2015/11/12 16:16:00
--  
好贴
--  作者:lsy
--  发布时间:2015/11/12 16:39:00
--  
抢一块自留地。
--  作者:bailang121
--  发布时间:2015/11/12 16:42:00
--  
好贴!~lz辛苦
--  作者:rjh4078
--  发布时间:2015/11/12 16:50:00
--  
好贴 希望有后续应用案例
--  作者:hanxuntx
--  发布时间:2015/11/12 16:55:00
--  
顶帖支持