一篇文章搞懂Android 刷卡器对接:RS232 DB9串口通讯,通讯设置,刷卡器API介绍;代码示例;MDB协议;

目录

在这里插入图片描述


前言

在一些国家,还没有普及扫码支付的时候,消费者会纸币、硬币或者刷卡进行支付,这里我们讲解一下刷卡支付。

在市面上,有哪家刷卡器公司可以说的上是开通了很多国家的支付银行,那么Nayax和Pax可以说的上是名列前茅,他们适配了很多国家,对接其他国家的银行,让我们只需要接入了他们的刷卡器,就可以实现在全国各地实现刷卡支付,而不需要我们去对接这些国家的银行,真的是非常方便。

当然,他们也并不是全部国家都适配到了,也会出现有一些国家没有的情况,这个时候,你也可以选择当地国家开发的刷卡器。

他们的接入方式大同小异,无非就几种:串口、局域网以及蓝牙等。这篇文章,我们会先讲讲串口的方式。串口是通过连接线材的方式,使通讯更加的稳定可靠。


一、需求场景:刷卡支付(开发前对接,需要对方提供信息)

大致的流程:

  1. 首先,需要让对方提供API文档
  2. 我们需要知道他们的通讯设置:波特率、停止位、数据位以及奇偶校验等等。
  3. 这些信息拿到以后,我们就可以将硬件连接好,进行测试。
  4. 注意,这个时候,还是先不要写代码,先使用串口工具进行测试!先使用串口工具!先使用串口工具!先使用串口工具!因为出现问题,对方的工程师会让你先用串口工具测试,因为他不知道的技术水平怎么样,所以串口工具是最有说服力的。能节省非常的沟通成本。
  5. 要将硬件连接到电脑,我们需要买一个usb转Rs232的线,因为电脑用的usb,硬件设备用的有可能是db9,所以要买一条这样的线进行转接。

下面我们来看一个具体的案例:自动售货机领域的一种重要通信标准,MDB。


1.1 通讯设置

这个通讯设置,也是需要对方提供给到我们。
在这里插入图片描述我们打开串口工具,将其设置进去,然后打开串口即可测试。串口工具大家可以上网搜索下载,非常多。
在这里插入图片描述
串口号,当你插入到电脑的时候就会自动识别出来,如果没有识别出来,那么有可能是没有驱动,可以到系统的计算机管理系统里面看看缺少什么驱动,下载对应的即可。


1.2 刷卡器的API

一般,刷卡器我们会称之为下位机,而Androdi我们会称之为上位机。

下位机的API一般有:

  1. 初始化:刷卡器的功能会很多,有的国家,支付流程不一样,所以我们需要使用不同的初始化方式,比如有的国家,喜欢先插卡后选择商品,而有的国家,喜欢先选择商品后插卡;再有比如设置支持最大最小金额是多少,等等,有很多。
  2. 发起交易:一般需要携带金额,商品编号;商品编号告知出货的具体是什么商品。
  3. 取消交易:取消本次交易。
  4. 接收交易结果:这个是下位机自动发送上来,不需要我们去轮询监听。
  5. 上传出货结果:商品的出货结果,需要发送给下位机。下位机会进行记录,上传到他们的服务器,这样才有数据可察。

1.3 发送数据\接收数据

在这里插入图片描述

数据格式会分为两种:

  1. ASCII就是我们常用,比如:1302、或者SDWR,也就是字符串。
  2. HEX:就是十六进制。

比如ASCII:ABC
在这里插入图片描述
比如Hex:41 42 43

在这里插入图片描述
空格是没有必要的,发送的时候也会取消。


二、刷卡器Api介绍

下面,我们介绍一种全球通用协议,MDB协议,又名ICP(Internal Communication Protocol)协议,是自动售货机领域的一种重要通信标准。很多国家的刷卡器都会按照这一标准进行实现,类似于我们的Http一样,只要我们按照这个协议期发送,那么就是http请求。

下面我们会根据MDB协议的无现金章节来进行讲解,无现金也就是无需要现金,刷卡器,就是无现金的一种。

2.1 初始化流程

这个是非常重要,要先完成初始化流程,才能进行支付流程,初始化流程其实就是用于设置基础信息,比如启动什么功能,支持的最大最小金额,然后开始使用:

  1. 发送重置指令。
  2. 发送设置指令:主要用于获取刷卡器的信息,比如他的级别是多少,使用的是什么支付模式,最大响应时间多少等等。
  3. 发送支付最大最小价格。
  4. 设备使能(使能就是可以进行使用)。

这些并不是固定,有时候会根据不同的刷卡器参加,进行配置。

(1)发送重置指令

(2)发送设置指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555613.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT 更新 Canvas 深度测评:论文写作这样用它!

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 ChatGPT又又更新了:基于ChatGPT 4o模型的Canvas 写作和代码功能。目前,仅针对Plus和Team用户。是一个独立的模块,如下所示: 官方…

ISO IEC 18004 2024/2015 Chinese 下载

ISO_IEC 18004 2024.pdf - 蓝奏云文件大小:40.3 M|https://610402220623.lanzouq.com/iqZ122bnx0yjISO IEC 18004-2015 zh-CN.pdf - 蓝奏云文件大小:34.1 M|https://610402220623.lanzouq.com/iEXSB2bnx0hc

G. Gears (2022 ICPC Southeastern Europe Regional Contest. )

