【赏金猎人第一期】利用前端事件、云打印机、云函数 ,现实远程自动打印(思路分...
场景:用户通过外链提交数据,提交后自动打印小票,方便后续业务使用。143470要求:
用户无需手动执行打印操作,无感打印。
打印机无需连接电脑,可远程打印。
考虑成本原因,不使用简道云API,使用前端事件实现。
思路:计划通过简道云 前端事件 发送打印数据到云打印机,但向打印机发送数据的时候,发现多家云打印机都要求对参数进行加密签名,如:飞鹅要求对参数进行SHA1加密,但简道云没有SHA1函数,理论上可以自己写一个SHA1公式出来,但太麻烦。这个时候考虑引入云函数来实现SHA1加密,得到SHA1后再通过前端事件POST数据到云打印机。
步骤:
购买云打印机,常见品牌:飞鹅、易联云。本文使用飞鹅58小票云打印机;
注册飞鹅开发者账号,https://admin.feieyun.com/regist.php,绑定打印机;
在腾讯云(或者阿里云、百度云)开通并设置云函数。(有免费额度,一般都够用)。
在简道云通过两次前端事件实现自动打印。
参考:
简道云前端事件帮助文档 https://hc.jiandaoyun.com/open/12115
飞鹅开发文档 http://feieyun.com/open/index.html?name=1
腾讯云 云函数 帮助文档 https://cloud.tencent.com/document/product/583
备注:
云函数的唯一功能就是对参数进行SHA1签名。
即使数据最后没有提交,也会打印票据,需要根据实际场景灵活使用。
打印效果见附件。最后,感谢简道云提供如此高效、高性价比的产品!
编辑于 2021-4-26 22:16
---------------------------------------------------------------------------------------------------------------------------4月29日补充
关于云函数:云函数的用途就是获取签名,本文中飞鹅要求拼接参数后,进行sha1签名。腾讯云提供了免费的云函数和API网关,简道云也有封装接口的视频教程:https://edu.fanruan.com/video/play/1741,143539
现在就利用腾讯免费提供的云函数,来给我们做sha1签名,我使用的PHP(临时学习的,效果是做到了,但可能写的不规范),流程就是简道云把一段字符传给云函数,然后云函数利用PHP内置的sha1函数,获取到签名,再返还给简道云。以下是php的代码。阿里云、百度云一样的流程。
function main_handler($event, $context) {
print "start main handler\n";
$event = json_decode(json_encode($event), true);
$str = $event;
$sha = sha1($event);
//Generate return msg from API Gateway 构造API网关返回值
$rep = array(
"isBase64Encoded" => false,
"statusCode"=> 200,
"headers"=> array(
"Content-Type"=>"text/html"
),
"body"=> "{\"sig\":\" $sha \"}",
);
//$rep = json_encode($rep.true)
return $rep;
}
?>
复制代码
编辑于 2021-4-29 17:43 编辑于 2021-4-29 20:58