6. jiace开放平台消息推送

6.1. 推送方式

 嘉策开放平台向接入商推送实时的业务变更消息,保持数据的一致性以及同步,满足接入商业务需求,避免轮询。推送的数据消息,将以http post的方式向该推送地址发起调用,把数据推送给接入商。接入商接收失败时,消息中心会自动重发N次(一般3次)。如果还是失败,则将消息保存入库,接收方可通过补偿API来拉取接收失败的消息。失败消息一般保存7天,请及时拉走,否则消息会被丢弃。

推送消息格式

消息数据以Json格式发送,消息提供统一的模板;不同业务的消息,仅通过消息类型来区分,具体的业务消息内容,参考各个业务消息说明。
属性 类型 说明
msgId Number 消息ID,消息唯一性标识
gmtBorn Number 消息推送时间
data String 具体推送的业务消息数据,json格式,具体参数参考消息列表说明
userId String 用户id
type String 消息类型,每个业务消息都唯一对应一个类型,参考业务消息的类型定义 

6.2. 推送说明

httpCallback

http消息回调通道,isv提供一个http服务,配置url地址;开放平台采用短连接的方式调用http服务,推送消息,开放平台推送中心发送post请求,包含两个参数,编码格式统一为UTF-8,统一按照key/value格式推送,

参数说明:

属性 类型 说明 备注
参数键值 参数值 说明 备注
message 消息的json串  消息体 对接方获取这个参数的值,然后通过json的反序列化,就得到了消息模型,如210239
signature 签名  针对消息的一个签名,可防篡改 1970.1.1到现在的毫秒数

消息签名说明

仅对消息内容进行签名计算,签名算法同开放平台的算法
http 推送POST请求示例:

Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Connection: close
Accept: */*
User-Agent: NING/1.0
Content-Length: 248
message={"data":{"key":"value"},"gmtBorn":1527556000,"msgId":70299002,"type":"PRODUCT_PRODUCT_EXPIRE","userId":"CBU_MemberId"}&signature=65F2AA13AE9C9C9DFE8682EFB90B32F37CB01BE1

推送成功说明

收到消息之后,只要设置返回的response http status code =200就认为是消息消费成功; 如果http status code!=200,就认为是消息消费失败,推送中心后续会重试,默认重试3次

6.3. 消息补偿API

针对推送失败的消息,我们提供补偿API机制,让商家能够主动来查询失败消息列表,做一些补偿的逻辑。 商家请求开放平台接口获取失败的消息列表,获取的消息默认自动会做消费成功的确认。所以下次以相同条件调用获取的是剩下的数据,直至返回数据为空。

获取失败的消息列表API:

请求地址:https://open.jiacedata.com/v1/warehouse-service/message/getFailedMessage

签名方式:与签名规则相同

入参:

名称 类型 是否必须 描述 示例值
createStartTime java.util.Date 消息创建时间查找范围开始 20130417000000000+0800
createEndTime java.util.Date 消息创建时间查找范围结束 20130417000000000+0800
quantity int 每次取的数据量,范围20-200,默认20 20
type String 消息类型 ORDER_BUYER_MAKER
userId String 用户Id b2b-4137495171f2513

出参:

名称 类型 描述 示例值
messageList List 推送消息列表 ["",""]
msgId long 消息唯一id  
type String 消息类型  
userId String 消息关联的用户userId  
data java.util.Map 消息内容 json格式,具体内容参考消息列表  
gmtBorn long 消息创建的时间戳,单位毫秒  

json返回结果:


								
{
   "pushMessageList": 
   [ 
		{ 
			"gmtBorn": 1399182274000, 
			"data":
			{
				"buyOfferId": 123, 
				"subUserId": 123
			 },
			"msgId": 123456, 
			"type": "CAIGOU_MSG_BUYER_PUBLISH_BUYOFFER", 
			"userId": "userId"
 	   }
    ] 
 }
								
								

6.4. 消息列表

消息名称 消息type 请求示例
商品修改 PRODUCT_MODIFY

{
	"type":"PRODUCT_MODIFY",  //消息类型
	"data":{
		"goodsId": 662112483578   //商品id
		"modifyType":1    //变更类型,1:下架,2:上架,3:删除,4:修改
	}
	"msgId": 123456,  //消息ID
	"userId": "userId" //用户id
}
商品价格变动消息 PRODUCT_PRICE_MODIFY

{
	"type":"PRODUCT_PRICE_MODIFY", //消息类型
	"data":{
		"goodsId": 679304426617,  //商品id
		"activeTime": 1662426000000, //变动时间
		"skuUpdateInfos": [
		    {
			"skuId": 4851072600824,    //skuId
			"histoyPrice": 1550,      //历史价格(分)
			"price":12232,            //变化后的批发价格(分)
			"retailPrice":16000      //变化后建议卖价(分)
		    }
		]
	},
	"msgId": 123456, 
	"userId": "userId"
}
商品库存变更消息 PRODUCT_INVENTORY_CHANGE

{
	"type":"PRODUCT_INVENTORY_CHANGE", //消息类型
	"data":{
		"OfferInventoryChangeList": [
			{
				"goodsId": 1234567890, //商品id
				"goodsOnSale": 100, //商品库存
				"skuId": 1234567890, //skuId
				"skuOnSale": 20, //sku数量
				"quantity": -10, //sku库存变化数量
				"bizTime": "1564984329147" //变更时间
			}
		]
	},
	"msgId": 123456, 
	"userId": "userId"
}
 
订单发货 ORDER_SENDGOODS n

{
	"type":"ORDER_SENDGOODS", //消息类型
	"data":{
		"tradeNo": 167539019420540000,  //订单号
		"userId": "665170100", //用户id
		"deliveryNo": "Sf1212421412" //快递单号
	},
	"msgId": 123456, 
	"userId": "userId"
} 
 
订单售后退款

ORDER_REFUND

 


 


{
	"type":"ORDER_REFUND", //消息类型
	"data":{
		"tradeNo": "32432423432432", //订单号
		"refundAction": "AGREE_REFUND", //售后结果:AGREE_REFUND:同意退款,AGREE_REFUND_PROTOCOL:同意退货 ,REFUND_CLOSE:退款关闭,REJECT_REFUND:拒绝退款
		"operator": "seller",//操作的发起人,buyer(买家),seller(卖家),system(系统)
		"refundId": "1234567"  //售后单号 
		"reciveAddress":{   //退货收件人信息 refundAction=AGREE_REFUND_PROTOCOL时才有值,其他状态都为空   
			"sellerMobile":"15388888888",  //收件人手机号
			"sellerRealName":"张三",  //收件人姓名,
			"sellerReceiveAddress":"北京市朝阳区迎宾大道223号",  //收件地址
			"sellerTel":"0851-55103011" //收件人电话
		}
	},
	"msgId": 123456,  
	"userId": "userId"
}