外卖小程序实战-接单后小票机自动打印订单

发布于:2024-04-17 ⋅ 阅读:(38) ⋅ 点赞:(0)

1、导入小票机的sdk

https://www.feieyun.com/api/API-JAVA.zip

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);
            }
          }
      }
      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;
  
}

 

查看这个添加打印机的方法。

他这个方法不是我想要的,目前这个方法是将user和ukey写死,只能传入打印机列表参数。

而我们需要设置user和ukey,所以得把它这个方法魔改一下。

 

2、制作需要的请求类 

@Data
@Schema(description = "添加小票机")
public class FeieyunRequestDto {

    private static final String API_NAME = "Open_printerAddlist";

    @Schema(description = "飞鹅云后台注册用户名")
    private  String user;
    private  String ukey;
    @Schema(description = "当前UNIX时间戳,10位,精确到秒。")
    private  String stime;
    /**
     * 对参数user+UKEY+stime 拼接后(+号表示连接符)
     * 进行SHA1加密得到签名,加密后签名值为40位小写字符串。
     */
    private  String sig;
    @Schema(description = "请求的接口名称")
    private  String apiname;
    /**
     * debug=1返回非json格式的数据。仅测试时候使用。
     */
    private  String debug;
    /**
     * 打印机编号(必填) # 打印机识别码(必填)
     * # 备注名称(选填) # 流量卡号码(选填),
     * 多台打印机请换行(\n)添加新打印机信息,每次最多100台。
     */
    private  String printerContent;
}

 

3、更改请求参数

 

4、单元测试

本来我的帐号是没有添加小票机的

执行程序 

 

程序执行完毕,可以看到我的设备列表里新增了一台打印机,而打印机的名字也跟我程序里的“测试打印机”刚好相符,说明我们的程序是没问题的。 

 

5、集成接口 

 

 

6、测试接口 

 

 

成功了。 

 

7、打印的测试结果

打印方法的改造和接口的写法跟上面差不多,不再赘述。

用户支付成功后调用小票机打印接口,实现自动打印。

看实验效果,成功了