文档中心 > 汽车票接入说明

自助机代理商消息接入参考

更新时间:2017/05/25 访问次数:203

消息技术文档://open.taobao.com/docs/doc.htm?spm=a219a.7386781.3.10.UPfbNK&docType=1&articleId=101663&treeId=1
具体接入简单描述:
**消息无法在沙箱环境测试 只能走线上环境
1、商家提供appkey 给我方进行消息授权
2、商家自行订阅消息

应用订阅消息

进入ISV控制台,在“应用管理->消息服务->订阅消息”页面,选择需要的消息进行订阅,找到我们的topic taobao_bus_TVMTradePay 点击相应消息后面的“订阅”即可
image
订阅消息成功,可以在“我的订阅”中查看已经成功订阅的消息。如果需要取消消息的订阅,直接点击 “取消订阅”。点击消息名称可以查看每个消息返回的详细字段信息。
image
image注意:如果该消息没有权限,则说明应用未开通相关API调用权限,通过点击“申请权限”,进入申请相应的权限包。另如果需要在沙箱开通消息服务使用,可参照本文的[沙箱消息服务开通]章节

汽车票支付成功消息的topic :taobao_bus_TVMTradePay
用代码给自己permit api //open.taobao.com/doc2/apiDetail?spm=a219a.7629140.0.0.ogfeRq≈iId=21990
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TmcUserPermitRequest req = new TmcUserPermitRequest();
req.setTopics(“taobao_bus_TVMTradePay”);
TmcUserPermitResponse rsp = client.execute(req, sessionKey);
System.out.println(rsp.getBody());
返回如下代表成功:


true

查询是否成功:
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TmcUserGetRequest req = new TmcUserGetRequest();
req.setFields(“user_nick,topics,user_id,is_valid,created,modified”);
req.setNick(“testnick”);//改成淘宝账号
req.setUserPlatform(“tbUIC”);
TmcUserGetResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
返回示例:
24196eacd91ceda94f66ca5f396b1e02.png

3、接收消息:
代码示例:

String tmcUrl = “ws://mc.api.taobao.com/"; // 生产环境
String appkey = ”23524574“;//”1023552772“;
String appSecret = ”abbe692c32a26ee150e235e7461ceec7“;//”sandbox3dae91efb347a1e11dea1794f“;
String group = ”default“;
TmcClient tmcClient=new TmcClient(tmcUrl, appkey, appSecret, group);
tmcClient.setMessageHandler(new MessageHandler() {
public void onMessage(Message message, MessageStatus status) throws Exception {
long rTime = System.currentTimeMillis();
// 如果tbDelay比较长说明应用未连接到top接收消息,或消息未处理成功多次重发,引起消息延迟。
long tbDelay = message.getOutgoingTime().getTime() - message.getPubTime().getTime();
// 如果receivDelayTime太长说明网络延迟或者消息处理排队延迟比较长。
long receivDelayTime = rTime - message.getOutgoingTime().getTime();
try{
String topic = message.getTopic();
String jsonMsgContent = message.getContent();
Long userId = message.getUserId();
String userNick = message.getUserNick();
System.out.println(jsonMsgContent);
System.out.println(userNick);
System.out.println(userId);
System.out.println(topic);
boolean needRollBack = false;
// 处理业务数据
if (needRollBack) {
status.fail(); // 业务处理失败主动回滚
}
}catch(Exception e) {
Logger.error(”msg process error:id=" + message.getId(), e);
throw e; // 抛出异常消息会自动重发
} finally {
long bizDelayTime = System.currentTimeMillis() - rTime;
// bizDelayTime比较长,说明业务处理有太慢,应用需要优化
}
}
});

try {
tmcClient.connect();
Thread.sleep(1000000);
} catch (Exception e) {
Logger.error(“connect to top message server error”, e);
// 重试处理
}
}

注意:通过SDK接收消息

目前支持JAVA与.NET语言,其它语言建议采用API接收消息。通过SDK接收消息只需要关注业务的处理,不需要操心消息重发、确认、长连接的重连等操作,SDK会自动处理好一切。

FAQ

关于此文档暂时还没有FAQ
返回
顶部