123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460 |
- <?php
- namespace Mshop\Lib;
- use Dever;
- class Feieyun
- {
- private $config = array
- (
- //飞鹅云后台注册账号
- 'user' => '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;
- }
- }
- <?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-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);//公共参数,请求公钥
- }
- ?>
- }
|