# 消息推送 消息推送是开放平台主动调用开发者服务的一个通道,用于向应用推送订单状态变更、打印机状态变更等消息。开发者需要在应用管理的后台,设置需要监听的消息类型的推送URL,当有该种类型的消息产生时,开发平台会向应用设置的URL发送HTTP POST数据,达到通知应用的目的。 ### 推送协议 当有应用订阅的消息事件发生时,开放平台会通过请求应用设置的消息推送地址进行消息的投递。 1. 开放平台以HTTP POST 的方式进行消息推送请求。 2. 开放平台消息推送请求的HTTP Header中的contentType 为“application/x-www-form-urlencoded” 3. 为了防止推送消息被篡改,开放平台进行推送的时候会有简单签名,签名规则见【[签名规则](callback/signrule.md)】,应用需要自行校验消息数据。 4. 应用在消息处理完成后,需要回复HTTP Response的code 200 以及body为{"data":"OK"},表示此次推送消息接收成功。 5. 推送请求如果3s内没有收到响应头为200响应,平台认为此次推送不成功,不管因为什么原因,平台都会重新发起推送(总推送次数不超过3次(<=3))。 6. 应用收到推送HTTP请求后,必须在3s内完成响应,否则平台认为超时响应,会重复推送,造成双方资源浪费。 7. 应用需要自行处理重复推送造成的消息重复。 8. 为了方便未来的消息内容升级,应用需要兼容处理当前消息中不存在的字段。 9. 应用需要支持推送地址的GET访问,当GET请求访问时,请直接返回{"data":"OK"},用于推送地址的可用性测试。 ### cmd cmd的识别标示,用于业务判断 ### 所需参数 |标 识|描 述| |----|----| |oauth_finish|打印完成状态推送| |oauth_request| 按键请求推送 仅支持K2S、K3S| |oauth_printStatus|打印机实时状态推送| |oauth_getOrder|接单拒单状态推送| |oauth_printMenu|应用菜单上报推送|