微信开放平台微信登录功能 /消息推送服务器设置-云顶集团3118

登录open平台后,在移动应用/网页应用详情页面 -「消息推送」中,管理员可启用消息服务,填写服务器地址(url)、令牌(token) 和 消息加密密钥(encodingaeskey)等信息。

微信开放平台微信登录功能 /消息推送服务器设置

第一步:填写服务器配置

登录后,在移动应用/网页应用详情页面 -「消息推送」中,管理员可启用消息服务,填写服务器地址(url)、令牌(token) 和 消息加密密钥(encodingaeskey)等信息。

  • url: 开发者用来接收微信消息和事件的接口 url。开发者所填写的url 必须以 http:// 或 https:// 开头,分别支持 80 端口和 443 端口。
  • token: 可由开发者可以任意填写,用作生成签名(该 token 会和接口 url 中包含的 token 进行比对,从而验证安全性)。
  • encodingaeskey: 由开发者手动填写或随机生成,将用作消息体加解密密钥。

同时,开发者可选择消息加解密方式:明文模式(默认)、兼容模式和安全模式。可以选择消息数据格式:xml 格式(默认)或 json 格式。

微信开放平台微信登录功能 /消息推送服务器设置

模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。切换加密方式和数据格式需要提前配置好相关代码,详情请参考 。

第二步:验证消息的确来自微信服务器

开发者提交信息后,微信服务器将发送 get 请求到填写的服务器地址 url 上,get请求携带参数如下表所示:

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

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

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

验证 url 有效性成功后即接入生效。

检验 signature 的php示例代码:

private function checksignature()
{
    $signature = $_get["signature"];
    $timestamp = $_get["timestamp"];
    $nonce = $_get["nonce"];
    $token = token;
    $tmparr = array($token, $timestamp, $nonce);
    sort($tmparr, sort_string);
    $tmpstr = implode( $tmparr );
    $tmpstr = sha1( $tmpstr );
    if ($tmpstr == $signature ) {
        return true;
    } else {
        return false;
    }
}

php示例代码下载:

第三步:接收消息和事件

当某些特定的用户操作引发事件推送时(如用户资料变更时),微信服务器会将消息(或事件)的数据包以 post 请求发送到开发者配置的 url,开发者可以依据自身业务逻辑进行响应。事件类型消息推荐使用 fromusername createtime 排重。

服务器收到请求必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试。详见下面说明:

  1. 直接回复success(推荐方式)
  2. 直接回复空串(指字节长度为0的空字符串,而不是结构体中 content 字段的内容为空)

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/13422/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月29日 下午3:30
下一篇 2022年11月29日 下午3:33

相关推荐

网站地图