123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443 |
- package com.yijia.station.utils;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.http.HttpEntity;
- import org.apache.http.NameValuePair;
- import org.apache.http.client.config.RequestConfig;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.CloseableHttpResponse;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.impl.client.CloseableHttpClient;
- import org.apache.http.impl.client.HttpClients;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.util.EntityUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- /***
- * <Title> FeiEPrinterUtil </Title>
- * <Description> 飞鹅打印机工具类 </Description>
- * @date 2021年1月17日
- * @Author JK
- */
- public class FeiEPrinterUtil {
- private static Logger logger =(Logger) LoggerFactory.getLogger(FeiEPrinterUtil.class);
- /*飞鹅后台管理登录账号
- 账号:79800875@qq.com
- 密码:jk18654585051
- */
- public static final String URL = "http://api.feieyun.cn/Api/Open/";//不需要修改
- public static final String USER = "79800875@qq.com";//*必填*:账号名
- public static final String UKEY = "ScyIqKvntVSJkWhz";//*必填*: 飞鹅云后台注册账号后生成的UKEY 【备注:这不是填打印机的KEY】
- //public static final String SN = "*********";//*必填*:打印机编号,必须要在管理后台里添加打印机或调用API接口添加之后,才能调用API
- /*
- * //================================小票打印功能===========================================//
- * ***返回值JSON字符串***
- * 成功:{"msg":"ok","ret":0,"data":"xxxxxxx_xxxxxxxx_xxxxxxxx","serverExecutedTime":5}
- * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5}
- * @param sn
- * @return
- */
- public static String printReceipt(String sn, String content){
- //标签说明:
- //单标签:
- //"<BR>"为换行,"<CUT>"为切刀指令(主动切纸,仅限切刀打印机使用才有效果)
- //"<LOGO>"为打印LOGO指令(前提是预先在机器内置LOGO图片),"<PLUGIN>"为钱箱或者外置音响指令
- //成对标签:
- //"<CB></CB>"为居中放大一倍,"<B></B>"为放大一倍,"<C></C>"为居中,<L></L>字体变高一倍
- //<W></W>字体变宽一倍,"<QR></QR>"为二维码,"<BOLD></BOLD>"为字体加粗,"<RIGHT></RIGHT>"为右对齐
- //拼凑订单内容时可参考如下格式
- //根据打印纸张的宽度,自行调整内容的格式,可参考下面的样例格式
- //String content;
- // content = "<CB>测试打印</CB><BR>";
- // content += "名称 单价 数量 金额<BR>";
- // content += "--------------------------------<BR>";
- // content += "饭 1.0 1 1.0<BR>";
- // content += "炒饭 10.0 10 10.0<BR>";
- // content += "蛋炒饭 10.0 10 100.0<BR>";
- // content += "鸡蛋炒饭 100.0 1 100.0<BR>";
- // content += "番茄蛋炒饭 1000.0 1 100.0<BR>";
- // content += "西红柿蛋炒饭 1000.0 1 100.0<BR>";
- // content += "西红柿鸡蛋炒饭 100.0 10 100.0<BR>";
- // content += "备注:加辣<BR>";
- // content += "--------------------------------<BR>";
- // content += "合计:xx.0元<BR>";
- // content += "送货地点:广州市南沙区xx路xx号<BR>";
- // content += "联系电话:13888888888888<BR>";
- // content += "订餐时间:2016-08-08 08:08:08<BR>";
- // content += "<QR>http://www.dzist.com</QR>";
- //通过POST请求,发送打印信息到服务器
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(30000)//读取超时
- .setConnectTimeout(30000)//连接超时
- .build();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(requestConfig)
- .build();
- HttpPost post = new HttpPost(URL);
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- nvps.add(new BasicNameValuePair("user",USER));
- String STIME = String.valueOf(System.currentTimeMillis()/1000);
- nvps.add(new BasicNameValuePair("stime",STIME));
- nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME)));
- nvps.add(new BasicNameValuePair("apiname","Open_printMsg"));//固定值,不需要修改
- nvps.add(new BasicNameValuePair("sn",sn));
- nvps.add(new BasicNameValuePair("content",content));
- nvps.add(new BasicNameValuePair("times","1"));//打印联数
- CloseableHttpResponse response = null;
- String result = null;
- try
- {
- post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
- response = httpClient.execute(post);
- int statecode = response.getStatusLine().getStatusCode();
- if(statecode == 200){
- HttpEntity httpentity = response.getEntity();
- if (httpentity != null){
- //服务器返回的JSON字符串,建议要当做日志记录起来
- result = EntityUtils.toString(httpentity);
- logger.info("小票打印功能返回结果信息:" +result);
- }
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally{
- try {
- if(response!=null){
- response.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- post.abort();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return result;
- }
- /*
- * //================================查询某订单是否打印成功=====================================//
- * ***返回值JSON字符串***
- * 成功:{"msg":"ok","ret":0,"data":true,"serverExecutedTime":2}//data:true为已打印,false为未打印
- * 失败:{"msg":"错误描述","ret":非0, "data":null,"serverExecutedTime":7}
- * @param orderid
- * @return
- */
- public static String queryOrderState(String orderid){
- //通过POST请求,发送打印信息到服务器
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(30000)//读取超时
- .setConnectTimeout(30000)//连接超时
- .build();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(requestConfig)
- .build();
- HttpPost post = new HttpPost(URL);
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- nvps.add(new BasicNameValuePair("user",USER));
- String STIME = String.valueOf(System.currentTimeMillis()/1000);
- nvps.add(new BasicNameValuePair("stime",STIME));
- nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME)));
- nvps.add(new BasicNameValuePair("apiname","Open_queryOrderState"));//固定值,不需要修改
- nvps.add(new BasicNameValuePair("orderid",orderid));
- CloseableHttpResponse response = null;
- String result = null;
- try
- {
- post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
- response = httpClient.execute(post);
- int statecode = response.getStatusLine().getStatusCode();
- if(statecode == 200){
- HttpEntity httpentity = response.getEntity();
- if (httpentity != null){
- //服务器返回
- result = EntityUtils.toString(httpentity);
- logger.info("查询某订单是否打印成功信息:" + result);
- }
- }
- }
- catch (Exception e){
- e.printStackTrace();
- }
- finally{
- try {
- if(response!=null){
- response.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- post.abort();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return result;
- }
- /*
- * //=====================查询指定打印机某天的订单详情==========================//
- * ***返回值JSON字符串***
- * 成功:{"msg":"ok","ret":0,"data":{"print":6,"waiting":1},"serverExecutedTime":9}//print已打印,waiting为打印
- * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5}
- * @param sn
- * @param strdate
- * @return
- */
- public static String queryOrderInfoByDate(String sn,String strdate){
- //通过POST请求,发送打印信息到服务器
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(30000)//读取超时
- .setConnectTimeout(30000)//连接超时
- .build();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(requestConfig)
- .build();
- HttpPost post = new HttpPost(URL);
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- nvps.add(new BasicNameValuePair("user",USER));
- String STIME = String.valueOf(System.currentTimeMillis()/1000);
- nvps.add(new BasicNameValuePair("stime",STIME));
- nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME)));
- nvps.add(new BasicNameValuePair("apiname","Open_queryOrderInfoByDate"));//固定值,不需要修改
- nvps.add(new BasicNameValuePair("sn",sn));
- nvps.add(new BasicNameValuePair("date",strdate));//yyyy-MM-dd格式
- CloseableHttpResponse response = null;
- String result = null;
- try{
- post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
- response = httpClient.execute(post);
- int statecode = response.getStatusLine().getStatusCode();
- if(statecode == 200){
- HttpEntity httpentity = response.getEntity();
- if (httpentity != null){
- //服务器返回
- result = EntityUtils.toString(httpentity);
- logger.info("查询指定打印机某天的订单详情: "+result);
- }
- }
- }
- catch (Exception e){
- e.printStackTrace();
- }
- finally{
- try {
- if(response!=null){
- response.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- post.abort();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return result;
- }
- /*
- * //=====================查询打印机的状态==============================//
- * ***返回值JSON字符串***
- * 成功:{"msg":"ok","ret":0,"data":"状态","serverExecutedTime":4}
- * 失败:{"msg":"错误描述","ret":非0,"data":"null","serverExecutedTime":5}
- * @param sn
- * @return
- */
- public static String queryPrinterStatus(String sn){
- //通过POST请求,发送打印信息到服务器
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(30000)//读取超时
- .setConnectTimeout(30000)//连接超时
- .build();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(requestConfig)
- .build();
- HttpPost post = new HttpPost(URL);
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- nvps.add(new BasicNameValuePair("user",USER));
- String STIME = String.valueOf(System.currentTimeMillis()/1000);
- nvps.add(new BasicNameValuePair("stime",STIME));
- nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME)));
- nvps.add(new BasicNameValuePair("apiname","Open_queryPrinterStatus"));//固定值,不需要修改
- nvps.add(new BasicNameValuePair("sn",sn));
- CloseableHttpResponse response = null;
- String result = null;
- try{
- post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
- response = httpClient.execute(post);
- int statecode = response.getStatusLine().getStatusCode();
- if(statecode == 200){
- HttpEntity httpentity = response.getEntity();
- if (httpentity != null){
- //服务器返回
- result = EntityUtils.toString(httpentity);
- logger.info("查询打印机的状态: "+result);
- }
- }
- }
- catch (Exception e){
- e.printStackTrace();
- }
- finally{
- try {
- if(response!=null){
- response.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- post.abort();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return result;
- }
- /*
- * //==================添加打印机接口(支持批量)==================
- * //***返回值JSON字符串***
- * //正确例子:{"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}
- *
- * //提示:打印机编号(必填) # 打印机识别码(必填) # 备注名称(选填) # 流量卡号码(选填),多台打印机请换行(\n)添加新打印机信息,每次最多100行(台)。
- * // String snlist = "sn1#key1#remark1#carnum1\nsn2#key2#remark2#carnum2";
- * // String method = addprinter(snlist);
- * // System.out.println(method);
- * @param snlist
- * @return
- */
- public static String addprinter(String snlist){
- //通过POST请求,发送打印信息到服务器
- RequestConfig requestConfig = RequestConfig.custom()
- .setSocketTimeout(30000)//读取超时
- .setConnectTimeout(30000)//连接超时
- .build();
- CloseableHttpClient httpClient = HttpClients.custom()
- .setDefaultRequestConfig(requestConfig)
- .build();
- HttpPost post = new HttpPost(URL);
- List<NameValuePair> nvps = new ArrayList<NameValuePair>();
- nvps.add(new BasicNameValuePair("user",USER));
- String STIME = String.valueOf(System.currentTimeMillis()/1000);
- nvps.add(new BasicNameValuePair("stime",STIME));
- nvps.add(new BasicNameValuePair("sig",signature(USER,UKEY,STIME)));
- nvps.add(new BasicNameValuePair("apiname","Open_printerAddlist"));//固定值,不需要修改
- nvps.add(new BasicNameValuePair("printerContent",snlist));
- CloseableHttpResponse response = null;
- String result = null;
- try{
- post.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
- response = httpClient.execute(post);
- int statecode = response.getStatusLine().getStatusCode();
- if(statecode == 200){
- HttpEntity httpentity = response.getEntity();
- if (httpentity != null){
- result = EntityUtils.toString(httpentity);
- logger.info("添加打印机接口: " + result);
- }
- }
- }
- catch (Exception e){
- e.printStackTrace();
- }
- finally{
- try {
- if(response!=null){
- response.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- post.abort();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- httpClient.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return result;
- }
- /*
- * 生成签名字符串
- * @param USER
- * @param UKEY
- * @param STIME
- * @return
- */
- private static String signature(String USER,String UKEY,String STIME){
- String s = DigestUtils.sha1Hex(USER+UKEY+STIME);
- return s;
- }
- }
|