Foxtable(狐表)用户栏目专家坐堂 → 一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始


  共有12913人关注过本帖树形打印复制链接

主题:一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始

帅哥哟,离线,有人找我吗?
Hyphen
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
一、Foxtable、微信公众平台与Asp.net开发实践之一:公众平台、网站的配置,如何开始  发帖心情 Post By:2015/11/12 15:58:00 [只看该作者]

贴子已被锁定

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

 

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

 

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

 

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

 


图片点击可在新窗口打开查看此主题相关图片如下: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
网页例子  发帖心情 Post By:2015/11/12 15:58:00 [只看该作者]

 

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

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/12 15:58:00 [只看该作者]

 

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

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2015/11/12 16:00:00 [只看该作者]

 

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

 回到顶部
帅哥哟,离线,有人找我吗?
新福星
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1956 积分:15482 威望:0 精华:0 注册:2011/7/16 20:59:00
  发帖心情 Post By:2015/11/12 16:16:00 [只看该作者]

好贴

 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2015/11/12 16:39:00 [只看该作者]

抢一块自留地。

 回到顶部
帅哥哟,离线,有人找我吗?
bailang121
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:140 积分:1242 威望:0 精华:0 注册:2015/4/10 15:44:00
  发帖心情 Post By:2015/11/12 16:42:00 [只看该作者]

好贴!~lz辛苦

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3353 积分:24705 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2015/11/12 16:50:00 [只看该作者]

好贴 希望有后续应用案例

 回到顶部
帅哥哟,离线,有人找我吗?
hanxuntx
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2609 积分:16926 威望:0 精华:11 注册:2011/9/20 16:13:00
  发帖心情 Post By:2015/11/12 16:55:00 [只看该作者]

顶帖支持

 回到顶部
总数 33 1 2 3 4 下一页