本帖最后由 13559541953 于 2021-4-27 16:24 编辑
关于最近我在对接刷卡消费机的一些心得,分享给大家,大神勿喷,分享给有需要的格友,写的不好,谨慎阅读!!!
最开始只是给了我一个简单的文档,我整理出来建了两个表
卡号列表
消费记录表(不必要的信息已打码)
然后我就开始做c#的api来让第三方进行请求调用
注意:
新建项目的时候类库不要搞错了,一定要选择这个,刚开始找了半天原因,原来建错了类库
问题1:第三方请求时跨域问题
这里我找了一篇文章给大家科普一下关于跨域的描述——https://blog.csdn.net/qq_38128179/article/details/84956552
当时是求助官方,官方给的解决办法是三行代码解决问题
- this.Context.Response.ContentType = "text/plain";
- this.Context.Response.Headers.Append("Access-Control-Allow-Origin", "*"); //允许所有
- this.Context.Response.Headers.Append("Access-Control-Allow-Headers", "*"); //请求头设置
- this.Context.Response.Headers.Append("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); //响应类型
复制代码
由于当时我还是使用的【6.0.103】版本,加了这三行代码是没有作用的,后来用了7.0才发现问题,然后使用【6.0.104】版本,也是可以解决跨域的问题
问题2:使用odate查询获取数据问题由于官方的只有查询并添加到数据表,没有获取值的问题
我研究了很久,后来通过这样的方式获取的值,我这里查询到的只是一个值,所以获取出来不需要做其他操作,如果有多的话,大家可以使用字符拼接然后获取,大家应该还有更好的方法,大神勿喷哈
- var dataid = DataAccess.GetTableData(string.Format("卡号列表?$select=ID&$filter=cardId eq '" + cardid + "'&$top=1&$orderby=ID desc")) as List<Dictionary<string, object>>;
- string id = "";
- foreach (KeyValuePair<string, object> list in dataid[0])
- {
- id = string.Format("" + list.Value); ;
- }
复制代码
另外还有一些查询我是没办法在c#代码中完成,所以我使用了两个视图做为中转,咱们有什么不能直接查询出来的,都可以用视图进行查询中转,视图也有统计的功能,视图还有分组和排序加上自定义条件使用方法多多,自行百度
——根据机器编码查询机器当天消费总金额
——根据机器编码查询机器当天消费总次数
另外一些查询、添加数据表的方法都是使用的官方api教程
|