multi-store/app/common/service/xpyun/XpsdkPrintApi.php

95 lines
2.9 KiB
PHP
Raw Normal View History

<?php
namespace app\common\service\xpyun;
use Xpyun\model\PrintRequest;
use Xpyun\service\PrintService;
/**
* Class XpsdkPrintApi
* 打印示例
*/
class XpsdkPrintApi
{
/**
* 打印服务对象实例化
*/
private $service;
public function __construct()
{
$this->service = new PrintService();
}
/**
* 小票打印字体对齐样例,不支持金额播报
* 注意对齐标签L C R CB 请勿嵌套使用,嵌套使用内层标签有效,外层失效;
* 同一行请勿使用多个对齐标签,否则只有最后一个对齐标签有效
*/
public function printFontAlign($sn,$order)
{
$system_store=$order['system_store'];
$system_phone=$order['system_phone'];
$verify_code=$order['verify_code'];
$order_id=$order['order_id'];
$create_time=$order['create_time'];
$pay_price=$order['pay_price'];
$total_price=$order['total_price'];
$deduction_price=$order['deduction_price'];
$pay_type_name=$order['pay_type_name'];
$printContent = <<<EOF
<C><BOLD><B>{$system_store}</B></BOLD><BR></C>
<L><N>==============================
<L><N>核销码:<BOLD>{$verify_code}</BOLD>
<L><N>单号:{$order_id}
<L><N>下单时间:{$create_time}
<L><N>==============================
<L>单价 数量 小计
<L>
EOF;
// 使用 for 循环生成商品列表
foreach ($order['product_arr'] as $k=>$v) {
$printContent .= <<<EOF
<L>{$v['name']}
<L>{$v['price']} *{$v['quantity']} {$v['subtotal']}
EOF;
}
// 继续生成剩余的 printContent
$printContent .= <<<EOF
<L>
<L><N>==============================
<N>合计:{$total_price}
<L><N>优惠:{$deduction_price}
<L><N>实付款:{$pay_price}
<L><N>支付方式:{$pay_type_name}
<L><N>店铺电话:{$system_phone}
<L><N>==============================
<C><BOLD>欢迎下次光临!</BOLD><BR></C>
EOF;
$request = new PrintRequest();
$request->generateSign();
//*必填*:打印机编号
$request->sn = $sn;
//*必填*:打印内容,不能超过12K
$request->content = $printContent;
//打印份数默认为1
$request->copies = 1;
//声音播放模式0 为取消订单模式1 为静音模式2 为来单播放模式3为有用户申请退单了。默认为 2 来单播放模式
$request->voice = 2;
//打印模式:
//值为 0 或不指定则会检查打印机是否在线,如果不在线 则不生成打印订单,直接返回设备不在线状态码;如果在线则生成打印订单,并返回打印订单号。
//值为 1不检查打印机是否在线直接生成打印订单并返回打印订单号。如果打印机不在线订单将缓存在打印队列中打印机正常在线时会自动打印。
$request->mode = 0;
$result = $this->service->xpYunPrint($request);
return $result->content;
}
}