ATMC开发SDM与厂商SP接口.docx
《ATMC开发SDM与厂商SP接口.docx》由会员分享,可在线阅读,更多相关《ATMC开发SDM与厂商SP接口.docx(22页珍藏版)》请在冰点文库上搜索。
ATMC开发SDM与厂商SP接口
1.背景
CEN/XFS标准是由CEN(欧洲标准委员会)组织推行的用于金融扩展服务设备的统一标准,其3.0版本已得到了全球绝大多数金融设备供应商的支持。
在理想状况下,基于CEN/XFS3.0标准开发的自助终端应用程序应能无缝的运行在不同厂商的符合XFS3.0标准的金融设备上,但由于XFS3.0标准并没有对厂商如何实现该标准做严格的约束,同时CEN组织是非盈利性机构,无力对各金融设备供应商进行符合XFS3.0标准的认证测试,因此各厂商对XFS3.0标准的理解和实现,存在一些差异,从而使基于该标准开发的应用程序无法无缝的运行在不同厂商的金融设备上。
目前正在进行统一的跨平台ATMC与跨平台自助终端C的实施工作。
为了使跨平台自助设备C的实施能顺利开展,必须对CEN/XFS3.0标准进行补充和细化,统一规范各厂商对标准的理解,清除在实现该标准时可能产生的歧义,从而使跨平台自助设备C的实施工作能顺利开展,使统一的自助设备C能无缝运行在各品牌型号的自助设备上。
2.范围
本细化实施规范基于CEN/XFS3.0标准的文档(编号CWA14050-1至CWA14050-15)制定。
在本细化规范中将对CEN/XFS3.0标准中可能引起歧义、或有特殊用法的地方进行特别说明。
本文件中未说明的均以CEN/XFS3.0标准文档为准。
本文件中所有的函数、参数、常量、变量的定义均引自CEN/XFS3.0标准。
3.规范性引用文件
CWA14050-1Part1:
ApplicationProgrammingInterface(API)–ServiceProviderInterface(SPI);Programmer'sReference
CWA14050-2Part2:
ServiceClassesDefinition;Programmer'sReference
CWA14050-3Part3:
PrintersDeviceClassInterface;Programmer'sReference
CWA14050-4Part4:
IdentificationCardDeviceClassInterface-Programmer'sReference
CWA14050-5Part5:
CashDispenserDeviceClassInterface
CWA14050-6Part6:
PINKeypadDeviceClassInterface–Programmer’sReference
CWA14050-7Part7:
CheckReader/ScannerDeviceClassInterface
CWA14050-8Part8:
DepositoryDeviceClassInterface
CWA14050-9Part9:
TextTerminalUnitDeviceClassInterface
CWA14050-10Part10:
SensorsandIndicatorsUnitDeviceClassInterface
CWA14050-11Part11:
VendorDependentModeClassInterface
CWA14050-12Part12:
CameraDeviceClassInterface
CWA14050-13Part13:
AlarmDeviceClassInterface
CWA14050-14Part14:
CardEmbossingUnitClassInterface
CWA14050-15Part15:
CashInModuleDeviceClassInterface-Programmer'sReference
4.术语和定义
CEN欧洲标准化委员会
XFS扩展金融服务
ATM自动柜员机
PTR打印机,包括凭条打印机、流水打印机
IDC读卡器,包括磁条读卡器、IC卡读卡器
CDM出钞模块
PIN加密键盘
CHK支票模块
DEP信封存款模块
TTU字符终端
SIU传感器与指示灯
VDM厂商模式
CAM摄像机
ALM警报器
CEU压卡模块
CIM现金存款模块
5.对规范的细化
5.1PIN
PIN必须至少支持下表中列出的命令:
InfoCommands
ExecuteCommands
WFS_INF_PIN_STATUS
WFS_CMD_PIN_IMPORT_KEY
WFS_INF_PIN_CAPABILITIES
WFS_CMD_PIN_GET_PIN
WFS_INF_PIN_KEY_DETAIL
WFS_CMD_PIN_GET_PINBLOCK
WFS_INF_PIN_FUNCKEY_DETAIL
WFS_CMD_PIN_GET_DATA
WFS_CMD_PIN_INITIALIZATION
WFS_CMD_PIN_RESET
WFS_CMD_PIN_CRYPT
WFS_INF_PIN_STATUS
fwDevice
当设备正在执行ExecuteCommand时处于WFS_PIN_DEVBUSY状态,此时所有的InfoCommand命令均应立即返回正确信息。
fwEncStat
除WFS_PIN_ENCBUSY外,其他状态均不应影响fwDevice的值。
例如,当fwEncStat从WFS_PIN_ENCREADY变为WFS_PIN_ENCNOTREADY时,fwDevice值不应该改变。
WFS_INF_PIN_CAPABILITIES
fwType
必须至少包含WFS_PIN_TYPEEPP与WFS_PIN_TYPEEDM
usKeyNum
不得小于12
fwAlgorithms
必须至少包含下表所列算法
WFS_PIN_CRYPTDESECB
WFS_PIN_CRYPTDESCBC
WFS_PIN_CRYPTDESMAC
WFS_PIN_CRYPTTRIDESECB
WFS_PIN_CRYPTTRIDESCBC
WFS_PIN_CRYPTTRIDESMAC
其中,WFS_PIN_CRYPTTRIDESMAC算法必须符合银联的3DES算法规定。
fwPinFormats
必须至少包含下表所列格式
WFS_PIN_FORM3624
WFS_PIN_FORMANSI
WFS_PIN_FORMISO0
WFS_PIN_FORMISO1
WFS_PIN_FORMECI2
WFS_PIN_FORMECI3
WFS_PIN_FORMVISA
WFS_PIN_FORMDIEBOL
WFS_PIN_FORMDIEBOLCO
WFS_INF_PIN_FUNCKEY_DETAIL
PINPAD上必须包含以下按键:
数字0到数字9,小数点,ENTER,CANCEL。
此外,CLEAR与BACKSPACE两个按键必须至少存在一个。
还必须包含FDK01到FDK08八个功能键。
所有按键对应的返回值键码,均应采用本对照表。
ulFuncMask
返回值
键
WFS_PIN_FK_0
数字0
WFS_PIN_FK_1
数字1
WFS_PIN_FK_2
数字2
WFS_PIN_FK_3
数字3
WFS_PIN_FK_4
数字4
WFS_PIN_FK_5
数字5
WFS_PIN_FK_6
数字6
WFS_PIN_FK_7
数字7
WFS_PIN_FK_8
数字8
WFS_PIN_FK_9
数字9
WFS_PIN_FK_ENTER
ENTER
WFS_PIN_FK_CANCEL
CANCEL
WFS_PIN_FK_CLEAR
CLEAR
WFS_PIN_FK_BACKSPACE
BACKSPACE
WFS_PIN_FK_HELP
HELP
WFS_PIN_FK_DECPOINT
小数点
WFS_PIN_FK_00
00
WFS_PIN_FK_000
000
功能键说明
返回值
备注
屏幕左侧
第一个按键
WFS_PIN_FK_FDK01
此表中所指方向是以面向屏幕表示,按键序号从上往下排列
第二个按键
WFS_PIN_FK_FDK02
第三个按键
WFS_PIN_FK_FDK03
第四个按键
WFS_PIN_FK_FDK04
屏幕右侧
第一个按键
WFS_PIN_FK_FDK05
第二个按键
WFS_PIN_FK_FDK06
第三个按键
WFS_PIN_FK_FDK07
第四个按键
WFS_PIN_FK_FDK08
WFS_CMD_PIN_GET_PIN
ulActiveFDKs
如激活了CLEAR键,则按下CLEAR键将清空PINBuffer
ulActiveKeys
如设备支持双零键“00”或三零键“000”。
调用此命令时激活了双零键或三零键,则命令失败,返回WFS_ERR_PIN_KEYINVALID
WFS_CMD_PIN_INITIALIZATION
在应用程序中不会调用此命令。
因此厂商应在安装设备sp时进行加密模块的初始化,或者在应用程序第一次调用WFS_CMD_PIN_IMPORT_KEY命令时自动进行初始化。
5.2TTU
TTU为可选设备,但如果自助设备上配置了TTU,则必须满足如下要求:
TTU屏幕必须至少为16行×32列。
TTU上必须至少配置从0到9十个数字键,以及ENTER、CANCEL、CLEAR键。
允许有其他按键。
TTU必须支持UNICODE,必须支持显示中文。
TTU必须至少支持下表中列出的命令:
InfoCommands
ExecuteCommands
WFS_INF_TTU_STATUS
WFS_CMD_TTU_BEEP
WFS_INF_TTU_CAPABILITIES
WFS_CMD_TTU_CLEARSCREEN
WFS_INF_TTU_KEY_DETAIL
WFS_CMD_TTU_DISPLIGHT
WFS_CMD_TTU_SET_LED
WFS_CMD_TTU_SET_RESOLUTION
WFS_CMD_TTU_WRITE_FORM
WFS_CMD_TTU_READ_FORM
WFS_CMD_TTU_WRITE
WFS_CMD_TTU_READ
WFS_CMD_TTU_RESET
WFS_INF_TTU_STATUS
fwDevice
当设备正在执行ExecuteCommand时处于WFS_TTU_DEVBUSY状态,此时所有的InfoCommand命令均应立即返回正确信息。
WFS_CMD_TTU_CLEARSCREEN
当屏幕上显示中文信息时,如果一个中文字符显示为两个ASCII字符的宽度,且此命令的参数指定的清屏范围将截断某一个中文字符,则执行此命令应将整个中文字符清除,不能出现将中文字符截断一半显示乱码的情况。
WFS_CMD_TTU_WRITE
如果在TTU上一个中文显示为两个ASCII字符的宽度,且此命令执行时将覆盖屏幕上原有的文字,则执行此命令后,应覆盖整个中文字符,不应出现将中文字符截断一半显示乱码的情况。
5.3VDM
自助设备必须支持VDM。
VDM必须支持下表中列出的命令:
InfoCommands
ExecuteCommands
WFS_INF_VDM_STATUS
WFS_CMD_VDM_ENTER_MODE_REQ
WFS_INF_VDM_CAPABILITIES
WFS_CMD_VDM_ENTER_MODE_ACK
WFS_CMD_VDM_EXIT_MODE_REQ
WFS_CMD_VDM_EXIT_MODE_ACK
5.4PTR
打印机必须支持中文(Unicode)打印、英文大小写打印、常用符号、条形码及图片打印。
PTR必须支持CEN/XFS3.0标准中列出的所有命令。
WFS_INF_PTR_STATUS
fwDevice
当fwPaper状态为WFS_PTR_PAPERLOW或WFS_PTR_PAPEROUT时设备状态应为WFS_PTR_DEVONLINE
当设备正执行ExecuteCommand时处于WFS_PTR_DEVBUSY状态时,此时所有的InfoCommand命令均应立即返回正确信息。
WFS_INF_PTR_CAPABILITIES
fwReadForm
凭条打印机、回单打印机必须包含WFS_PTR_READBARCODE、WFS_PTR_READIMAGE
fwWriteForm
凭条打印机必须至少包含WFS_PTR_WRITETEXT
流水打印机必须至少包含WFS_PTR_WRITETEXT
fwControl
凭条打印机必须至少包含WFS_PTR_CTRLEJECT、WFS_PTR_CTRLCUT、WFS_PTR_CTRLSKIP、WFS_PTR_CTRLFLUSH、WFS_PTR_CTRLALARM
流水打印机必须至少包含WFS_PTR_CTRLFLUSH
fwCharSupport
所有打印机都必须支持WFS_PTR_ASCII、WFS_PTR_UNICODE
WFS_INF_PTR_FORM_LIST
命令执行时,只列出该逻辑打印设备的Form名称,而不能列出其他打印设备的Form名称。
WFS_INF_PTR_QUERY_FORM
wBase
Form必须至少包含WFS_FRM_MM、WFS_FRM_ROWCOLUMN
wAlignment
Form必须支持WFS_FRM_TOPLEFT、WFS_FRM_TOPRIGHT、WFS_FRM_BOTTOMLEFT、WFS_FRM_BOTTORMRIGHT
fwCharSupport
所有Form都必须支持WFS_PTR_ASCII
WFS_INF_PTR_QUERY_FIELD
SP必须支持查询Form某个域字段或全部域字段的定义细节。
在打印FORM时,如果打印数据溢出,则SP必须提供两种方式进行处理:
a.WFS_FRM_OVFTERMINATE
b.WFS_FRM_OVFTRUNCATE
WFS_CMD_PTR_CONTROL_MEDIA
lpdwMediaControl
WFS_PTR_CTRLCUT切纸时,必须支持在黑标处切断。
当该命令执行出错时必须正确的返回相应的错误码
WFS_CMD_PTR_RAW_DATA
ulSize
当目标打印机内容长度超出打印介质宽度时,自动换行打印
lpbData
打印时支持换行符‘\n’
WFS_EXEE_PTR_FIELDERROR
当Field出错时该事件应及时被触发,并给出具体的wFailure值
WFS_USRE_PTR_RETRACTBINTHRESHOLD
当RETRACTBIN达到High或者Full时该事件应及时被触发
WFS_USRE_PTR_PAPERTHRESHOLD
打印机少纸或缺纸发生时,纸阈值事件应及时被触发
WFS_SRVE_PTR_MEDIADETECTED
当执行Reset命令时,如果打印机中遗留有Media时,应及时触发此事件
wPosition
当Reset后其值应为WFS_PTR_MIDIARETRACTED
FORM与MEDIA定义
FORM&MEDIA存放位置
ReceiptPrinter的Form文件存放在:
C:
\xfs\form\rptr\下
JournalPrinter的Form文件存放在:
C:
\xfs\form\jptr\下
ReceiptPrinter的Media文件存放在:
C:
\xfs\media\rptr\下
JournalPrinter的Media文件存放在:
C:
\xfs\media\jptr\下
Form&Media文件的文件类型
Form文件的文件后缀名为def,也就是说Form文件必须是*.def文件。
Form定义应支持在Form名称唯一的情况下,使用多个不同的def文件。
Media文件的文件后缀名为def,也就是说Media文件必须是*.def文件。
Form定义
●Form、Media的度量基本单位支持毫米、行列。
●FORM定义中所有坐标的起始位置必须从1开始计算。
●Field数据String中可包含换行符‘\n’,打印时应能正确处理。
●域中的每个中文或全角符号的宽度为两个ASCII字符。
●打印ASCII字符必须支持以下字体中的一种:
TimeNewRoman,INTERNATIONAL,宋体,楷体。
●打印中文字符必须支持以下字体中的一种:
宋体,楷体。
●需支持所有的OVERFLOW,STYLE。
●对凭条打印机,其FIELD在CPI为15时,应能每行打印40字符或以上,单张凭条能打印24行或以上。
异常FORM的处理
下列情况SP应返回错误:
●如FORM中两个域的定义范围有重合。
●如FORM中从域的起始列加上域的列宽超出MIEDIA的边界。
●如FORM中从域的起始行加上域的行数超出MIEDIA的边界。
5.5CDM
CDM必须至少支持下表中列出的命令:
InfoCommands
ExecuteCommands
WFS_INF_CDM_STATUS
WFS_CMD_CDM_DENOMINATE
WFS_INF_CDM_CAPABILITIES
WFS_CMD_CDM_DISPENSE
WFS_INF_CDM_CASH_UNIT_INFO
WFS_CMD_CDM_COUNT
WFS_INF_CDM_MIX_TYPES
WFS_CMD_CDM_PRESENT
WFS_INF_CDM_PRESENT_STATUS
WFS_CMD_CDM_REJECT
WFS_CMD_CDM_RETRACT
WFS_CMD_CDM_SET_CASH_UNIT_INFO
WFS_CMD_CDM_START_EXCHANGE
WFS_CMD_CDM_END_EXCHANGE
WFS_CMD_CDM_RESET
对CEN/XFS标准及本细化实施标准中所要求的持久值(persistent),在拔插取款模块的各钞箱时不应被改变。
WFS_INF_CDM_STATUS
fwDevice
当设备正在执行ExecuteCommand时处于WFS_CDM_DEVBUSY状态,此时所有的InfoCommand命令均应立即返回正确信息。
设备Retract失败,或者Dispense成功后Present失败且Reject失败应转入WFS_CDM_DEVHWERROR状态。
WFS_INF_CDM_CAPABILITIES
fwType
在ATM上,必须为WFS_CDM_SELFSERVICEBILL。
wMaxDispenseItems
出钞模块一次出钞动作可吐出的最大张数。
如果DISPENSE命令指定的出钞张数大于此限制,则DISPENSE命令失败,返回WFS_ERR_CDM_TOOMANYBILLS。
不允许sub_dispense。
bShutteControl
必须为TRUE。
即Shutter是由SP控制,而不需应用程序显示控制。
fwRetractAreas
至少包含WFS_CDM_RA_REJECT。
bItemsTakenSensor
必须为TRUE,即设备应能检测取钞动作。
fwExchangeType
必须至少包含WFS_CIM_EXBYHAND。
WFS_INF_CDM_CASH_UNIT_INFO
允许一个逻辑钞箱对应一个或多个物理钞箱。
WFSCDMCASHUNIT结构中的cCurrencyID,ulValues,ulInitialCount,ulCount,ulRejectCount,ulMinimum,ulMaximum,及WFSCDMPHCU结构中的ulInitialCount,ulCount,ulRejectCount,ulMaximum均为持久值(persistent)。
ulMinimum
如果此值大于0,当钞箱内剩余钞票张数小于此值时,此钞箱应可以继续出钞,直到张数为0或张数小于钞箱的物理限制值时,此钞箱无法出钞,此时将忽略检测阈值的硬件传感器。
如果此值为0,且存在检测阈值的硬件传感器,则在该逻辑钞箱对应的所有物理钞箱都到达阈值时,激发WFS_USRE_CIM_CASHUNITTHRESHOLD事件。
ulMaximum
如果此值大于0,当钞箱内钞票张数大于此值时,钞箱仍可继续吞钞,直到张数达到钞箱的物理限制,此时将忽略检测阈值的硬件传感器。
如果此值为0,且存在检测阈值的硬件传感器,则在该逻辑钞箱对应的所有物理钞箱都到达阈值时,激发WFS_USRE_CIM_CASHUNITTHRESHOLD事件。
WFS_INF_CDM_MIX_TYPES
必须至少支持下述两种配钞算法:
WFS_CDM_MIX_MINIMUM_NUMBER_OF_BILLS与WFS_CDM_MIX_EQUAL_EMPTYING_OF_CASH_UNITS
WFS_CMD_CDM_DISPENSE
DISPENSE命令完成后,不论命令是否成功,各钞箱的钞票张数计数器均应能正确反应DISPENSE命令执行后的情况。
如某钞箱的钞票张数小于最小阈值,则激发WFS_USRE_CDM_CASHUNITTHRESHOLD事件。
调用此命令时应按照钞箱剩余钞票的逻辑计数计算配钞方案,如某钞箱的逻辑计数为0,则不应从此钞箱出钞。
不支持部分出钞。
bPresent
如设备无叠钞区(bIntermediateStacker=False),则此参数必须为TRUE。
否则返回错误WFS_ERR_UNSUPP_COMMAND。
WFS_ERR_CDM_SAFEDOOROPEN:
如调用此命令前设备的SAFEDOOR处于打开状态,或在此命令执行过程中打开SAFEDOOR,则命令失败,且必须返回此错误码。
lpDenomination
如无法按此参数指定的配钞方案出钞,则SP应能调整配钞方案,通过从其他钞箱出钞的方式,尽最大可能保证命令成功,并在返回参数中包含实际的配钞方案。
WFS_CMD_CDM_REJECT
REJECT命令成功后,各钞箱的钞票张数计数器均应能正确反应REJECT命令执行后的情况。
如废钞箱的钞票张数大于最大阈值,则激发WFS_USRE_CDM_CASHUNITTHRESHOLD事件。
如REJECT命令失败,则CDM设备状态变为WFS_CDM_DEVHWERROR。
WFS_CMD_CDM_RETRACT
RETRACT命令成功后,各钞箱的钞票张数计数器均应能正确反应命令执行后的情况。
如废钞箱的钞票张数大于最大阈值,则激发WFS_USRE_CDM_CASHUNITTHRESHOLD事件。
如RETRACT命令失败,则CDM设备状态变为WFS_CDM_DEVHWERROR。
WFS_CMD_CDM_SE