'liuxuemei@zsma.com.cn',
//飞鹅云后台注册账号后生成的UKEY
'ukey' => 'pMsXhZWu5F65MYyV',
//打印机编号,必须要在管理后台里添加打印机或调用API接口添加之后,才能调用API
'sn' => '',
//host地址
'host' => 'http://api.feieyun.cn:80/Api/Open/',
);
# 生成参数
public function param(&$param)
{
$time = time();
$param['user'] = $this->config['user'];
$param['stime'] = $time;
$param['sig'] = sha1($this->config['user'] . $this->config['ukey'] . $time);
}
# 发送
public function send()
{
$url = $this->config['host'];
$param = $this->param($param);
return Dever::curl($url, $param, 'post');
}
# 添加打印机
public function add()
{
$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;
}
}
打印机编号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}
//标签说明:
//单标签:
//"
"为换行,""为切刀指令(主动切纸,仅限切刀打印机使用才有效果)
//""为打印LOGO指令(前提是预先在机器内置LOGO图片),""为钱箱或者外置音响指令
//成对标签:
//""为居中放大一倍,""为放大一倍,""为居中,字体变高一倍
//字体变宽一倍,""为二维码,""为字体加粗,""为右对齐
//拼凑订单内容时可参考如下格式
//根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式
$content = '测试打印
';
$content .= '名称 单价 数量 金额
';
$content .= '--------------------------------
';
$content .= '饭 10.0 10 100.0
';
$content .= '炒饭 10.0 10 100.0
';
$content .= '蛋炒饭 10.0 10 100.0
';
$content .= '鸡蛋炒饭 10.0 10 100.0
';
$content .= '西红柿炒饭 10.0 10 100.0
';
$content .= '西红柿蛋炒饭 10.0 10 100.0
';
$content .= '西红柿鸡蛋炒饭 10.0 10 100.0
';
$content .= '--------------------------------
';
$content .= '备注:加辣
';
$content .= '合计:xx.0元
';
$content .= '送货地点:广州市南沙区xx路xx号
';
$content .= '联系电话:13888888888888
';
$content .= '订餐时间:2014-08-08 08:08:08
';
$content .= 'http://www.feieyun.com';//把二维码字符串用标签套上即可自动生成二维码
//提示:
//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 = "1";//设定打印时出纸和打印字体的方向,n 0 或 1,每次设备重启后都会初始化为 0 值设置,1:正向出纸,0:反向出纸,
$content .= "#001 五号桌 1/3可乐鸡翅张三先生 13800138000";//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-DD,如:2016-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-DD,如:2019-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);//公共参数,请求公钥
}
?>
}