El comerciante imprime automáticamente el recibo del pedido, lo que se puede hacer

¿Cómo utilizar el desarrollo en la nube para permitir que los programas pequeños impriman tickets pequeños automáticamente?

Muchos comerciantes, especialmente aquellos en la industria de la restauración / supermercados, no pueden recibir nuevos pedidos automáticamente cuando sus pequeños programas reciben nuevos pedidos, lo que causa grandes inconvenientes para su distribución y entrega. Por lo tanto, esperan que el pequeño programa pueda acoplarse con la impresora de tickets pequeños para imprimir automáticamente el ticket pequeño. Hoy presentaremos cómo realizar esta función a través del desarrollo de la nube.

1. Prepare una impresora de tickets de red

Tomemos como ejemplo la marca del ganso volador. Primero compre una impresora Flying Goose, luego regístrese como desarrollador en el sitio web Flying Goose, agregue esta impresora, USER y UKEY se utilizarán en el fondo de desarrollo de la nube para llamar a la impresora.

2. Llame a la impresora en el fondo del desarrollo de la nube

Entre todas las interfaces de la impresora, la más importante es la interfaz de "orden de impresión para máquinas de tickets pequeñas". En esta interfaz, vemos que solo necesitamos ensamblar los parámetros de impresión y enviarlos a la URL a través de una solicitud POST.

El código es muy simple, como sigue:

request('http://api.feieyun.cn/Api/Open/', qs.stringify(postData))

postData son los datos que se enviarán, porque la impresora requiere que el encabezado de la solicitud sea:
application / x-www-form-urlencoded , por lo tanto, preste atención al encabezado de la solicitud y los datos de la solicitud deben ser empalmados por qs.stringify (). En cuanto al contenido específico de postData se introducirá en el paso 3.

3. composición de postData

Según la documentación, los datos consisten en una combinación de nombre de usuario, marca de tiempo, firma, nombre de interfaz, número de impresora, contenido de impresión y tiempos de impresión. Simplemente combinamos los datos según sea necesario.

El código es muy simple, como sigue:

  const postData = {
      user: USER,   //用户名 
      stime:timeStamp, //时间戳
      sig: crypto.createHash('sha1').update(USER + UKEY + timeStamp).digest('hex'),//签名
      apiname: "Open_printMsg",
      sn: printer, //打印机编号
      content: util.formatOrderInfo (orderInfo), //打印内容
      times: times,//打印份数
    };

4. El efecto de impresión es el siguiente

5. Imprimir código de referencia de formato

Procesamiento de contenido impreso:

const formatOrderInfo = function (cloudOrder, name = '') {
var orderInfo = '<CB>' + name + ' 新订单</CB><BR>';
orderInfo = '<B>' + cloudOrder.startDate + '</B><BR><BR>';
orderInfo += '名称  数量  单价  总价<BR>';
orderInfo += '--------------------------------<BR>';
for (var i = 0; i < cloudOrder.products.length; i++) {
  let price = cloudOrder.products[i].price
  orderInfo += cloudOrder.products[i].name + ' ' + cloudOrder.products[i].label + hanleSpace(cloudOrder.products[i].name + ' ' + cloudOrder.products[i].label, 16) + cloudOrder.products[i].number + hanleSpace(cloudOrder.products[i].number.toString(), 4) + price + hanleSpace(price.toString(), 6) + parseFloat(parseFloat(cloudOrder.products[i].number * price).toFixed(2)) + '<BR><BR>';
}
if (cloudOrder.coupon) orderInfo += "优惠券抵扣: -" + cloudOrder.coupon.disCount + "<BR>";
if (cloudOrder.remark) orderInfo += "<B>备注:" + cloudOrder.remark + "</B><BR>";
orderInfo += '--------------------------------<BR>';
orderInfo += '<B>总计:' + cloudOrder.amount + '元</B><BR>';
orderInfo += '<B>' + cloudOrder.linkMan + ' ' + cloudOrder.mobile + "</B><BR>";
if (cloudOrder.city || cloudOrder.address) orderInfo += '<B>' + cloudOrder.city + cloudOrder.address + "</B><BR>";

orderInfo += '支付方式:' + cloudOrder.payWay + "<BR>";
orderInfo += '下单时间:' + cloudOrder.dateTime + "<BR>";
orderInfo += "订单编号:" + cloudOrder.orderId + "<BR>";
orderInfo += "下单手机:" + cloudOrder.phoneNumber + "<BR>";
orderInfo += "会员卡号:" + cloudOrder.cardNumber + "<BR>";

//orderInfo += '<QR>http://www.pcloud.ac.cn</QR>'; 
return orderInfo
  }

Manejo del espacio:

const hanleSpace = function (item, widht) {
  var len = 0;
  for (var j = 0; j < item.length; j++) {
var c = item.charCodeAt(j);
//单字节加1 
if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
  len++;
} else {
  len += 2;
}
  }
  let tmp = widht - len % 32
  len = tmp > 0 ? tmp : 32 + tmp;
  var kong = '';
  for (var a = 0; a < len; a++) {
kong += ' ';
  }
  return kong
}

Supongo que te gusta

Origin www.cnblogs.com/CloudBase/p/12704712.html
Recomendado
Clasificación