服务器和微信怎么连接?

谁主动?谁被动?

首先要明白,连接是双向的,但有两种不同的模式:

1、微信服务器调用你的服务器(主要模式)

当用户做了什么? 比如用户在公众号里发送一条消息、点击一个菜单、或者小程序里调用了一个支付接口。

发生了什么? 微信服务器会把这个事件(消息或请求)打包成一个 XML 或 JSON 格式的数据包,主动发送(HTTP POST) 到你预先配置好的服务器地址上。

你该做什么? 你的服务器需要接收这个数据包,处理其中的信息(理解用户消息、处理支付结果),然后组织一个同样格式的数据包返回给微信服务器,微信服务器再最终呈现给用户。

2、你的服务器调用微信服务器的接口(主动模式)

当你想做什么? 比如你想主动给用户发送一条客服消息、生成一个带参数的二维码、或者获取用户的基本信息。

发生了什么? 你的服务器需要主动发起一个 HTTP 请求(通常是 GET 或 POST) 到微信提供的 API 地址上。

重要前提 调用绝大多数微信 API 都需要一个access_token,这是一个有有效期(通常2小时)的访问凭证,你的服务器需要先调用另一个 API,用你的 AppID 和 AppSecret 来获取它。

核心步骤一:配置你的服务器(模式1的基础)

这是让微信服务器能找到你、并与你安全通信的第一步,通常在你的公众号或小程序后台的“开发 > 基本配置”里进行。

1、准备一个服务器:你需要一台有公网 IP 地址(或域名)的服务器,并编写了一个接口(API)来处理微信发来的请求,你用 Python(Flask/Django)、Java(SpringBoot)、PHP 或 Node.js 写了一个接口,URL 是https://yourdomain.com/wechat/callback

2、填写服务器配置

URL(服务器地址)填入你准备好的接口地址,例如https://yourdomain.com/wechat/callback

Token(令牌)你自己设定一个字符串,用于生成签名,验证请求的来源是否合法,例如YourSecretToken123

EncodingAESKey(消息加解密密钥)可选,但推荐选择“安全模式”并让微信自动生成,用于加密和解密消息内容,保证通信安全。

3、验证服务器所有权(最重要的一步)

当你点击“提交”按钮时,微信服务器会向你填写的 URL 发送一个GET 请求,携带以下参数

signature微信加密签名

timestamp时间戳

nonce随机数

echostr随机字符串

你的服务器需要做以下计算来验证

1. 将你配置的Token、收到的timestampnonce 三个参数按字典序排序后拼接成一个字符串。

2. 对这个字符串进行SHA1 加密

3. 将加密得到的字符串与微信传来的signature 进行对比。

4.如果相同,说明这个请求确实来自微信,你的服务器就应该原样返回echostr 参数的内容。

5.如果不同,或者你没有响应,则验证失败。

* 验证成功后,微信才会相信这个 URL 是你的,后续才会把用户消息等 POST 消息发过来。

核心步骤二:与微信 API 交互(模式2)

在你的服务器通过验证后,你就可以主动调用微信的各种功能了。

1、获取 Access Token

* 这是调用几乎所有 API 的“钥匙”。

请求地址https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

* 由于它有调用频率限制且每天次数有限,你的服务器必须缓存它(例如存到 Redis 或数据库里),并在快过期时重新获取,而不是每次调用 API 前都去获取一次。

2、调用具体 API

发送客服消息POST https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

创建自定义菜单POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

获取用户信息GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID

小程序代码模版消息微信支付微信登录等都有其特定的 API。

整体通信流程可以概括为:

graph LR
    A[用户] -- 发送消息/事件 --> B[微信服务器]
    B -- 1. POST 消息/事件 --> C[你的服务器]
    C -- 2. 处理业务逻辑 & 数据库操作 --> C
    C -- 3. 返回回复内容 XML/JSON --> B
    B -- 将回复展现给用户 --> A
    D[你的服务器] -- 4. 获取 access_token --> E[微信API服务器]
    D -- 5. 携带 token 调用微信API --> E
    E -- 返回API结果 --> D

技术要点总结:

1、必备条件:一台有公网IP/域名的服务器,支持 HTTPS(微信强制要求)。

2、核心配置:在微信后台正确配置 URL、Token、EncodingAESKey,并通过验证。

3、双向通信

接收编写 API 接口处理微信推送来的 POST 消息(XML/JSON)。

主动调用获取并缓存access_token,然后调用微信的各种 RESTful API。

4、安全:通过签名(Token)验证请求来源,通过 AES 加密(EncodingAESKey)保障消息体安全。

5、数据处理:你的服务器需要能够解析 XML(公众号常用)和 JSON(小程序常用),并生成相应格式的响应。

常用工具和调试

微信官方文档永远是第一选择,非常详细。

公众号开发文档https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

小程序开发文档https://developers.weixin.qq.com/miniprogram/dev/framework/

在线调试工具微信官方提供,可用于测试 API 调用是否正确。

https://mp.weixin.qq.com/debug/

Postman/Insomnia用于模拟和测试你的服务器接口以及调用微信 API。

希望这个解释能帮助你彻底理解服务器和微信是如何连接起来的!如果你有更具体的场景(比如是做公众号还是小程序),我可以提供更针对性的说明。

文章摘自:https://idc.huochengrm.cn/fwq/16165.html

评论