jh-admin/addon/printer/data/sdk/Feie/API_PHP_DEMO.php

404 lines
15 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
header("Content-type: text/html; charset=utf-8");
include 'HttpClient.class.php';
define('USER', 'xxxxxxxxxxxxxxxxx'); //*必填*:飞鹅云后台注册账号
define('UKEY', 'xxxxxxxxxxxxxxxxx'); //*必填*: 飞鹅云后台注册账号后生成的UKEY 【备注这不是填打印机的KEY】
define('SN', 'xxxxxxxxxxxxxxxxx'); //*必填*打印机编号必须要在管理后台里添加打印机或调用API接口添加之后才能调用API
//以下参数不需要修改
define('IP','api.feieyun.cn'); //接口IP或域名
define('PORT',80); //接口IP端口
define('PATH','/Api/Open/'); //接口路径
//*************************************方法1 批量添加打印机接口*************************************************
//***接口返回值说明***
//正确例子:{"msg":"ok","ret":0,"data":{"ok":["sn#key#remark#carnum","316500011#abcdefgh#快餐前台"],"no":["316500012#abcdefgh#快餐前台#13688889999 (错误:识别码不正确)"]},"serverExecutedTime":3}
//错误:{"msg":"参数错误 : 该帐号未注册.","ret":-2,"data":null,"serverExecutedTime":37}
//提示:
//$printerConten => 打印机编号sn(必填) # 打印机识别码key(必填) # 备注名称(选填) # 流量卡号码(选填),多台打印机请换行(\n添加新打印机信息每次最多100台。
//打开注释可测试
//$printerContent = "sn1#key1#remark1#carnum1\nsn2#key2#remark2#carnum2";
//printerAddlist($printerContent);
//****************************************方法2 小票机打印订单接口****************************************************
//***接口返回值说明***
//正确例子:{"msg":"ok","ret":0,"data":"123456789_20160823165104_1853029628","serverExecutedTime":6}
//错误例子:{"msg":"错误信息.","ret":非零错误码,"data":null,"serverExecutedTime":5}
//标签说明:
//单标签:
//"<BR>"为换行,"<CUT>"为切刀指令(主动切纸,仅限切刀打印机使用才有效果)
//"<LOGO>"为打印LOGO指令(前提是预先在机器内置LOGO图片),"<PLUGIN>"为钱箱或者外置音响指令
//成对标签:
//"<CB></CB>"为居中放大一倍,"<B></B>"为放大一倍,"<C></C>"为居中,<L></L>字体变高一倍
//<W></W>字体变宽一倍,"<QR></QR>"为二维码,"<BOLD></BOLD>"为字体加粗,"<RIGHT></RIGHT>"为右对齐
//拼凑订单内容时可参考如下格式
//根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式
$content = '<CB>测试打印</CB><BR>';
$content .= '名称      单价 数量 金额<BR>';
$content .= '--------------------------------<BR>';
$content .= '饭       10.0 10 100.0<BR>';
$content .= '炒饭      10.0 10 100.0<BR>';
$content .= '蛋炒饭     10.0 10 100.0<BR>';
$content .= '鸡蛋炒饭    10.0 10 100.0<BR>';
$content .= '西红柿炒饭   10.0 10 100.0<BR>';
$content .= '西红柿蛋炒饭  10.0 10 100.0<BR>';
$content .= '西红柿鸡蛋炒饭 10.0 10 100.0<BR>';
$content .= '--------------------------------<BR>';
$content .= '备注:加辣<BR>';
$content .= '合计xx.0元<BR>';
$content .= '送货地点广州市南沙区xx路xx号<BR>';
$content .= '联系电话13888888888888<BR>';
$content .= '订餐时间2014-08-08 08:08:08<BR>';
$content .= '<QR>http://www.feieyun.com</QR>';//把二维码字符串用标签套上即可自动生成二维码
//提示:
//SN => 打印机编号
//$content => 打印内容,不能超过5000字节
//$times => 打印次数默认为1。
//打开注释可测试
// printMsg(SN,$content,1);//该接口只能是小票机使用,如购买的是标签机请使用下面方法3调用打印
//****************************************方法3 标签机专用打印订单接口****************************************************
//***接口返回值说明***
//正确例子:{"msg":"ok","ret":0,"data":"123456789_20160823165104_1853029628","serverExecutedTime":6}
//错误例子:{"msg":"错误信息.","ret":非零错误码,"data":null,"serverExecutedTime":5}
//标签说明:
$content = "<DIRECTION>1</DIRECTION>";//设定打印时出纸和打印字体的方向n 0 或 1每次设备重启后都会初始化为 0 值设置1正向出纸0反向出纸
$content .= "<TEXT x='9' y='10' font='12' w='1' h='2' r='0'>#001 五号桌 1/3</TEXT><TEXT x='80' y='80' font='12' w='2' h='2' r='0'>可乐鸡翅</TEXT><TEXT x='9' y='180' font='12' w='1' h='1' r='0'>张三先生 13800138000</TEXT>";//40mm宽度标签纸打印例子打开注释调用标签打印接口打印
//提示:
//SN => 打印机编号
//$content => 打印内容,不能超过5000字节
//$times => 打印次数默认为1。
//打开注释可测试
// printLabelMsg(SN,$content,1);//打开注释调用标签机打印接口进行打印,该接口只能是标签机使用,其它型号打印机请勿使用该接口
//**************************************方法4 批量删除打印机**************************************************
//***接口返回值说明***
//成功:{"msg":"ok","ret":0,"data":{"ok":["123456789成功"],"no":[]},"serverExecutedTime":5}
//错误:{"msg":"ok","ret":0,"data":{"ok":[],"no":["12345678打印机不存在"]},"serverExecutedTime":2}
//错误:{"msg":"ok","ret":0,"data":{"ok":[],"no":["123456789用户UID不匹配"]},"serverExecutedTime":3}
//提示:
//$snlist => 打印机编号,多台打印机请用减号"-"连接起来。
//打开注释可测试
// $snlist = "123456789";
// printerDelList($snlist);
//************************************方法5 修改打印机信息接口************************************************
//***接口返回值说明***
//成功:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":5}
//错误:{"msg":"参数错误 : 参数值不能传空字符,\"\"、\"null\"、\"undefined\".","ret":-2,"data":null,"serverExecutedTime":1}
//提示:
//SN => 打印机编号
//$name => 打印机备注名称
//$phonenum => 打印机流量卡号码
//打开注释可测试
//$name = "飞鹅云打印机";
//$phonenum = "01234567891011121314";
// printerEdit(SN,$name,$phonenum);
//************************************方法6 清空待打印订单接口************************************************
//***接口返回值说明***
//成功:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":4}
//错误:{"msg":"验证失败 : 打印机编号和用户不匹配.","ret":1002,"data":null,"serverExecutedTime":3}
//错误:{"msg":"参数错误 : 参数值不能传空字符,\"\"、\"null\"、\"undefined\".","ret":-2,"data":null,"serverExecutedTime":2}
//提示:
//SN => 打印机编号
//打开注释可测试
// delPrinterSqs(SN);
//*********************************方法7 查询订单是否打印成功接口*********************************************
//***接口返回值说明***
//正确例子:
//已打印:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":6}
//未打印:{"msg":"ok","ret":0,"data":false,"serverExecutedTime":6}
//提示:
//$orderid => 订单ID由方法1接口Open_printMsg返回。
//打开注释可测试
//$orderid = "123456789_20160823165104_1853029628";//订单ID从方法1返回值中获取
//queryOrderState($orderid);
//*****************************方法8 查询指定打印机某天的订单统计数接口*****************************************
//***接口返回值说明***
//正确例子:
//{"msg":"ok","ret":0,"data":{"print":6,"waiting":1},"serverExecutedTime":9}
//错误:{"msg":"验证失败 : 打印机编号和用户不匹配.","ret":1002,"data":null,"serverExecutedTime":3}
//提示:
//$date => 查询日期格式YY-MM-DD2016-09-20
//打开注释可测试
// $date = "2016-09-20";
// queryOrderInfoByDate(SN,$date);
//***********************************方法9 获取某台打印机状态接口***********************************************
//***接口返回值说明***
//正确例子:
//{"msg":"ok","ret":0,"data":"离线","serverExecutedTime":9}
//{"msg":"ok","ret":0,"data":"在线,工作状态正常","serverExecutedTime":9}
//{"msg":"ok","ret":0,"data":"在线,工作状态不正常","serverExecutedTime":9}
//提示:
//SN => 填打印机编号
//打开注释可测试
// queryPrinterStatus(SN);
/**
* [批量添加打印机接口 Open_printerAddlist]
* @param [string] $printerContent [打印机的sn#key]
* @return [string] [接口返回值]
*/
function printerAddlist($printerContent){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_printerAddlist',
'printerContent'=>$printerContent
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [打印订单接口 Open_printMsg]
* @param [string] $sn [打印机编号sn]
* @param [string] $content [打印内容]
* @param [string] $times [打印联数]
* @return [string] [接口返回值]
*/
function printMsg($sn,$content,$times){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_printMsg',
'sn'=>$sn,
'content'=>$content,
'times'=>$times//打印次数
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
//服务器返回的JSON字符串建议要当做日志记录起来
$result = $client->getContent();
echo $result;
}
}
/**
* [标签机打印订单接口 Open_printLabelMsg]
* @param [string] $sn [打印机编号sn]
* @param [string] $content [打印内容]
* @param [string] $times [打印联数]
* @return [string] [接口返回值]
*/
function printLabelMsg($sn,$content,$times){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_printLabelMsg',
'sn'=>$sn,
'content'=>$content,
'times'=>$times//打印次数
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
//服务器返回的JSON字符串建议要当做日志记录起来
$result = $client->getContent();
echo $result;
}
}
/**
* [批量删除打印机 Open_printerDelList]
* @param [string] $snlist [打印机编号,多台打印机请用减号“-”连接起来]
* @return [string] [接口返回值]
*/
function printerDelList($snlist){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_printerDelList',
'snlist'=>$snlist
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [修改打印机信息接口 Open_printerEdit]
* @param [string] $sn [打印机编号]
* @param [string] $name [打印机备注名称]
* @param [string] $phonenum [打印机流量卡号码,可以不传参,但是不能为空字符串]
* @return [string] [接口返回值]
*/
function printerEdit($sn,$name,$phonenum){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_printerEdit',
'sn'=>$sn,
'name'=>$name,
'phonenum'=>$phonenum
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [清空待打印订单接口 Open_delPrinterSqs]
* @param [string] $sn [打印机编号]
* @return [string] [接口返回值]
*/
function delPrinterSqs($sn){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_delPrinterSqs',
'sn'=>$sn
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [查询订单是否打印成功接口 Open_queryOrderState]
* @param [string] $orderid [调用打印机接口成功后,服务器返回的JSON中的编号 例如123456789_20190919163739_95385649]
* @return [string] [接口返回值]
*/
function queryOrderState($orderid){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_queryOrderState',
'orderid'=>$orderid
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [查询指定打印机某天的订单统计数接口 Open_queryOrderInfoByDate]
* @param [string] $sn [打印机的编号]
* @param [string] $date [查询日期格式YY-MM-DD2019-09-20]
* @return [string] [接口返回值]
*/
function queryOrderInfoByDate($sn,$date){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_queryOrderInfoByDate',
'sn'=>$sn,
'date'=>$date
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [获取某台打印机状态接口 Open_queryPrinterStatus]
* @param [string] $sn [打印机编号]
* @return [string] [接口返回值]
*/
function queryPrinterStatus($sn){
$time = time(); //请求时间
$msgInfo = array(
'user'=>USER,
'stime'=>$time,
'sig'=>signature($time),
'apiname'=>'Open_queryPrinterStatus',
'sn'=>$sn
);
$client = new HttpClient(IP,PORT);
if(!$client->post(PATH,$msgInfo)){
echo 'error';
}else{
$result = $client->getContent();
echo $result;
}
}
/**
* [signature 生成签名]
* @param [string] $time [当前UNIX时间戳10位精确到秒]
* @return [string] [接口返回值]
*/
function signature($time){
return sha1(USER.UKEY.$time);//公共参数,请求公钥
}
?>