从事软硬件结合的行业也有些年头了 ,最近这两年有了更加响亮的名头叫新零售/物联网,哈哈。闲话不说,对之前为电信运营商开发的自助发卡终端项目的技术做一个回顾
项目要求:实现电信网点的无人化,自助终端主要达到以下功能:
1、自助选号开卡,流程是选号、用户刷身份证,以及进行刷脸身份认证签约(即有人营业厅柜台开卡业务办理流程搬到自助终端),自助终端收到服务端对签约信息的确认后,通过写卡器,写SIM卡,然后自动出卡给用户;
2、要实现单主机双屏显示,一屏用来播广告,一屏用来操作;
3、该自助终端自带WIFI热点,该热点必须关注了运营商的公众号 并从公众号获取验证码后才允许访问其他网站,否则只允许访问运营商的认证网页。
4、还有若干其他功能,例如视频监控,但都是辅助性的 就不介绍。
整机是基于android平台的,主控芯片基于RK平台。
先说第一个功能:
自助开卡 :技术要点有2个写SIM 、卡发给用户
硬件采用的是深圳某个自动化出厂的发卡设备,通过RS232和android平台通信,发卡设备采用的是ADPU协议。
整个写卡过程提出用户资料提交、身份鉴别部分,简单来说有2步:(1)客户端将读取的SIM卡序列号作为参数传给这个接口,平台端经过验证SIM卡属于运营商后,返回一些列数据,主要包含一些列的APDU协议指令(主要是告诉我们要操作SIM卡哪个区的),以及短信中心号码、IMSI(这两个数据是需要我们通过发卡设备写入SIM卡的,SIM卡有量这个两个数据后,才能注网),(2)执行平台返回的ADPU协议指令队列,都执行成功后则写卡成功。
我们来看看平台端发过来的数据
看上图,我们主要关心的信息有三个scriptSeq、iccid 、imsi,scriptSeq是平台返回的ADPU指令队列,我们按照这个指令执行就可以了,这里有一个坑,写imsi的APDU指令并不在这个指令队列内,要自己生成然后写下去,当初我不清除,还以为执行完队列就可以了 ,结果怎么都没办法注网,走了很长的冤枉路