有赞新零售社区

发帖
有赞云历史板块»请大家尽快接入Push数据推送服务

请大家尽快接入Push数据推送服务

有赞-墨迹 2016-07-22 30773 浏览 37 评论 | 只看楼主 [打印]


各位商家、各位合作伙伴:

感谢大家一路相伴!

有赞开放平台自2014年初开放了API接口,帮助商家通过接口的形式与ERP进销存等系统完成无缝对接。目前,由于商家交易量持续增长,每日接口调用量持续走高,已发生多起调用超出系统承受能力的事件。

为让大家能更高效调用接口资源,保障系统稳定运行,我们决定将在2016年8月18日-9月18日期间,推动自行开发系统的商家和第三方ERP合作伙伴从原有的轮询拉取方式升级到Push数据推送方式。

Push数据推送方式,开发者和商家无需再定时不断抓取订单。当有订单产生,状态变更,商品更新等变化后,有赞会主动推送变更信息到外部开发者系统,如此可有效提高了外部调用的效率,减少外部系统和有赞的服务器资源消耗,提升数据开放服务能力。

由于目前接口调用的服务压力越来越大,我们将在9月18日后针对API接口调用发布限流策略、设定阈值(但不影响Push数据推送服务),以确保整个有赞交易系统、买家购物体验不因接口调用超限发生大面积使用故障。由此带来不便,请大家谅解。

同时,为了保障订单数据、商品数据、库存数据的正常对接,请自行开发进销存系统商家和正在服务大量商家的第三方ERP合作伙伴,在9月18日前尽快完成有赞Push数据推送服务的接入、切换。

数据推送服务接入过程中,有赞开放平台团队将与大家紧密配合,给予及时、必要、到位的技术支持。联系人:有赞墨迹;工作微信:yemoji

感谢您对有赞开放平台的支持!

8月18日
有赞开放平台


有赞开放平台Push数据推送服务接入指南
背景:
目前有赞接口授权方式分为两种:免签名(第三方开发者)和签名通讯协议(适用于商家)
授权过程中,获取消息的方式必须是由商家或第三方主动向有赞发起申请,开放平台接到具体参数的请求后,如果请求正确则返回具体参数对应的正确消息,如请求错误则返回错误报告。

为什么要用数据推送功能
举个案例:某餐饮外卖的门店商家在有赞开店,利用有赞周边的小票打印机来实现自动接单打印订单,因外卖的订单及时性非常高,需要自动接单打印后快速备货配送。所以,我们的打印机合作伙伴只能不间断的轮询我们的接口,频繁到一分钟抓取一次订单甚至更短。直接增加了第三方和商家的调用成本。同时,对有赞的服务器也带来了超大的压力。

Push 功能上线后,外部开发者和商家无需再定时不断抓取我们的接口消息,当有订单产生,状态变更,商品更新等变化后,有赞会主动推送变更信息到外部开发者,如此,有效提高了外部调用的效率,也减轻了有赞服务器的压力。

备注:现在只开放推送交易接口信息,更多信息推送将陆续开放。

Push推送接入——

消息推送模式 :
     1. 商家自有消息推送  (适用于有自主开发能力的商家)
     2. 服务商消息推送  (适用于服务商,需要商家授权)

商家自有消息接入:
     一 .  商家后台配置管理 “推送服务”
     a. 登陆商家后台 选择“营销”—>  “有赞API”  页面  ,启用 “开关 ”
     b.  “API数据主动推送服务 ”  填写 “推送网址”  ,勾选 需要推送的内容
     

     二 . 消息推送&解析
     a.  消息结构体定义
属性
类型
释义
mode
number
0-商家自有消息推送
1-服务商消息推送
id
String
业务消息的标识: 订单消息为订单编号
appid
String
对应商户后台的appid
type
enum
消息业务类型:TRADE-交易
msg
String
经过unicodeUTF-8)编码的消息对象  :交易对象参考 TradeDetail
kdt_id
number
店铺ID
sign
String
防伪签名  MD5(appid+msg+appSecrect)
version
long
消息版本号 为了解决顺序性的问题 ,高版本覆盖低版本
test
boolean
false-非测试消息    true- 测试消息 PUSH 服务会定期通过发送测试消息检查 商家服务是否正常
send_count
number
重发的次数  
status
String
订单状态

     b. 推送服务消息推送: (重要)
       1. 消息推送服务通过 POST 、参数编码为APPLICATION/JSON 的方式向商家提供的地址推送消息
       2. 当推送没有成功返回 (超时时间为5秒),会进入重发 。最多重发三次, 分别间隔 10S 、 30S 、 60S  。三次重发后如果还是失败 ,该消息丢弃。
       3. 当推送某个商家服务连续失败时 ,商家服务会被添加到 亚健康列表中。在亚健康列表的商家服务将无法接收到消息,并且期间产生的消息 会被丢弃
       4. 推送服务会定期检查亚健康列表中的商家服务是否恢复正常,正常的服务会被从该列表中移除

    c. 消息接收以及返回:(重要)

     1.消息接收协议参考推送服务的约定
     2. 接收服务返回 {"code":0,"msg":"success"}  通知推送服务成功接收. 由于服务端设置5秒的超时时间,建议接收到消息后异步处理自有的业务。注意接收测试消息也请返回 {"code":0,"msg":"success"}  
     3. 消息解析 :
     1)判断消息是否测试  —> 解析test
     2)判断消息推送的模式—> 解析mode
     3)判断消息是否伪造 —> 解析sign
     4)  判断消息版本  —> 解析version
     5)  判断消息的业务类型 —> 解析type
     6)  处理消息体 —> 解码msg  ,反序列化消息结构体
     7)  返回成功标识

--------------------------------------------

