接入说明#
消息服务是PandaPon开发者平台为提高效率而推出的一种主动推送服务,推送内容目前仅开放订单相关消息。基于该推送服务,应用获取分销数据不再需要轮询API,只需要在消息对应的业务数据发生变化时开放平台会主动推送业务内容给开发者,开发者仅需提前订阅该消息并可对该消息内容做解析。需要注意的点,由于消息无法保证有序性,部分消息需要在搭配OpenAPI 查询接口做数据同步。消息接入可以有效降低API的调用频率,降低系统压力。订阅步骤#
步骤:开发者可在开放平台上配置一个回调 URL 来接收消息请求以开发者身份登入PandaPon开放平台;
选择控制台;
选择消息服务;
填写回调地址,选择 Verify(验证),若返回 HTTP 200 状态码,则会提示验证成功;
选择保存。消息格式#
messageType:消息类型
messageBody:消息体
messagePlatform:消息渠道 0-淘宝平台 1-1688平台
timestamp:消息推送时间机制说明#
回调地址#
描述:开发者需提供消息接收通道,接收推送形式为 HTTPS POST 请求。使用消息服务,需要准备一个接收消息的回调接口,请严格按以下要求执行:请使用 HTTPS 协议的回调地址;
收到消息后请返回 HTTP 200 状态码,确认签收消息。
超时时间为1000MS。重试及补偿#
失败后消息会在半个小时后重试推送,最大重试 5 次;
若系统中断超过 5 次重试,则请通过相关查询接口重新获取数据。消息签名#
描述:数据將使用明文传输,为安全起见,开放平台会对消息体做摘要签名处理,签名结果会放在POST请求头的 Authorization字段中,签名算法如下:Secret = "{AccessSecret}"Authorization = HEX_ENCODE(HMAC-SHA256(Base, Secret));public static String getSignature(String base, String secret) {
try {
Mac sha256Hmac = Mac.getInstance(HMAC_SHA256);
SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(), HMAC_SHA256);
sha256Hmac.init(secretKey);
return byteArraytoHexString(sha256Hmac.doFinal(base.getBytes()));
} catch (Exception e) {
log.error("Failed to generate signature");
}
return null;
}
处理建议#
在收到消息之后,验证签名防止外部攻击,签名时切勿对原始消息体进行相应转换和修改!否则签名比对就会不一致。
注意:messageBody为字符串类型。
由于接口响应时间限制(1000ms以内),可在收到消息后存储至异步队列进行业务的处理。