商城系统 注册

视频号小店信息推送接口

2023-03-16|HiShop
导读:消息推送 开发者服务器接收消息推送 开发者需要按照如下步骤完成: 填写服务器配置 验证服务器地址的有效性 据接口文档实现业务逻辑,接收消息和事件 第一步:填写服务器配置...

  消息推送

  开发者服务器接收消息推送

  开发者需要按照如下步骤完成:

  填写服务器配置

  验证服务器地址的有效性

  据接口文档实现业务逻辑,接收消息和事件

  第一步:填写服务器配置

  登录视频号小店后台后,在「服务市场」-「自研」-「消息推送」中,启用消息服务,填写服务器地址(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 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

  将token、timestamp、nonce三个参数进行字典序排序

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

  开发者获得加密后的字符串可与 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,开发者可以依据自身业务逻辑进行响应。

  微信服务器在将用户的消息发给开发者服务器地址后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有 msgid 的消息推荐使用 msgid 排重。事件类型消息推荐使用 FromUserName + CreateTime 排重。

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

  直接回复success(推荐方式)

  直接回复空串(指字节长度为0的空字符串,而不是结构体中 content 字段的内容为空)

  若接口文档有指定返回内容,应按文档说明返回

电话咨询 预约演示 0元开店