消息推送及加解密说明

收藏
我的收藏
在服务商开发运维授权小程序过程中,会收到开放平台服务端推送的系统消息。出于安全考虑,开放平台服务端会向第三方小程序后端服务推送加密后的消息,因此,服务商需要解密后才能查看具体信息。另外推送消息格式均为 json,并且第三方小程序后端服务接收到后需要响应并返回字符串 success

一、开放平台服务端推送的数据

    1.向第三方小程序【授权事件接收 URL】以 HTTP POST 方式推送的数据包括:
    component_ticket;
    授权成功通知、授权解除通知、第三方小程序找回授权码通知;
    2.向第三方小程序【消息与事件接收 URL】以 HTTP POST 方式推送的数据包括:
    授权小程序提审代码的审核结果;
    代授权小程序修改名称、图标、简介、服务类目等基本信息的审核结果;
    代授权小程序申请短视频挂载、抖音直播组件、获取用户手机号等能力的审核结果;

二、验证消息签名

验证消息签名的目的是保证消息是来自于开放平台服务端。
消息格式为:
{ "Nonce": "4464221", "TimeStamp": "1535551395", "Encrypt": "Encrypt xxxx", "MsgSignature": "ba394c04acece6c2c0edee058c5dddf82474b8ee" }
    Nonce 为随机数
    TimeStamp 时间戳
    Encrypt 加密消息体
    MsgSignature 为消息签名
可以使用示例代码包的 ServerVerification 文件的 verify 方法。根据【消息验证 TOKEN】、Nonce、TimeStamp、Encrypt 获取签名,和 MsgSignature 比较,如果相同则证明来源于开放平台服务端。
我们提供了 java,php,go 三种语言的示例代码(点击下载,请运行示例代码前先阅读 readme 文件)。

三、解密消息

上面的消息中,Encrypt 字段为加密消息体,可以使用【消息加密解密 KEY】调用 MsgDecrypt 文件中的 decrypt 方法进行解密。
我们提供了 Java,PHP,Go 三种语言的示例代码(点击下载,请运行示例代码前先阅读 readme 文件)。
说明
其他编程语言还需要根据代码示例转换成你所用的语言。

四、注意事项

    上述提到的【授权事件接收 URL】、【消息与事件接收 URL】、【消息验证 TOKEN】、【消息加密解密 KEY】,需在第三方小程序应用的开发配置中进行配置。
    第三方小程序后端服务收到开放平台服务端推送的消息后必须直接返回字符串 success,不是 "success",否则开放平台服务端会认为推送失败,从而进行多次重试(重试 3 次)。