'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);//公共参数,请求公钥 } ?> }