G. Gears 思路: 本身这个题并不难,奈何卡了很久后看了题解才做出来,感觉自己好笨。 很容易想到的是,只要确定了一个齿轮的位置,其他齿轮的位置都可以直接推出来。所以当前目标是如何确定第一个齿轮的位置。 令 x [ i …

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序: 编写.NET程序 前言 在现代生活中,电脑作为核心工具,其性能和稳定性的维护至关重要。为确保电脑高效运行,我们不仅需关注软件优化&#xf…

Koa2项目实战2(路由管理、项目结构优化)

添加路由(处理不同的URL请求) 路由:根据不同的URL,调用对应的处理函数。 每一个接口服务,最核心的功能是:根据不同的URL请求,返回不同的数据。也就是调用不同的接口返回不同的数据。 在 Node…

数据服务-备份服务(rsync)

1. 概述 特点: 1. rsync是个服务也是命令 2. 使用方便,具有多种模式 3. 传输数据的时候是增量传输 1.1 增量与全量 1. 增量:只会把修改,新建的内容推走 2. 全量:无论数据多少全部推送 1.2 把/etc/目录传输到另一台机器的/tmp/下面…

安卓 /proc 目录详解:从内核到进程的桥梁

在安卓系统中,/proc 目录是开发者、调试者、甚至是普通用户深入了解系统状态、性能及行为的一个重要入口。这个虚拟文件系统不仅包含了丰富的内核信息,还反映了运行中的每个进程的状态。 /proc 文件系统 /proc 文件系统(procfs)是…

前端编程艺术(3)---JavaScript

目录 1.JavaScript 1.输出 2.变量和数据类型 3.运算符 4.数组 5.函数 6.面向对象 7.ES6面向对象 2.BOM 1.document对象 3.DOM 4.JSON 1.JavaScript JavaScript是一种脚本编程语言,通常用于为网页增加交互性和动态效果。它是一种高级语言&#xff…

C++ 算法学习——1.6 差分算法与二维差分算法

一维差分算法概述: 差分算法是一种用于计算序列中相邻元素之间差值的技术。在C中,STL(标准模板库)提供了std::adjacent_difference函数来实现差分算法。 std::adjacent_difference函数: std::adjacent_difference函数位…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…

网关路由登录校验

网关过滤器 登录校验必须在请求转发到微服务之前做,否则就失去了意义。而网关的请求转发是Gateway内部代码实现的,要想在请求转发之前做登录校验,就必须了解Gateway内部工作的基本原理。 暂时无法在飞书文档外展示此内容 如图所示&#xff…

一、Python(介绍、环境搭建)

一、介绍 Python 是一种高级编程语言,具有简洁易读的语法、丰富的库和强大的功能。Python是解释型语言,运行代码必须依赖安装好的解释器。Python目前存在两个版本:Python2、Python3(主流使用) 二、环境搭建 1.安装P…

四、函数顶层变量

函数&顶层变量 函数定义创建和使用 顶层变量递归函数实用库函数高阶函数与lambda表达式函数类型变量类型别名匿名函数lambda表达式基本用法lambda的简写 内联函数 函数 定义 其实函数我们在一开始就在使用了: fun main() {println("Hello World") …

Python 语言学习——应用1.1 数字图像处理(第一节,颜色)

目录 1.基础知识 2.实战演示 1.基础知识: 1.图像的表示. 函数表示:图像是二维信号,定义为二维函数f(x,y),其中,x、y是空间坐标,f(x,y)是点(x,y)的幅值。拓展看,视频,又称动态图像…

一阶差分模板的频率响应

一阶差分模板不同于二阶差分模板,它是一个奇对称的模板,傅里叶变换是纯虚数,无法用图形直接显示傅里叶变换,只能显示幅值谱。 冈萨雷斯的这个图我一直很好奇是怎么显示的,也没有坐标轴标出变量表示。 如今终于想明白…

论文笔记:微表情欺骗检测

整理了AAAI2018 Deception Detection in Videos 论文的阅读笔记 背景模型实验可视化 背景 欺骗在我们的日常生活中很常见。一些谎言是无害的,而另一些谎言可能会产生严重的后果。例如,在法庭上撒谎可能会影响司法公正,让有罪的被告逍遥法外。…

04-SpringBootWeb案例(中)

3. 员工管理 完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。 基于以上原型,我们可以把员工管理功能分为: 分页查询(今天完成)带条件的分页查询(今天完成)删除员工&am…

服务器conda环境安装rpy2

参考博客 https://stackoverflow.com/questions/68936589/how-to-select-r-installation-when-using-rpy2-on-conda 现在我遇到这样一个问题,服务器系统环境没有R(没有权限安装),我只能在minconda的conda环境中使用R, 使用方法如下 我现在…

芝法酱学习笔记(0.6)——nexus与maven私库

一、私库的需求 在一个公司中,后端程序员通常几十上百个。在没有镜像私库的情况下,每当引入新库时,大家都会从maven中央仓库下载一遍这个库。这样无疑十分浪费。再加之国家的防火墙政策,许多人下载lib包可能还会十分缓慢。不同程…

Python水循环标准化对比算法实现

🎯要点 算法区分不同水循环数据类型:地下水、河水、降水、气温和其他,并使用相应标准化降水指数、标准化地下水指数、标准化河流水位指数和标准化降水蒸散指数。绘制和计算特定的时间序列比较统计学相关性。使用相关矩阵可视化集水区和显示空…