在微信公众号和H5网页开发中,常常需要开发调用打印机进行小票打印操作,通常的做法是调用蓝牙打印机,但是蓝牙打印机由于蓝牙连接的原因,往往稳定性差,需要客户端配合才能发挥好的效果,另外蓝牙打印机距离受限制,手机不能离蓝牙打印机太远,接下我给大家介绍一种云端方案。
云打印我的理解是打印机直连云端,打印需求方通过api调用云服务器,云服务器下发订单到打印机。此方案可以解决蓝牙打印机和usb打印机的诸多缺陷,特别适合外卖单,堂食单,网上商超,收银支付,后厨菜单,仓库订单等场景。
查阅网上资料得知成都优声科技出了云打印机,于是对接了他们,现分享一个网页版的demo,后端是用PHP写的,方便有需要的朋友对接学习。
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>热敏小票打印</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="py-5 text-center">
<img class="d-block mx-auto mb-4" src="http://www.zhongwu.co/images/logo/logo-zhongwu-black.png" alt="" width="272" height="72">
<h2>调用打印机</h2>
<p class="lead">优声云打印机可以通过http接口调用,以下参数请去https://www.ushengyun.com获取</p>
</div>
<div class="row">
<div class="col-md-8 order-md-1">
<h4 class="mb-3">请填写如下表单</h4>
<form class="needs-validation" novalidate method="post" action="print.php">
<div class="mb-3">
<label for="username">APPID</label>
<div class="input-group">
<input type="text" class="form-control" id="username" placeholder="请填写appid" name="appid" required>
<div class="invalid-feedback" style="width: 100%;">
请填写appid
</div>
</div>
</div>
<div class="mb-3">
<label for="email">APPSECRET</label>
<input type="email" class="form-control" id="email" placeholder="请填写appsecret" name="appsecret" required>
<div class="invalid-feedback">
请填写appsecret
</div>
</div>
<div class="mb-3">
<label for="address">打印机终端号</label>
<input type="text" class="form-control" id="address" placeholder="请输入打印机终端号" required name="device_id">
<div class="invalid-feedback">
请输入打印机终端号
</div>
</div>
<div class="mb-3">
<label for="address2">打印机秘钥</label>
<input type="text" class="form-control" id="address2" placeholder="请输入打印机秘钥" name="device_secret" required>
<div class="invalid-feedback">
请输入打印机秘钥
</div>
</div>
<div class="mb-3">
<label for="address2">打印内容</label>
<textarea type="text" class="form-control" id="address2" placeholder="请输入打印内容" name="printdata" required></textarea>
<div class="invalid-feedback">
请输入打印内容
</div>
</div>
<hr class="mb-4">
<button class="btn btn-primary btn-lg btn-block" type="submit">提交打印</button>
</form>
</div>
</div>
<footer class="my-5 pt-5 text-muted text-center text-small">
<p class="mb-1">© 2017-2021 优声科技&优声云打印机</p>
<ul class="list-inline">
<li class="list-inline-item"><a href="https://www.ushengyun.com">技术支持</a></li>
</ul>
</footer>
</div>
</body>
</html>
print.php
<?php
require_once __DIR__ . "/../vendor/autoload.php";
$app_id = $_POST['appid'];
$app_secret = $_POST['appsecret'];
$device_id = $_POST['device_id'];
$device_secret = $_POST['device_secret'];
$rpc = new \ushengyun\protocol\RpcClient($app_id, $app_secret);
$Zprinter = new \ushengyun\Printer($rpc);
$printdata = empty($_POST['printdata']) ? '优声云拥有自主研发的云打印机,提供稳定高效,高可用的云打印方案' : $_POST['printdata'];
try {
var_dump($Zprinter->set_args($device_id, $device_secret)->cloud_print($printdata));
} catch (Exception $e) {
echo $e;
}
下载链接 SDK下载
打印效果:
不得不说,还是很理想的