消息服务 

概述

目前服务商开发者需要定时调用API来保证数据和YHD保持一致,中间的时延可能导致很多问题。

基于这样的需求,开放平台推出了主动通知技术,目的是提供一个实时向客户端推送数据通道。

目前向外推送订单和退换货相关消息。

消息服务的使用

一、APP(应用)订阅消息

访问open.yhd.com,选择应用管理进入主动通知管理页面,服务商开发者根据自己的需求,选择需要的消息类型进行订阅,并可取消订阅。

注:此功能目前未支持,但需要进行邮件申请,默认为应用开通所有类型消息。

 

 

邮件格式

      标题:app消息服务开通申请

      内容:需要开通消息服务的appId以及说明使用消息服务的背景和原因

    

二、用户授权应用获取消息

调用接口yhd.msg.user.permit授权获取指定用户的消息。此api调用需要传入sessionkey,传入哪个seseionkey表示获取哪个用户的消息。

sessionkey获取参见http://open.yhd.com/opendoc.do?categoryId=42

取消用户的消息服务,调用l接口yhd.msg.user.cance即可。
三、接收消息

正式环境请求地址:ws://ws.openapi.yhd.com/

消息服务相关apihttp://open.yhd.com/doc2/apiList.do?cateName=messageAPI

目前只支持JAVA版客户端,下载最新的SDK即可。

Java代码:
        CometClient client = new CometClient("appKey", "secretKey");
        client.setMessageHandler(new MessageHandler() {
            
            /**
            * 不抛出异常,会自动给服务端发送确认信息;抛出异常,则不会发送确认信息
            **/
            @Override
            public void onMessage(Message message) throws Exception {
                System.out.println(message.getTopic());
                System.out.println(message.getContent());
            }
        });
        client.connect();

注:采用Java main方法在Eclipse里面运行上面的测试代码时,请在client.connect()后面加上Thread.sleep让main线程等待一段时间结束,以便观察消息的接收情况,否则main线程结束后,长连接也会跟着断开。如果是在web服务器上运行上面的代码,则不用在client.connect()后面加任何Thread.sleep代码,也不需要在外面包一层while(true)循环,因为web服务器上的主线程只要服务器不关闭都是不会结束的,长连接会一直保持。

消息类型说明

类型 消息名 消息中文名 消息产生
订单 yhd_orderCreate 订单创建  
  yhd_orderModify 订单编辑  
  yhd_orderCancel 订单取消  
  yhd_orderDelete 订单删除  
  yhd_orderPay 订单付款  
  yhd_orderSend 订单发货  
  yhd_orderReceived 订单收货  
  yhd_orderFinish 订单完成  
退换货 yhd_refundCreate 退换货申请  
  yhd_refundAudit 退换货审核  
  yhd_refundFinish 退换货完成  
  yhd_refundCancel 退换货取消  

常见问题

1. 消息丢失会重发吗?

目前没有重发机制,如果连接断开,在此期间产生的消息将会丢失。

2. 如何判断消息属于哪个店铺

根据返回内容中的merchantId来进行区分。

3. 用户到期了,还会不会收到消息?

消息服务推送的判断条件是sessionkey在有效期内,因此sessionkey到期就不会推送消息了。

4. 用一个appKey多起几个连接,会不会每个连接都收到一份消息?

不会,一个消息会选取一个连接进行发送,即所有连接分摊所有消息。

 

提示

关闭