淘宝消息服务使用介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
消息服务使用介绍
更新时间:2016/03/24 访问次数:229642
∙From淘宝消息服务使用
∙To淘宝消息服务使用
∙常用消息类型说明
∙沙箱消息服务开通
∙消息服务常见问题
消息服务是开放平台为提高应用API调用效率而推出的一种主动推送服务(From淘宝),推送内容包括(淘宝交易、商品、退款等信息),基于该推送服务,应用获取淘宝数据不需再不停轮询API,仅需在接收到淘宝推送的消息时调用API获取即可,大大提高API调用效率和降低API使用费用。同时还提供消息回流服务(To淘宝),应用可将信息回流到淘宝,做商品数源服务等。
From淘宝:即淘宝向外推送淘宝(包括天猫)的交易、商品、退款等官方消息。
To淘宝:即向淘宝回流消息。
那么如何使用消息服务呢?请看以下是消息服务From淘宝和To淘宝两种方式的详细使用说明。
From淘宝消息服务使用
应用订阅消息
进入ISV控制台,在“应用管理->消息服务->订阅消息”页面,选择需要的消息进行订阅,点击相应消息后面的“订阅”即可
订阅消息成功,可以在“我的订阅”中查看已经成功订阅的消息。如果需要取消消息的订阅,直接点击“取消订阅”。
点击消息名称可以查看每个消息返回的详细字段信息。
注意:如果该消息没有权限,则说明应用未开通相关API调用权限,通过点击“申请权限”,进入申请相应的权限包。另如果需要在沙箱开通消息服务使用,可参照本文的[沙箱消息服务开通]章节
给用户开通消息
调用er.permit接口给用户(即淘宝或天猫商家)开通,可以选择只给用户开通部分消息类型,也可全部开通。具体可看该API 入参说明。
备注:
∙给用户开通消息前提是用户已经给应用授权,如未授权,请参考获取用户授权说明。
∙取消用户的消息服务调用er.cancel接口。
∙可以通过接口er.get获取用户已开通消息,入参必须输入is_valid,topics,modified来判断用户授权消息是否成功
∙消息服务API文档:点击这里查看
代码实现接收消息
正式环境服务地址:ws:///
沙箱环境服务地址:ws:///
接收消息,实现方式有两种:通过SDK接收消息、通过API接收消息,推荐采用SDK接收消息。
通过SDK接收消息
目前支持JAVA与.NET语言,其它语言建议采用API接收消息。通过SDK接收消息只需要关注业务的处理,不需要操心消息重发、确认、长连接的重连等操作,SDK会自动处理好一切。
JAVA接口使用说明
1
2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 publicinterface MessageHandler {
/**
* 消息通道客户端收到消息后,会回调该方法处理具体的业务,处理结果可以通过以下两种方式来表述:
*
- 抛出异常或设置status.fail()表明消息处理失败,需要消息通道服务端重发*
- 不抛出异常,也没有设置status信息,则表明消息处理成功,消息通道服务端不会再投递此消息
*
* @param message 消息内容
* @param status 处理结果,如果调用status.fail(),消息通道将会择机重发消息;否则,消息通道认为消息处理成功
* @throws Exception 消息处理失败,消息通道将会择机重发消息
*/
publicvoid onMessage(Message message, MessageStatus status) throws E xception;
}
JAVA使用代码示例
1
2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 TmcClient client = new TmcClient("app_key", "app_secret", "default"); // 关于default参考消息分组说明
client.setMessageHandler(new MessageHandler() {
publicvoid onMessage(Message message, MessageStatus status) {
try{
System.out.println(message.getContent());
System.out.println(message.getTopic());
} catch(Exception e) {
e.printStackTrace();
status.fail(); // 消息处理失败回滚,服务端需要重发
}
}
});
client.connect("ws://"); // 消息环境地址:ws://mc.api.tbsand
/
注:采用Java main方法在Eclipse里面运行上面的代码测试时,请在client.connect()后面加上Thread.sleep让main线程等待一段时间结束,以便观察消息的实时接收情况,否则main线程结束后,TMC长连接也会跟着断开。如果是在web服务器上运行上面的代码,则不用在client.connect()后面加任何Thread.sleep代码,也不需要在外面包一层while(true)循环,因为web服务器上的主线程只要服务器不关闭都是不会结束的,TMC的长连接会一直保持。
C#使用示例代码
1
2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1TmcClient client = new TmcClient("appkey", "appsecret", "default"); // 关于default参考消息分组说明
client.OnMessage += (s, e) =>
{
try
{
Console.WriteLine(e.Message.Topic);
*