服务商消息推送接入:

     一 . 开发者后台&商户后台 配置推送服务
     a. 开发者后台开启推送服务
     
     b.  商家需要到商家后台将推送权限授权给服务商  
     

   二 . 消息推送&解析

     a.  消息结构体定义     
属性
类型
释义
mode
number
0-商家自由消息推送
1-服务商消息推送
id
String
业务消息的标识: 订单消息为订单编号
client_id
String
对应开发者后台的client_id
type
enum
消息业务类型:TRADE-交易
msg
String
经过unicodeUTF-8)编码的消息对象  :交易对象参考 TradeDetail
kdt_id
number
店铺ID
sign
String
防伪签名  MD5(client_id+msg+client_secrect)
version
long
消息版本号 为了解决顺序性的问题 ,高版本覆盖低版本
test
boolean
false-非测试消息    true- 测试消息 PUSH 服务会定期通过发送测试消息检查 商家服务是否正常
send_count
number
重发的次数  
status
String
订单状态

     b. 推送服务消息推送: (重要)

     1. 消息推送服务通过 POST 、参数编码为APPLICATION/JSON 的方式向开发者提供的地址推送消息
     2. 当推送没有成功返回 (超时时间为5秒),会进入重发 。最多重发三次, 分别间隔 10S 、 30S 、 60S  。三次重发后如果还是失败 ,该消息丢弃。
     3. 当推送某个服务连续失败时 ,该服务地址会被添加到 亚健康列表中。在亚健康列表的服务将无法接收到消息,并且期间产生的消息会被丢弃
     4. 推送服务会定期检查亚健康列表中的商家服务是否恢复正常,正常的服务会被从该列表中移除
   
      c. 消息接收以及返回:(重要)

       1. 消息接收协议参考推送服务的约定
       2. 接收服务收到消息请返回 {"code":0,"msg":"success"}  通知推送服务成功接收. 由于服务端设置5秒的超时时间,建议接收到消息后异步处理自有的业务。注意接收测试消息也请返回 {"code":0,"msg":"success"}  。

       3. 消息解析 :
       1)判断消息是否测试  —> 解析test
       2)判断消息推送的模式—> 解析mode
       3)判断消息是否伪造 —> 解析sign
       4)  判断消息版本  —> 解析version
       5)  判断消息的业务 —> 解析type
       6)  处理消息体 —> 解码msg  ,反序列化消息结构体
       7)  返回成功标识

Demo 下载:
java-demo   php-demo
PS:   

1.  关于交易消息 有可能会出现同版本号的消息  这里需要判断交易状态。


本帖最后由 有赞-墨迹 于 2017-6-20 18:08 编辑
用手机打开
收藏 1 ··· 回复
    Noahzi   青铜   2016-08-03 | 只看该作者
    你好,请问我对接了开放平台,开启了订单推送,订单改变的时候有推送,但是接收的消息是空的,我用的php 、$_POST 来接收的,问题出在哪里呢? client_id 是 46ab7292a87f580fe4

      小鲜粮   青铜   2016-08-04 | 只看该作者
      Noahzi 发表于 2016-8-3 14:33
      你好,请问我对接了开放平台,开启了订单推送,订单改变的时候有推送,但是接收的消息是空的,我用的php 、 ...


      getInputStream拿。

        有调试工具之类的吗?或者demo?

          老冯家的橘子铺 发表于 2016-8-8 14:28
          有调试工具之类的吗?或者demo?


          没有调试工具暂时,我们会做的

            申时   青铜   2016-08-11 | 只看该作者
            当推送某个商家服务连续失败时 ,商家服务会被添加到 亚健康列表中。在亚健康列表的商家服务将无法接收到消息,并且期间产生的消息 会被丢弃
            接收服务返回 {"code":0,"msg":"success"}  通知推送服务成功接收. 由于服务端设置5秒的超时时间,建议接收到消息后异步处理自有的业务
            <?php
                $Code = array(
                    'code' => 0,
                    'msg'  => 'success'
                );
                异步处理
                return json_encode($Code);
            ?>
            问题1:我直接return 后还是进了亚健康列表中。
            问题2:通知推送服务成功的接口地址是什么。
            问题3:什么时候能出亚健康列表

              NAN   青铜   2016-08-12 | 只看该作者
              有赞收银台支付成功会推送吗?
              客来乐互联网收银台,一小时实现传统收银台互联网化。

                CT_T   青铜   2016-08-12 | 只看该作者
                申时 发表于 2016-8-10 16:14
                当推送某个商家服务连续失败时 ,商家服务会被添加到 亚健康列表中。在亚健康列表的商家服务将无法接收到消 ...


                1. 检查是否有返回正确的格式
                2. 不需要额外的接口 ,只需要收到推送的请求后 ,返回即可
                3.  目前系统是 整点和半点 会做亚健康列表 的服务检查  


                  CT_T   青铜   2016-08-12 | 只看该作者
                  NAN 发表于 2016-8-11 16:26
                  有赞收银台支付成功会推送吗?


                  跟订单相关的变化都会推送

                    胡玏   青铜   2016-08-17 | 只看该作者
                    没有demo好忧伤啊

                      胡玏   青铜   2016-08-17 | 只看该作者
                      request.getInputStream();  java用这个就可以接受了.  花了不少时间

                        1234跳至
                        您需要登录后才可以回帖 登录 | 立即注册

                        本版积分规则

                        复制链接
                        新浪微博
                        QQ空间
                        微信扫码
                        • 回复

                        • 评分

                        客服工作时间是9:00-18:00,客服妹子当前不在线,若不能及时回复请谅解。试试右上角的搜索吧,论坛有丰富的经验贴、公告贴,相信一定能够帮到您~

                        复制成功