微信开发数据收发原理及消息数据格式

开发模式成为开发者时的消息校验原理

在开发者首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。

此后,每次开发者接收用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

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

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

启用接口是由代码中的checkSignature()函数来实现校验的。如果对这一原理难以理解,可以暂时不用深究,继续看下面

 

成为开发者后消息收发时的原理

上一章节中图,当用户发送一个“?”时,系统回复了一个时间

这一原理的消息流程图如下所示。

从上图可以看出,用户在发送一个?后,微信服务器将组装一个消息发送给我们自己的服务器,自己的服务器然后回复一个时间,并且将该时间也按一定的规则组装,回复给公众账号,公众账号再回复给用户,在这个收发过程中,发送方和接收方进行了调换(ToUserName和FromUserName值互换),收发都是以xml格式在后台进行传输的,

所以掌握各种消息类型的接收回复就是进行微信公众平台开发的基础

下面对前面所述的各种消息类型讲解其XML数据包的格式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序可以通过蓝牙收发数据来实现不同设备之间的数据传输。为了方便开发者测试,微信提供了蓝牙收发数据demo,以下是简单的操作流程: 首先,在微信开发者工具中新建一个小程序项目,选择“蓝牙”项目示例,然后点击“预览”或“编译”,即可预览或者编译该示例代码。 然后,将手机连接到微信开发者工具上,打开已经编译好的小程序,点击“搜索设备”按钮,即可搜索到附近的蓝牙设备列表。选择需要连接的蓝牙设备,点击连接按钮,此时可以看到连接状态出现“已连接”。 接着,点击“发送数据”按钮,可以向已连接的蓝牙设备发送数据。同时,可以在“接收数据”区域观察到设备返回的数据。 值得注意的是,为了实现蓝牙收发数据,需要在小程序的app.json文件中增加“bluetooth”权限。 通过以上步骤,我们就可以简单实现微信小程序蓝牙收发数据的操作,这个demo代码可以帮助开发者快速上手并了解微信小程序蓝牙相关的接口和使用方式。 ### 回答2: 微信小程序作为一款智能应用平台,不仅可以帮助开发者快速构建轻巧、高效的应用程序,还可以很好地与其他硬件设备进行数据通信。通过蓝牙模块的应用,可以帮助用户实现无线传输,便捷快速地传输数据微信小程序蓝牙收发数据demo示范了小程序如何与蓝牙模块进行数据传输,可以帮助用户了解和学习蓝牙模块的基本应用。在该demo中,小程序通过打开蓝牙模块和扫描附近蓝牙设备来获取设备列表信息,并可以连接到用户选择的设备。 一旦连接成功,小程序就可以向该设备发送数据,并通过该设备接收数据。用户可以通过界面上的操作按钮来实现发送和接收操作。发送数据时,用户可以在输入框里输入需要发送的数据,点击“发送”按钮后,数据就会被发送到设备上。接收数据时,小程序将接收到的数据在界面上展示。 该demo操作简单,功能明确,容易上手。对于开发者来说,可以根据该demo的示范,进一步实现自己的应用程序。同时,对于用户来说,可以通过该demo更好的理解蓝牙模块的应用,并更好的了解和掌握蓝牙数据传输的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值