博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
外卖小程序对接飞鹅小票打印的实现
阅读量:5978 次
发布时间:2019-06-20

本文共 3388 字,大约阅读时间需要 11 分钟。

 

外卖点餐在流程处理上是争分夺秒的,大多数买家都是临近饭点才点餐,这样下单之后就会盼望着能尽快送到,作为点餐流程环节一部分的小票打印也就要求越便捷越省时间越好。小票云打印因为其小巧便捷、无线联网、自动打印而成为首选的外卖小程序小票打印解决方案。

酷客多外卖小程序的小票打印对接了易联云、飞鹅两家,其中飞鹅小票打印机因为自带接单语音提醒所以更受欢迎。云打印的原理类似,对接方式大同小异。下文以飞鹅云打印为例详细说明。

1. 小票云打印的工作原理

云打印服务商在互联网上发布一套开放API作为小票云服务,商家(从云打印服务商)购买小票打印机后将打印机通过Wi-Fi连接互联网,外卖小程序与开放API对接,完成小票打印机远程注册、推送待打印数据等工作。小票云服务通过互联网将待打印数据推送到对应的小票打印机,小票打印机打印出小票。

 

图1 云打印的工作原理

2. 飞鹅云打印开放API

  • 添加打印机到开发者账户(可批量)
  • 打印订单
  • 删除打印机(可批量)
  • 修改打印机信息
  • 清空待打印队列
  • 查询订单是否打印成功
  • 查询某台打印机某日订单统计数
  • 查询某台打印机状态

3. 对接开放API的准备工作

(1) 在飞鹅云服务后台注册开发者账户

(2) 小票打印机接通电源,配置Wi-Fi密码连接互联网

飞鹅小票打印机接通电源后,会在小票上自动打印联网配置的二维码。手机改为Wi-Fi上网,用微信扫描二维码,即出现填写Wi-Fi密码界面,填写密码后点击“连接”按钮连接网络,成功后打印机会打印一张小票给出提示。

图2 微信扫码配置打印机Wi-Fi密码

4. 开发对接API的框架(打印框架)

(1) 打印框架类图

框架支持水平扩展,可适配多家云打印开放API。对应于开放API里面的各个方法,一对一地编写打印框架的方法。

框架方法与开放API的交互封装在一个通用方法里面,传入参数、返回数据都是泛型,在具体的业务方法里面传递相应的数据类型及实参。

图3 打印框架类图

图4 封装的对接方法

(2) 通用方法

1 ///  2 /// 调用飞鹅接口通用方法 3 ///  4 /// 
接口返回的业务实体类型
5 ///
接口传入的业务实体类型
6 /// 接口Url 7 /// 商户编号(创建商户账号分配的编号),不需要时传递空字符串 8 /// 接口传入的业务实体 9 /// 序列化业务实体时是否包含空值属性10 /// 是否需要对参数值进行Url转义,默认不需要11 ///
12 public IApiResult
CallFeiEApi
(string apiUrl, string method, Dictionary
methodParameters, bool isIncludeNullProperty = true, bool needEscapeParameterValue = false)13 {14 ApiResult
apiResult = new ApiResult
();15 ApiParameterContainer apiParameterContainer = null;16 17 try18 {19 string unixTimestamp = HttpAgent.GetUnixTimestamp(DateTime.Now);20 apiParameterContainer = new ApiParameterContainer(unixTimestamp)21 {22 AppId = appId,23 AppKey = appKey,24 Signature = ComputeSign(appId, appKey, unixTimestamp),25 ApiMethod = method26 };27 28 if (methodParameters != null && methodParameters.Count > 0)29 {30 foreach (var methodParameter in methodParameters)31 {32 if (!apiParameterContainer.Parameters.ContainsKey(methodParameter.Key))33 {34 apiParameterContainer.Parameters.Add(methodParameter.Key, methodParameter.Value);35 }36 }37 }38 39 //40 // 调用接口,获取返回值41 //42 string responseText = HttpAgent.DoPost(apiUrl, apiParameterContainer.Parameters, needEscapeParameterValue, "application/x-www-form-urlencoded");43 44 //45 // 提取返回数据46 //47 apiResult = JsonConvert.DeserializeObject
>(responseText);48 }49 catch (Exception ex)50 {51 Log(string.Format("调用飞鹅接口出错,Url:{0},传入数据:{1},错误:{2}", apiUrl, JsonConvert.SerializeObject(apiParameterContainer, Formatting.None), ex.ToString()));52 }53 54 return apiResult;55 }

 

其中,ComputeSign()方法使用开发者Key计算出接口请求的哈希值,具体哈希算法由每个云打印服务商指定。HttpAgent.DoPost()方法将数据转换为表单键值对序列形式发起POST请求,注意必须指定Web请求的ContentType标头为“application/x-www-form-urlencoded”,否则无法正常使用开放API。

5. 在业务系统里使用打印框架

(1) 商家填写并注册打印机

商家从打印机的机身标签查找编号、识别码,填入表单,自定义一个打印机名称以便于区分多台打印机,如果需要使用GPRS联网则填入放置在打印机里面的手机卡号。若要该打印机在接单时自动打印小票则勾选“接单自动小票打印”复选框。

在保存时,商家后台系统在本地保存打印机信息,并调用打印框架在云端注册打印机。注册成功后则会显示云端注册状态为“已注册”。

图5 商家填写并注册打印机

(2) 商家手动打印小票

商家在商家后台系统查询、浏览所接的订单,可以根据需要手动打印某个订单的小票。打印时先选择需要打印小票的一到多台打印机,点击“打印”按钮调用打印框架完成打印。

图6 商家浏览订单

图7 商家选择打印机

6. 附录

飞鹅云打印开发文档:

飞鹅云后台(注册开发者):

酷客多商家后台:

 

酷客多小程序  陈苏州

转载地址:http://oisox.baihongyu.com/

你可能感兴趣的文章
linux用户管理的命令及手动添加用户
查看>>
Windows 7 家庭版如何启用Administrator账户
查看>>
我的友情链接
查看>>
mfs权威指南
查看>>
只是你没那么重要罢了
查看>>
javabean的初步认识学习
查看>>
GTK 安装步骤
查看>>
js 生成随机13位国际条码 支持获取校验位
查看>>
java根据开始时间和结束时间,计算中间天数,并打印
查看>>
Android apk的安装、卸载、更新升级(通过Eclipse实现静默安装)
查看>>
android幻灯片效果实现-Gallery
查看>>
node中exports与module.exports的区别
查看>>
PHP学习笔记2:文件
查看>>
jsrender简单使用
查看>>
window mysql-bin 转化为可读模式
查看>>
redis 安装及php扩展编译安装
查看>>
MPAndroidChart---饼状图PieChart
查看>>
PHP中基于b2core框架内部的网页上Html输出生成Word的处理
查看>>
采用Servlet Listener方式运行Liquibase
查看>>
TCP-IP 学习(三) TCP
查看>>