打印接口回调
<p><strong>简要描述:</strong></p>
<ul>
<li>如果商户在飞印公众号中设置了其回调地址,那么飞印平台在有特定事件发生时,会主动通过这个回调地址往第三方系统push事件通知。</li>
<li>譬如:当商户名下所有的机器的消息打印完毕后,飞印平台会立即通过回调向商户的系统通知该打印完成事件。</li>
<li>当商户名下的设备离线/上线/缺纸等情况发生时也会通知到第三方系统。</li>
</ul>
<p><strong>请求方式:</strong></p>
<ul>
<li>POST,JSON提交</li>
</ul>
<p><strong>异常重试策略:</strong></p>
<ul>
<li>如果商户的系统没有响应(譬如在维护或网络异常),飞印平台会依次按照如下时间间隔(秒)共重试7次:1, 3, 6, 9, 12, 15, 18秒(一共64秒)</li>
</ul>
<p><strong>参数:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">msg_type</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>回调的消息类型,主要有<br><strong>msg_printed</strong> 消息打印回调<br> <strong>device_status</strong> 打印机状态变更回调</td>
</tr>
<tr>
<td style="text-align: left;">payload</td>
<td style="text-align: left;">否</td>
<td style="text-align: left;">object</td>
<td>回调消息体,object格式视msg_type的值而定,详见下面说明</td>
</tr>
</tbody>
</table>
<ul>
<li>当msg_type=<strong>msg_printed</strong>时,payload为下列对象</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">device_no</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>机器编号</td>
</tr>
<tr>
<td style="text-align: left;">msg_no</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>商户在 <a href="https://www.showdoc.cc/home/page/index/page_id/82826059039914" title="发送消息">发送消息</a>时指定的关联id: <strong>msg_no</strong> 如果没有关联,飞印平台会自动生成一个uuid代替</td>
</tr>
<tr>
<td style="text-align: left;">print_time</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>打印完成的时间,yyyy-MM-dd HH:mm:ss</td>
</tr>
<tr>
<td style="text-align: left;">secret</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>签名,把device_no,msg_no, print_time和API_KEY 的值按顺序直接拼接起来,做MD5加密: md5(把device_no + msg_no + print_time + API_KEY)</td>
</tr>
</tbody>
</table>
<p><strong>请求示例</strong></p>
<pre><code>{
"msg_type":"msg_printed",
"payload": {
"device_no": "4600408123456789",
"print_time": "2017-08-01 10:03:04",
"msg_no":"some-thirdparty-id",
"secret": "005eabe86be0b7de3cee8cfbffeff96a"
}
}</code></pre>
<ul>
<li>当msg_type=<strong>device_status</strong>时,payload为下列对象</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">必选</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">device_no</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>机器编号</td>
</tr>
<tr>
<td style="text-align: left;">online_status</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>打印机在线运行状态,包括:<br> <strong>online</strong> 在线 <br> <strong>offline</strong> 离线 <br> <strong>overheat</strong> 打印头过热 <br> <strong>error</strong> 打印机系统故障</td>
</tr>
<tr>
<td style="text-align: left;">paper_status</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>打印机纸张状态,包括:<br> <strong>normal</strong> 正常 <br> <strong>lack</strong> 缺纸</td>
</tr>
<tr>
<td style="text-align: left;">secret</td>
<td style="text-align: left;">是</td>
<td style="text-align: left;">string</td>
<td>签名,把device_no,online_status, paper_status和API_KEY 的值按顺序直接拼接起来,做MD5加密: md5(把device_no + online_status + paper_status + API_KEY)</td>
</tr>
</tbody>
</table>
<p><strong>请求示例</strong></p>
<pre><code>{
"msg_type":"device_status",
"payload": {
"device_no": "4600408123456789",
"online_status": "online",
"paper_status":"normal",
"secret": "1122abe86be0b7de3cee8cfbffef3344"
}
}</code></pre>
<p>对于所有飞印平台发出的回调请求,飞印平台会预期得到第三方系统返回如下response,</p>
<pre><code>{
"errcode": 0,
"errmsg" : "ok"
}</code></pre>
<p><strong>返回参数说明</strong></p>
<table>
<thead>
<tr>
<th style="text-align: left;">参数名</th>
<th style="text-align: left;">类型</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">errcode</td>
<td style="text-align: left;">number</td>
<td>返回状态,0为成功,非0表示第三方系统未能正确处理飞印发送过来的回调请求</td>
</tr>
<tr>
<td style="text-align: left;">errmsg</td>
<td style="text-align: left;">string</td>
<td>错误说明,当errcode为0时为"ok",否则需要填写出错说明</td>
</tr>
</tbody>
</table>