实施例1:
通过用智能移动智能设备+移动支付终端实现移动支付的功能,减少第三方支付平台的参与,直接使用移动支付终端实现网银交易,从而减少交易费用、简化操作,赢得用户支持,激发用户参与移动支付的热情,提升银行移动支付的交易量,为银行带来利润的大幅增加。
用户使用移动支付时需在移动智能设备上安装由设备厂商提供的客户端软件,与支付终端通信,由支付终端来实现与银行的交互完成消费业务的处理。终端部分不联网,客户的信息交由终端来处理,这样可保障用户信息的安全。移动智能设备通过移动网络与银行网络通讯,充当银行和终端通讯的媒介,利用移动网络快速便捷的完成与银行的交互。可实现银联卡转账、支付、余额查询、修改密码、查看历史记录等功能。目前用移动智能设备+支付终端实现移动支付的功能,参见图1:
该方案主要包括三部分的处理:移动智能设备与银行网络的交互、移动智能设备与终端的交互、终端对用户信息和业务的处理。
(1)移动智能设备与银行网络的交互。移动智能设备与银行网络的交互主要利用移动智能设备客户端软件。逻辑通道是相对物理通道而言,终端通过用户移动智能设备与银行服务器之间通过SSL协议六次握手建立了SSL安全逻辑通道,客户端软件接收银行服务器端发过来的指令并发送给终端处理,并将终端反馈的信息转发给银行服务器。
(2)移动智能设备与终端的交互。移动智能设备与终端音频通讯传送信息。
(3)终端对用户信息和业务的处理。终端完成银行PKI系统申请终端证书并将终端编号和终端证书写入移动终端内,完成对设备的初始化,实现证书签名验证,接收用户输入信息并处理,实现银行业务功能并显示结果,反馈相应的信息给银行服务器端。
整个系统通讯的数据流参见图2,主要有以下几个部分:
(1)客户端程序:负责与银行渠道服务器建立网络连接,在网络通讯消息和终端设备之间进行消息与指令的转化,主要起消息转发的作用。
(2)移动智能设备应用通讯接口:负责将移动智能设备与设备通讯格式的数据转换为二进制的数据,供客户端程序调用,完成上层业务逻辑与设备之间的通讯。
(3)移动智能设备接口:负责将移动智能设备下传的数据转换为二进制格式,提供固件业务模块完成业务操作,将返回的数据转换为移动智能设备接口可以通讯的格式。
移动支付终端固件音频接口通过收发音频信号(由普通数据转化)达到传输数据来进行通讯从而实现移动智能设备与终端通信的功能,具体为:
移动智能设备端将命令和数据转化为音频流格式数据,将音频流格式数据作为音频文件播放,从而将数据传送给耳机端,耳机端的固件通过音频接口接收相应的音频数据,并通过硬件转化为数字信息,固件处理数字信息,并与移动智能设备端的数据进行比对,看数据是否一致,从而判断接收功能是否正常,信号传输过程如图3所示:
移动支付终端发出数字信息,通过D/A变换,变成音频信号发给移动智能设备端,移动智能设备端接收到信号后,移动智能设备当做类似录音的数据存成临时文件或数组,将临时文件或数组发给银行处理,在移动智能设备端的处理类似移动智能设备录音过程,信号传输过程参见图3。
其中,移动支付音频通信涉及到的关键技术有以下几个方面:
(1)采用频移键控技术(frequency-shift keying,FSK)将两个不同频率F1和F2的振荡源来代表信号1和0,移动智能设备端向移动支付终端端发送数据时,选取44.1K采样频率的四分频与八分频正弦波表示数字信号1和0,用数字信号的1和0去控制两个独立的振荡源交替输出。
(2)移动支付终端向移动智能设备端发送数据时,采用幅移键控(ASK)技术通过改变载波信号的振幅大小来表示数字信号“1”和“0“的,以载波幅度A1表示数字信号“1”,用载波幅度A2表示数字信号‘0’而载波信号的ω和恒定。
(3)采用脉冲代码调制编码(Pulse Code Modulation,PCM)技术对音频信号进行编码,PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
(4)音频信号是经过麦克风等设备转换成的电信号,通常将音频信号表示为:在对音频信号数字化处理时,主要依据奈奎斯特理论合理确定采样频率。
(5)为了减少噪声的干扰,在硬件上添加信号匹配阻尼网络和滤波电路确保信号稳定可靠传输,参见图4,信号从Term1到Term2经过电阻形成的阻尼网络,将有4倍功率衰减,即噪声被衰减了4倍;在软件上,采用信号分析与处理相关技术进行降噪处理。
音频通信协议设计
硬件层
硬件上采用A/D和D/A输入输出接口,同时设计阻抗匹配网络和信号缩小电路保证信号良好、稳定地传输。
移动智能设备通过移动网络与后台服务器连接,通过音频接口与移动支付终端通信,对于终端可分为上行和下行两条通信链路。
上行(UPLINK)主要是指终端向移动智能设备发送数据,上行通信链路图如图5所示。终端通过D/A数模转换发出模拟信号,进入滤波网络,滤掉移动智能设备不能识别的信号成分后,成为可识别的音频信号,此信号再通过移动智能设备MIC端进入移动智能设备内部。
下行(DOWNLINK)指移动智能设备向金融终端发送数据,下行通信链路图如图6所示。硬件上主要通过音频电路的左声道(L)右声道(R)发出电信号给匹配网络,将信号匹配成STM32的A/D转换接口可以识别的模拟信号,便于后续进行模数转换处理。
物理层
(1)设备端
1)数据发送
在移动支付终端中,正弦波产生采用查表法。查表数据主要采用以下32个数据:2047,2447,2831,3185,3498,3750,3939,4056,4095,4056,3939,3750,3495,3185,2831,2447,2047,1647,1263,909,599,344,155,38,0,38,155,344,599,909,1263,1647。这32个数据描点表示一个正弦波,电压峰峰值是3.3V。
幅值控制:通过改变描点数据大小来改变幅值,例如,控制正弦波峰峰值在1V左右,就将以上描点数据均除以3.3即可得到要求峰值或幅值。
频率控制:通过改变定时器周期,即控制描点数据输出时间来改变正弦波频率。通过测试,将定时器周期值设定为0x64可以实现频率为22k的正弦波,而将定时器周期值设定为0xC8可以实现频率为11k的正弦波,定时周期值设定为0x0190可以实现频率为5.5k的正弦波。目前设备端采用发送两种不同幅值(70mv和140mv)的5.5k的正弦波表示“0”和“1”进行通讯。
为了配合上层的数据传输,协议规定了帧头、帧尾。帧头由140个频率为5.5k(幅值为140mv)的正弦波加12个频率为5.5k(幅值为70mv)的正弦波组成,帧尾由1个频率为5.5k(幅值为140mv)的正弦波加1个频率为5.5k(幅值为70mv)的正弦波组成。
2)数据接收
利用ADC转换程序,将接收到的音频模拟信号转换成数字信号进行处理,通过解码接析出移动智能设备端发送的指令和数据。
固件接收的数据从第一个大于噪声数据的值开始存入存储数组。
(2)移动智能设备端
移动智能设备物理层根据硬件电路来进行相应的编解码,采用两种频率正弦波来传送数据,采用固定频率采样接收数据。1个5.5k的波形表示数据0,2个11k的波形表示数据1。
物理层的数据要经过第二次编码,将链路层的数据编码成硬件能识别的数据(移动智能设备端采用PCM编码,设备端采用描点编码)。物理层数据包格式为(以PCM编码为例):
表1移动智能设备物理层数据包格式
帧头用2个2.75k的波加连续6个的11k的波后面加1个5.5k的波形来表示,参见图5,用PCM数据表示为:
0x00,0x00,0xFF,0x1F,0xFF,0x3F,0xFF,0x5F,0xFF,0x7F,
0xFF,0x5F,0xFF,0x3F,0xFF,0x1F,
0x00,0x00,0x00,0xE0,0x00,0xC0,0x00,0xA0,0x00,0x80,
0x00,0xA0,0x00,0xC0,0x00,0xE0,
0x00,0x00,0xFF,0x1F,0xFF,0x3F,0xFF,0x5F,0xFF,0x7F,
0xFF,0x5F,0xFF,0x3F,0xFF,0x1F,
0x00,0x00,0x00,0xE0,0x00,0xC0,0x00,0xA0,0x00,0x80,
0x00,0xA0,0x00,0xC0,0x00,0xE0,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,
0x00,0x00,0xFF,0x3F,0xFF,0x7F,0xFF,0x3F,
0x00,0x00,0x00,0xC0,0x00,0x80,0x00,0xC0
其中,数据长度为64个字节,表示有效数据的长度。有效数据是指要发送的实际数据即链路层数据根据二次编码转化后的数据。
帧尾用2个5.5k的波形来表示。用PCM数据表示为:
0x00,0x00,0xFF,0x3F,0xFF,0x7F,0xFF,0x3F,
0x00,0x00,0x00,0xC0,0x00,0x80,0x00,0xC0,
0x00,0x00,0xFF,0x3F,0xFF,0x7F,0xFF,0x3F,
0x00,0x00,0x00,0xC0,0x00,0x80,0x00,0xC0
对于有效数据,采用0x00,0x00,0xFF,0x3F,0xFF,0x7F,0xFF,0x3F,0x00,0x00,0x00,0xC0,0x00,0x80,0x00,0xC0来表示1个5.5k的波即数据0,采用0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x80,表示2个11k的波形即数据1,有效数据表示如图5所示。
另外,移动智能设备物理层需要接收设备端发送的PCM格式的数据。从第一个不为零的数据开始计入存储数组中。
数据解析层
(1)设备端数据解析层
设备端数据解析层与移动智能设备解析层类似。只是判断波形的数据有所不同,移动智能设备接收的是PCM数据,设备端接收的是16位ADC数据。固件判断波形数据从波的起始点开始,计算一个波里的点数,如果点数在12到20之间是11k的波,2个11k的波就表示一个数据“1”,点数在26到38之间是5.5k的波,取数据“0”。
设备端采用发送两种幅值分别为140mv和70mv的5.5k频率的正弦波来发送音频数据。帧头采用140个140mv的正弦波加12个70mv的5.5k频率的正弦波组成,帧尾采用1个140mv的正弦波加1个70mv的5.5k频率的正弦波组成,140mv的5.5k正弦波表示数据“1”,70mv的5.5k正弦波表示数据“0”。
(2)移动智能设备端数据解析层
移动智能设备数据解析层主要分析处理接收到的PCM数据。分五部分解析处理:帧头、数据长度、有效数据、帧尾。(PCM数据2个字节为一个采样点数据,低位在前,高位在后。)数据解析流程参见图6。
具体解析过程为:
1)判别帧头。帧头是检测判断是否同步的标识。判断了开始数据后,其后的判断均以正弦波波形数据为依据移动智能设备。由于移动智能设备采用44.1k的采样率对5.5k的正弦波采样,一股情况下,一个正弦波波形数据包含4个PCM正值数据和4个PCM负值数据。
2)判别数据长度。判断完帧头后,帧头后128个正弦波波形数据表示数据长度。正弦波波形数据正值数据高位最大值在0x08-0x1a之间判断为真实数据0,正弦波波形数据采样点绝对值均在0x30以上判断为真实数据1,其余判断为错误数据。先由一个正弦波波形数据分析出1个二进制数据,再由8个二进制数据组合在一起合成1个8位的实际数据,进而得到数据长度。
3)判别有效数据。得到数据长度后,就可以知道有效数据的个数。8个正弦波波形数据表示一个真实的数据。假设数据长度为n,则需要判断8n个正弦波波形数据。正弦波波形数据正值数据高位最大值在0x08-0x1a之间判断为真实数据0,正弦波波形数据采样点绝对值均在0x30以上判断为真实数据1,其余判断为错误数据。先由一个正弦波波形数据分析出1个二进制数据,再由8个二进制数据组合在一起合成1个8位的实际数据。
4)判别帧尾。由于在传输过程中可能会出现相偏,最后一个正弦波波形数据不一定完整,故帧尾只检测140mv的正弦波是否正常。处理完有效数据后,后面的2个正弦波波形数据为帧尾。有效数据后面接的正弦波波形数据采样点绝对值在0x30以上,则表示帧尾正常,否则表示传送出现了偏差。帧尾主要用于检测数据是否有偏差,另外可以保障即使出现了相位偏差也能完成有效数据传输,帧尾可用于判断物理层传输是否成功。
注:经大量实验测试当设备发送70mv的正弦波到移动智能设备时,移动智能设备接收到的PCM数据正值高位最大值在0x08-0x1a之间;设备发送140mv的正弦波到移动智能设备时,移动智能设备接收到的PCM数据绝对值最大值在0x30以上。
逻辑链路层
逻辑链路层将要传输的数据进行打包传输,另外,需要验证数据有效性即解码出来的数据是否正确,数据包格式为:
表2逻辑链路层总包格式
帧头为2个字节,以连续两个’/’表示开始,数据表示为0x2f,0x2f。
总包数表示总共分几个包传输。
数据长度为2个字节,表示有效数据的长度。
冗余校验码为1个字节,用于检验有效数据是否正确,把所有有效数据做异或得到冗余校验码。
总包分好后需要再进行分包传送。分包格式为:
表3逻辑链路层分包格式
信息域 |
数据 |
字节长度 |
含义 |
包数 |
XX |
1 |
传送的是第几包 |
有效数据 |
XX |
N |
要发送的实际数据 |
冗余校验码 |
XX |
1 |
检验有效数据是否正确 |
包数表示传输的是第几个包。
有效数据是指要发送的实际数据,长度为实际数据的长度。
冗余校验码为1个字节,用于检验有效数据是否正确,把所有有效数据做异或得到冗余校验码。
应用层
移动智能设备部分应用采用播放PCM文件来发送音频数据,接收录音文件来接收音频数据。设备部分采用DA接口发送数据,AD接口接收数据。系统启动后,由移动智能设备端发送数据开始通讯过程。另外,数据传送采用一问一答形式。传送必须要有回应,如果超时没有回应或者回应数据传错了,则重新传送,最多一帧传三次,如果三次出错,则整个系统重新开始建立连接。
通过对移动智能设备端进行软件开发,一方面能利用移动智能设备音频接口将指令转换成音频信号,还要能扫描音频接口是否有输入信号,并将输入的音频信号转化成指令信息。
另外,应用程序启动后需要进行设备检测判别是否有设备接入。
系统启动后,需要判别是否有设备接入。设备检测判断由移动智能设备给设备发送判别信号来检测。发送的检测数据包对应逻辑链路层数据格式为:
表4设备检测格式
信息域 |
数据 |
字节长度 |
含义 |
检测信号头 |
0x0f |
1 |
检测信号开始标识 |
检测信号 |
0x0d |
1 |
发送给设备的检测信号 |
检测数据尾 |
0x01 |
1 |
检测信号结束标识 |
设备收到检测信号后,需要发送响应信号。对应逻辑链路层数据格式为:
表5设备响应格式
信息域 |
数据 |
字节长度 |
含义 |
响应信号头 |
0x0f |
1 |
响应信号开始标识 |
响应信号 |
0x0a |
1 |
发送给移动智能设备的响应信号 |
响应数据尾 |
0x01 |
1 |
响应信号结束标识 |
如果1s没响应或者收到的响应信号不为0x0a,则再次发送检测信号,三次没收到响应,则认为设备没连接或接触不好,提示插入设备。如果响应信号不为0x0a,则认为接触不好,提示重新插设备。