场景:用户通过外链提交数据,提交后自动打印小票,方便后续业务使用。
要求:
- 用户无需手动执行打印操作,无感打印。
- 打印机无需连接电脑,可远程打印。
- 考虑成本原因,不使用简道云API,使用前端事件实现。
思路:计划通过简道云 前端事件 发送打印数据到云打印机,但向打印机发送数据的时候,发现多家云打印机都要求对参数进行加密签名,如:飞鹅要求对参数进行SHA1加密,但简道云没有SHA1函数,理论上可以自己写一个SHA1公式出来,但太麻烦。这个时候考虑引入云函数来实现SHA1加密,得到SHA1后再通过前端事件POST数据到云打印机。
步骤:
参考:
备注:
- 云函数的唯一功能就是对参数进行SHA1签名。
- 即使数据最后没有提交,也会打印票据,需要根据实际场景灵活使用。
打印效果见附件。 最后,感谢简道云提供如此高效、高性价比的产品!
编辑于 2021-4-26 22:16
--------------------------------------------------------------------------------------------------------------------------- 4月29日补充
关于云函数:云函数的用途就是获取签名,本文中飞鹅要求拼接参数后,进行sha1签名。腾讯云提供了免费的云函数和API网关,简道云也有封装接口的视频教程:https://edu.fanruan.com/video/play/1741,
现在就利用腾讯免费提供的云函数,来给我们做sha1签名,我使用的PHP(临时学习的,效果是做到了,但可能写的不规范),流程就是简道云把一段字符传给云函数,然后云函数利用PHP内置的sha1函数,获取到签名,再返还给简道云。以下是php的代码。阿里云、百度云一样的流程。
-
function main_handler($event, $context) {
- print "start main handler\n";
- $event = json_decode(json_encode($event), true);
- $str = $event['headers']['str'];
- $sha = sha1($event['headers']['str']);
-
-
//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
|