• 手机刷卡器分析


        做支付的都知道Square,一个伟大的支付公司,2009年成立,前几天估值已达到50亿美元 。手机刷卡器就是从Square开始的。尽管中国地区对支付行业有很多的限制,还是有很多的中国特色的“Square”出现,例如,比较早的乐刷、盒子支付,包括我们的刷卡器产品,晚一些的拉卡拉、银联等等。这里不讨论他的业务模式,分析一下刷卡器与手机怎样实现数据通信的。

        刷卡器与手机通信是走的音频通道,手机上需要安装特定的应用来解析数据。一个完整的刷卡流程包含APP、传输、刷卡器三部分组成。刷卡器的功能是捕捉,编码,并发送传感器数据;传输线即耳机口的公头和母头,负责数据的传输;APP的功能是接受数据,解码。图一是Square宣传图的一部分,Square的刷卡器是简单的刷卡设备,他是单向通讯。国内多数设备是双向通讯,所以接送数据的同时也发送数据。单向设备便宜;双向设备价格更贵一些,更安全些。在老美的国度,信用卡盗刷担责方是银行,单向设备是满足要求的。

     


    图一

        Square是一个单向通信设备,只有刷卡器向APP传输数据,APP并不给刷卡器传输数据。这篇文章我们也只介绍单向数据传输,双向传输数据请读者自行理会,因为双向和单向流程是一样的。

    一、传输部分

        三部分中最简单的传输部分,手机中使用的多是3.5mm四芯五线插头。插头包含四部分,左声道、右声道、mic、接地,不同的标准Mic和接地位置不同,iPhone中接地在第三阶,Mic在第四阶;Android中则相反,Motorola中是这样做的,而小米或一部分三星手机是使用的iPhone标准上面介绍的是公头,母头与其对应。

        刷卡设备中使用左声道或右声道做输出,Mic做输入。


    图二

     

    二、刷卡器

    刷卡器实现三个功能(单向):

    1、信息编码(例如ASCII或摩尔斯电码) 

    2、编码信息转换成音频信号[D➜A] 

    3、发送音频信号

     

    信息编码是把卡信息转变成ASCII的过程。需要刷卡器识别卡磁道信息。

        [D➜A] 的过程是数字调制,指的是用数字数据调制模拟信号(D>A),主要有三种形式:移幅键控法ASK、移频键控法FSK、移相键控法PSK。这里一般使用FSK。具体的算法根据自己的条件设计,信用卡的磁道内容使用20个字符就能包含,即ASCII的45-64部分,频率可使用5000-14000部分(信号应该在0到22,050 Hz范围内)。


    图三

     

    三、APP

    APP的功能同样有三部分组成(单向):

    1、接收音频信号

    2、解析过滤音频信号,将音频信号转换成数字信号[A➜D]

    3、转换成卡数据

     

        接收音频信号时应该使用44100Hz采样率,为什么使用44100Hz呢,首先441000是多数手机都支持,再就是根据奈奎斯特 - 香农采样定理(采样频率应至少两次包含在信号中的最高频率),在采样板中的采样频率已达到14000。

        手机上接收到的数据是MIC采样的一大堆数据,如何在这么一大堆看似杂乱无章的数据里解析过滤出我们的需要的数据呢,这里就应用到了DSP(数字信号处理技术)。

     

        国内的很多刷卡设备(包括我们的设备)都是双向的,也就是说刷卡器和APP都做调制、解调的动作,双向手机刷卡器数据交互流程如图四,【6】。图四是图一的流程细分图。


    图四

     

     

     

     

    /**
    * @author 张兴业
    *  http://blog.csdn.net/xyz_lmn
    *  android开发进阶群:281537853
    *  iOS入门群:83702688
    *  我的新浪微博:@张兴业TBOW

    */

     

    参考:

    【1】http://www.360doc.com/content/10/1018/14/3947093_61966283.shtml [常用音频接口]

    【2】http://wz8311.blog.51cto.com/2212985/410850  [ask fsk psk 数字调制的三种基本形式]

    【3】http://stu.jsjxy.net/tongxin/gxtx/images/chap7-5-2.htm [光纤通信新技术]

    【4】http://baike.c114.net/view.asp?id=2155-C38EC19B [FSK]

    【5】http://wenku.baidu.com/view/af6a3440336c1eb91a375d19.html [2FSK调制解调及其仿真 ]

    【6】http://www.cnblogs.com/heiyue/archive/2013/04/08/3008493.html [拉卡拉刷卡器]

    【7】http://www.pbc.gov.cn:8080/image_public/rhwg/001801f2.html[银行卡磁条信息格式和使用规范]

    【8】http://www.cyberd.co.uk/support/technotes/isocards.htm [ANSI/ISO ALPHA Data Format][123磁道]

    【9】http://blog.tehinterweb.com/?p=60 [Magnetic Stripe ABA Track 2 Encoding]

    【10】http://www.acmetech.com/documentation/credit_cards/magstripe_track_format.html[Track format of magnetic stripe cards (tracks 1 and 2)]

     

     

  • 相关阅读:
    C#数据结构一:基础知识
    使用工厂方法模式实现多数据库WinForm手机号码查询器(附源码)
    我的个人年度总结
    CutePsWheel javascript libary:控制输入文本框为可使用滚轮控制的js库
    CSS制作无图片圆角矩形
    将SqlServer数据库转换Sqlite的工具
    原创电子书:C#难点逐个击破
    (译)在非IE浏览器中实现“灰阶化”
    extjs 记录一下
    Ext.Window相关
  • 原文地址:https://www.cnblogs.com/xyzlmn/p/3641708.html
Copyright © 2020-2023  润新知