飞鹅云打印 API_C#
2023-09-11 14:13:58 时间
飞鹅云打印: 提交订单支付成功后台自动打印,实现无人销售,自动打印,后台统计打印记录功能;
有自带WIFY:连接到wify就可以打印小票;
有自动SIM卡:第1年免流量费,第2年30一年
#region 飞鹅云打印-API
//飞鹅云打印
public string print(string USER, string UKEY, string SN, string merchantName, string payType, string payTotalMoney, string realyPayTotalMoney, string payStatus, string orderNo, string deviceNo, string qrurl)
{
//标签说明:
//单标签:
//"<BR>"为换行,"<CUT>"为切刀指令(主动切纸,仅限切刀打印机使用才有效果)
//"<LOGO>"为打印LOGO指令(前提是预先在机器内置LOGO图片),"<PLUGIN>"为钱箱或者外置音响指令
//成对标签:
//"<CB></CB>"为居中放大一倍,"<B></B>"为放大一倍,"<C></C>"为居中,<L></L>字体变高一倍
//<W></W>字体变宽一倍,"<QR></QR>"为二维码,"<BOLD></BOLD>"为字体加粗,"<RIGHT></RIGHT>"为右对齐
public string print(string USER, string UKEY, string SN, string merchantName, string payType, string payTotalMoney, string realyPayTotalMoney, string payStatus, string orderNo, string deviceNo, string qrurl)
{
//标签说明:
//单标签:
//"<BR>"为换行,"<CUT>"为切刀指令(主动切纸,仅限切刀打印机使用才有效果)
//"<LOGO>"为打印LOGO指令(前提是预先在机器内置LOGO图片),"<PLUGIN>"为钱箱或者外置音响指令
//成对标签:
//"<CB></CB>"为居中放大一倍,"<B></B>"为放大一倍,"<C></C>"为居中,<L></L>字体变高一倍
//<W></W>字体变宽一倍,"<QR></QR>"为二维码,"<BOLD></BOLD>"为字体加粗,"<RIGHT></RIGHT>"为右对齐
//string USER = //*必填*:登录管理后台的账号名
//string UKEY =//*必填*: 注册账号后生成的UKEY
//string SN = //*必填*:打印机编号,必须要在管理后台里手动添加打印机或者通过API添加之后,才能调用API
//string UKEY =//*必填*: 注册账号后生成的UKEY
//string SN = //*必填*:打印机编号,必须要在管理后台里手动添加打印机或者通过API添加之后,才能调用API
string URL = "http://api.feieyun.cn/Api/Open/";//不需要修改
//拼凑订单内容时可参考如下格式
string orderInfo;
//orderInfo = "<CB>中国福彩惠州</CB><BR>";
//orderInfo += "<BR>";
//orderInfo += "--------------------------------<BR>";
//orderInfo += "交易类型:" + " 微信支付<BR>";
//orderInfo += "总金额:" + " 100.00元<BR>";
//orderInfo += "用户实付:" + " 100.00元<BR>";
//orderInfo += "支付状态:" + " 支付完成<BR>";
//orderInfo += "--------------------------------<BR>";
//orderInfo += "订单编号:" + "<BR>";
//orderInfo += "终端编号:" + SN + "<BR>";
//orderInfo += "台号:" + " *** <BR>";
//orderInfo += "日期:" + System.DateTime.Now + " <BR>";
//orderInfo += "----------请扫描二维码----------";
//orderInfo += "<QR>http://www.dzist.com</QR>";//把二维码字符串用标签套上即可自动生成二维码
//orderInfo += "<BR>";
string orderInfo;
//orderInfo = "<CB>中国福彩惠州</CB><BR>";
//orderInfo += "<BR>";
//orderInfo += "--------------------------------<BR>";
//orderInfo += "交易类型:" + " 微信支付<BR>";
//orderInfo += "总金额:" + " 100.00元<BR>";
//orderInfo += "用户实付:" + " 100.00元<BR>";
//orderInfo += "支付状态:" + " 支付完成<BR>";
//orderInfo += "--------------------------------<BR>";
//orderInfo += "订单编号:" + "<BR>";
//orderInfo += "终端编号:" + SN + "<BR>";
//orderInfo += "台号:" + " *** <BR>";
//orderInfo += "日期:" + System.DateTime.Now + " <BR>";
//orderInfo += "----------请扫描二维码----------";
//orderInfo += "<QR>http://www.dzist.com</QR>";//把二维码字符串用标签套上即可自动生成二维码
//orderInfo += "<BR>";
orderInfo = "<CB>" + merchantName + "</CB><BR>";
orderInfo += "<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "交易类型:" + payType + "<BR>";
orderInfo += "总金额:" + payTotalMoney + "元<BR>";
orderInfo += "用户实付:" + realyPayTotalMoney + "元<BR>";
orderInfo += "支付状态:" + payStatus + "<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "订单编号:" + orderNo + "<BR>";
orderInfo += "终端编号:" + SN + "<BR>";
orderInfo += "台号:" + deviceNo + "<BR>";
orderInfo += "日期:" + System.DateTime.Now + " <BR>";
//orderInfo += "----------请扫描二维码----------";
orderInfo += "--------------------------------";
orderInfo += "请妥善保管好购物凭证 多谢惠顾!";
orderInfo += "<QR>" + qrurl + "</QR>";//把二维码字符串用标签套上即可自动生成二维码
orderInfo += "<BR>";
orderInfo += "<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "交易类型:" + payType + "<BR>";
orderInfo += "总金额:" + payTotalMoney + "元<BR>";
orderInfo += "用户实付:" + realyPayTotalMoney + "元<BR>";
orderInfo += "支付状态:" + payStatus + "<BR>";
orderInfo += "--------------------------------<BR>";
orderInfo += "订单编号:" + orderNo + "<BR>";
orderInfo += "终端编号:" + SN + "<BR>";
orderInfo += "台号:" + deviceNo + "<BR>";
orderInfo += "日期:" + System.DateTime.Now + " <BR>";
//orderInfo += "----------请扫描二维码----------";
orderInfo += "--------------------------------";
orderInfo += "请妥善保管好购物凭证 多谢惠顾!";
orderInfo += "<QR>" + qrurl + "</QR>";//把二维码字符串用标签套上即可自动生成二维码
orderInfo += "<BR>";
orderInfo = Uri.EscapeDataString(orderInfo);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(URL);
req.Method = "POST";
UTF8Encoding encoding = new UTF8Encoding();
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(URL);
req.Method = "POST";
UTF8Encoding encoding = new UTF8Encoding();
string postData = "sn=" + SN;
postData += ("&content=" + orderInfo);
postData += ("×=" + "1");//默认1联
postData += ("&content=" + orderInfo);
postData += ("×=" + "1");//默认1联
int itime = DateTimeToStamp(System.DateTime.Now);//时间戳秒数
string stime = itime.ToString();
string sig = sha1(USER, UKEY, stime);
string stime = itime.ToString();
string sig = sha1(USER, UKEY, stime);
//公共参数
postData += ("&user=" + USER);
postData += ("&stime=" + stime);
postData += ("&sig=" + sig);
postData += ("&apiname=" + "Open_printMsg");
postData += ("&user=" + USER);
postData += ("&stime=" + stime);
postData += ("&sig=" + sig);
postData += ("&apiname=" + "Open_printMsg");
byte[] data = encoding.GetBytes(postData);
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;
Stream resStream = req.GetRequestStream();
req.ContentLength = data.Length;
Stream resStream = req.GetRequestStream();
resStream.Write(data, 0, data.Length);
resStream.Close();
resStream.Close();
HttpWebResponse response;
string strResult;
try
{
response = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
strResult = reader.ReadToEnd();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
strResult = response.StatusCode.ToString();//错误信息
}
string strResult;
try
{
response = (HttpWebResponse)req.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
strResult = reader.ReadToEnd();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
strResult = response.StatusCode.ToString();//错误信息
}
response.Close();
req.Abort();
//服务器返回的JSON字符串,建议要当做日志记录起来
Logger.Instance.APIInfoFormat("飞鹅云打印 result->{0}", strResult);
return strResult;
req.Abort();
//服务器返回的JSON字符串,建议要当做日志记录起来
Logger.Instance.APIInfoFormat("飞鹅云打印 result->{0}", strResult);
return strResult;
}
//签名USER,UKEY,STIME
public static string sha1(string user, string ukey, string stime)
{
var buffer = Encoding.UTF8.GetBytes(user + ukey + stime);
var data = SHA1.Create().ComputeHash(buffer);
public static string sha1(string user, string ukey, string stime)
{
var buffer = Encoding.UTF8.GetBytes(user + ukey + stime);
var data = SHA1.Create().ComputeHash(buffer);
var sb = new StringBuilder();
foreach (var t in data)
{
sb.Append(t.ToString("X2"));
}
foreach (var t in data)
{
sb.Append(t.ToString("X2"));
}
return sb.ToString().ToLower();
}
private static int DateTimeToStamp(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (int)(time - startTime).TotalSeconds;
}
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); return (int)(time - startTime).TotalSeconds;
}
#endregion
相关文章
- C#Light 小幅升级,支持快速绑定匿名函数、Lambda表达式
- C#实现谷歌翻译API
- C#开源项目大全
- How To Implement Forms-Based Authentication in Your ASP.NET Application by Using C#.NET
- c# 中内部类的简单介绍 C#内部类
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
- EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
- C#中泛型方法与泛型接口 C#泛型接口 List<IAll> arssr = new List<IAll>(); interface IPerson<T> c# List<接口>小技巧 泛型接口协变逆变的几个问题
- SQLServerframework启动报异常:Module的类型初始值设定项引发异常 [转]QQ空间、新浪微博、腾讯微博等一键分享API链接代码 window下 mongodb快速安装 数据表查询所有子/父节点 C#学习笔记1
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- [C#基础]c#中的BeginInvoke和EndEndInvoke
- C# IL DASM 使用-破解c#软件方法
- c# asp.net mvc API接口安全过滤,api域名过滤,api域名+端口过滤,权限,鉴权
- C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码
- c#中使用消息循环机制发送接收字符串的方法和数据类型转换
- C# 设置Word文档中图片的大小
- C# 编写Web API
- C#中,什么时候用yield return
- C#连接SQLite数据库方法
- laravel 5.5 api接口开发:JWT安装+实现API token 认证
- C# 面向对象例题 -- Mp3功能实现
- C# 文件流读写方法汇总
- C#-绘图双缓冲
- C#中实现对象的深拷贝
- c# Linq及Lamda表达式应用经验之 GroupBy 分组
- [转]C# ADO.NET SqlDataAdapter中传递参数
- C# Socket编程