1.重写了更新程序 2.身份证阅读器接口增加SW100 3.FastReport组件汉化 4.修正撤回发送科室时SQL语句 5.修正分检生成小结时结论重复的BUGdhzzyy
parent
9e192567f2
commit
a5cd6013b3
59 changed files with 2624 additions and 953 deletions
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
@ -0,0 +1,334 @@ |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
多合一读写器接口规范 |
||||
|
||||
|
||||
|
||||
动态库名:SSCARDInterface.dll |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
一、外部方法 |
||||
|
||||
|
||||
1.1打开设备 |
||||
|
||||
long WINAPI iOpenPort(char* ErrMsg); |
||||
参数:ErrMsg:[OUT]返回错误信息,下同 |
||||
|
||||
返回值:非0表示失败 |
||||
|
||||
|
||||
1.2关闭设备 |
||||
|
||||
|
||||
long WINAPI iClosePort(); |
||||
返回值:非0表示失败 |
||||
|
||||
|
||||
蜂鸣器 |
||||
|
||||
long WINAPI iPosBeep (); |
||||
返回值:非0表示失败 |
||||
|
||||
|
||||
1.3读取身份证/港澳台居住证信息 |
||||
|
||||
|
||||
函数原型: |
||||
long WINAPI iReaderIDCard_CS(char* pPicFilePath, char* cardinfo, char* dsp, |
||||
char* ErrMsg); |
||||
|
||||
功能:读取身份证信息 |
||||
|
||||
参数:pPicFilePath:[IN]照片路径,例:D:\\zp.bmp |
||||
Cardinfo:[OUT] 读卡成功时返回 |
||||
"姓名|性别|民族|出生日期|地址|身份证号|发卡机关|发卡日期|卡有效期|证件类型|" |
||||
。 |
||||
证件类型:I:外国人 J:港澳台居住证,居民身份证为空格 |
||||
dsp[OUT] 预留 |
||||
返回值:非0表示失败 |
||||
|
||||
|
||||
|
||||
读取身份证UID |
||||
|
||||
long WINAPI iReadCertID_CS(char* cardinfo, char* ErrMsg); |
||||
功能:读取社保卡信息 |
||||
|
||||
参数: |
||||
Cardinfo:[OUT] 成功返回身份证16位UID字符串。 |
||||
|
||||
返回值:非0表示失败 |
||||
|
||||
|
||||
1.4读取社保卡信息 |
||||
|
||||
函数原型: |
||||
long WINAPI iReadSicard_CS(int slot,char* cardinfo, char* ErrMsg); |
||||
功能:读取社保卡信息 |
||||
|
||||
参数:slot:[IN]PSAM卡槽,SAM1~SAM4(值:17~20) |
||||
Cardinfo:[OUT] |
||||
成功返回:"卡识别码|社保卡卡号|社会保障号码|姓名|性别|民族|出生日期|发卡日期 |
||||
|卡有效期|"。 |
||||
|
||||
返回值:非0表示失败 |
||||
|
||||
|
||||
|
||||
|
||||
1.5 M1卡读写 |
||||
|
||||
|
||||
1.5.1 M1卡读操作 |
||||
|
||||
1)函数原型: |
||||
long WINAPI MifareOnCardRead_CS(int addr, int keyType, char* passWord, |
||||
char* OutData, char* ErrMsg) |
||||
功能:读取M1卡某一块的数据,ASCii格式 |
||||
|
||||
参数: |
||||
addr:[IN]块地址(0~63) |
||||
keyType:[IN]认证KeyA时传0x60, KeyB:0x61 |
||||
passWord:[IN]6字节十六进制字符串密码,例如 "ffffffffffff" |
||||
OutData:[OUT]读取的数据 |
||||
|
||||
返回值:非0表示失败。 |
||||
|
||||
|
||||
2)函数原型: |
||||
long WINAPI MifareOnCardReadHEX_CS(int addr, int keyType, char* passWord, |
||||
char* OutData, char* ErrMsg) |
||||
|
||||
功能:读取M1卡某一块的数据,十六进制字符串格式 |
||||
|
||||
参数: |
||||
addr:[IN]块地址(0~63) |
||||
keyType:[IN]认证KeyA时传0x60, KeyB:0x61 |
||||
passWord:[IN]6字节十六进制字符串密码,例如 "ffffffffffff" |
||||
OutData:[OUT]读取的数据 |
||||
|
||||
|
||||
返回值:非0表示失败。 |
||||
|
||||
|
||||
|
||||
1.5.2 M1卡写操作 |
||||
|
||||
|
||||
1)函数原型: |
||||
long WINAPI MifareOnCardWrite_CS(int addr, int keyType, char* passWord, |
||||
char* Data, char* ErrMsg) |
||||
|
||||
功能:写入M1卡某一块的数据,ASCii格式 |
||||
|
||||
参数: |
||||
addr:[IN]块地址(0~63) |
||||
keyType:[IN]认证KeyA时传0x60, KeyB:0x61 |
||||
passWord:[IN]6字节十六进制字符串密码,例如 "ffffffffffff" |
||||
Data:[IN]待写入的数据 16个字符 |
||||
|
||||
返回值:非0表示失败。 |
||||
|
||||
|
||||
2)函数原型: |
||||
long WINAPI MifareOnCardWriteHEX_CS(int addr, int keyType, char* passWord, |
||||
char* Data, char* ErrMsg) |
||||
|
||||
功能:写入M1卡某一块的数据,十六进制字符串格式 |
||||
|
||||
参数: |
||||
addr:[IN]块地址(0~63) |
||||
keyType:[IN]认证KeyA时传0x60, KeyB:0x61 |
||||
passWord:[IN]6字节十六进制字符串密码,例如 "ffffffffffff" |
||||
Data:[IN]待写入的数据 32个字符 |
||||
|
||||
返回值:非0表示失败。 |
||||
|
||||
|
||||
1.6读取磁条卡信息 |
||||
|
||||
函数原型: |
||||
long WINAPI iReadMagCard(int timeOut, int nTrack, char* trackData, char* |
||||
ErrMsg); |
||||
功能:读取磁条卡信息 |
||||
|
||||
参数:timeOut:[IN]刷卡超时值,单位为秒 |
||||
nTrack:[IN] 磁道值1-3 |
||||
Cardinfo:[OUT] 成功返回磁道信息。 |
||||
|
||||
返回值:小于等于0表示失败,大于0表示成功 |
||||
|
||||
|
||||
1.7扫码二维码信息 |
||||
|
||||
函数原型: |
||||
long WINAPI ScanQRcode(int nTimeOut, char* pCodeInfo, char* ErrMsg); |
||||
|
||||
功能:扫码信息 |
||||
|
||||
参数:nTimeOut:[IN]扫码超时值,单位为秒 |
||||
pCodeInfo:[OUT] 成功返回扫码信息。 |
||||
|
||||
返回值:非0表示失败,等于0表示成功 |
||||
|
||||
相关函数: |
||||
设置主动扫码: |
||||
long WINAPI SetAutoQRcode(char* ErrMsg); |
||||
关闭主动扫码: |
||||
long WINAPI CloseAutoQRcode(char* ErrMsg); |
||||
|
||||
|
||||
加密机部分 |
||||
|
||||
|
||||
1 1“读基本信息”函数 |
||||
|
||||
|
||||
1 1.1 SI_ReadCardBas “读基本信息” |
||||
|
||||
|
||||
1.1.1函数定义 |
||||
|
||||
读基本信息接口函数定义见表1。在进行任何社保卡操作前,应先调用此函数。 |
||||
表1读基本信息接口函数定义 |
||||
|函数名称 |读基本信息 | |
||||
|语法 |long SI_ReadCardBas (int iType, char* pOutInfo) | |
||||
|功能描述 |选择社保卡社会保障系统环境后,通过PSAM卡对社保卡进行内部认证,| |
||||
| |通过后将卡内的基本信息读出返回。 | |
||||
|参数说明 |序号 |参数 |输入/输 |类型 |长度(十进 |含义 | |
||||
| | | |出 | |制) | | |
||||
| |1 |iType |IN |整数 |4 |操作卡的类型 | |
||||
| |2 |pOutInfo |OUT |字符串|1024 |读出数据或返回错误 | |
||||
| | | | | | |信息 | |
||||
|返回值 |0表示成功;非0表示失败。 | |
||||
|
||||
|
||||
1.1.2参数说明 |
||||
|
||||
1. 输入参数iType |
||||
表示执行本函数时操作卡的类型,定义如下:1-接触式操作卡;2- |
||||
非接触式操作卡;3-自动寻卡,接触式操作卡优先;4- |
||||
自动寻卡,非接触式操作卡优先。 |
||||
2. 输出参数pOutInfo |
||||
当函数执行成功时,该输出参数为读出的社保卡基本信息各数据项,依次为:发卡地 |
||||
区行政区划代码(卡识别码前6位)、社会保障号码、卡号、卡识别码、姓名、卡复位信 |
||||
息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号。各 |
||||
数据项之间以“|”分割,且最后一个数据项以“|”结尾。例如:639900|111111198101011 |
||||
110|X00000019|639900D15600000500BF7C7A48FB4966|张三|00814E43238697159900BF7C |
||||
7A|1.00|20101001|20201001|410100813475|终端设备号|。 |
||||
当函数执行失败时,该输出参数为错误信息描述。 |
||||
注:当没有终端设备号时,终端设备号返回空字符串。 |
||||
|
||||
|
||||
|
||||
2 1.2 SI_ReadCardHSM_Step1 “基于加密机的读基本信息(步骤一)” |
||||
|
||||
|
||||
1.2.1函数定义 |
||||
|
||||
基于加密机的读基本信息(步骤一)接口函数定义见表2。 |
||||
表2基于加密机的读基本信息(步骤一)接口函数定义 |
||||
|函数名称 |基于加密机的读基本信息(步骤一) | |
||||
|语法 |long SI_ReadCardHSM_Step1 (int iType, char* pOutInfo) | |
||||
|功能描述 |选择社会保障系统环境后,返回内部认证和外部认证所需信息。 | |
||||
|参数说明 |序号 |参数 |输入/输 |类型 |长度(十进 |含义 | |
||||
| | | |出 | |制) | | |
||||
| |1 |iType |IN |整数 |4 |操作卡的类型 | |
||||
| |2 |pOutInfo |OUT |字符串|1024 |返回认证信息或错误 | |
||||
| | | | | | |信息 | |
||||
|返回值 |0表示成功;非0表示失败。 | |
||||
|
||||
|
||||
1.2.2参数说明 |
||||
|
||||
1. 输入参数iType |
||||
定义同1.1.2(1)。 |
||||
2. 输出参数pOutInfo |
||||
当函数执行成功时,该输出参数为读出的社保卡内部认证和外部认证的计算数据,依 |
||||
次为:发卡地区行政区划代码(卡识别码前6位)、卡复位信息(仅取历史字节)、算法 |
||||
标识、卡识别码、内部认证过程因子、内部认证鉴别所需的原始信息、外部认证过程因 |
||||
子、外部认证鉴别所需的原始信息,其中外部认证相关数据项全部不为空或全部为空。 |
||||
各数据项之间以“|”分割,且最后一个数据项以“|”结尾。 |
||||
当函数执行失败时,该输出参数为错误信息描述。 |
||||
注:当外部认证相关数据项为空时,表示不做外部认证。 |
||||
|
||||
|
||||
|
||||
3 1.3 SI_ReadCardHSM_Step2 “基于加密机的读基本信息(步骤二)” |
||||
|
||||
|
||||
1.3.1函数定义 |
||||
|
||||
基于加密机的读基本信息(步骤二)接口函数定义见表3。 |
||||
表3基于加密机的读基本信息(步骤二)接口函数定义 |
||||
|函数名称 |基于加密机的读基本信息(步骤二) | |
||||
|语法 |long SI_ReadCardHSM_Step2 (char *pKey, char* pOutInfo) | |
||||
|功能描述 |根据加密机返回的内部认证和外部认证结果数据对社保卡进行内部认证| |
||||
| |和外部认证,通过后将卡内的基本信息读出返回。 | |
||||
|参数说明 |序号 |参数 |输入/输 |类型 |长度(十进 |含义 | |
||||
| | | |出 | |制) | | |
||||
| |1 |pKey |IN |字符串|128 |加密机返回的内部认 | |
||||
| | | | | | |证和外部认证结果数 | |
||||
| | | | | | |据 | |
||||
| |2 |pOutInfo |OUT |字符串|1024 |读出数据或返回错误 | |
||||
| | | | | | |信息 | |
||||
|返回值 |0表示成功;非0表示失败。 | |
||||
|
||||
|
||||
1.3.2参数说明 |
||||
|
||||
1. 输入参数pKey |
||||
加密机返回的内部认证和外部认证结果数据,依次为:内部认证结果数据(即内部认 |
||||
证鉴别数据(16位)和内部认证鉴别所需的原始信息(16位)拼接组成)、外部认证结 |
||||
果数据(即外部认证鉴别数据(16位)和外部认证鉴别所需的原始信息(16位)拼接组 |
||||
成)。各数据项之间以“|”分割,且最后一个数据项以“|”结尾。 |
||||
注:如果不做外部认证,则后面一个参数都为空字符串。 |
||||
2. 输出参数pOutInfo |
||||
定义同1.1.2(2)。 |
||||
注:当没有PSAM卡时,终端机编号返回12个0,即6个0x00对应的字符。 |
||||
当没有终端设备号时,终端设备号返回空字符串。 |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
2 2 读社保基本信息流程 |
||||
|
||||
读基本信息流程如图C.1所示。 |
||||
|
||||
[pic] |
||||
|
||||
图C.1读基本信息流程 |
||||
具体流程如下: |
||||
(1)调用SI_ReadCardBas函数,判断函数执行结果,若执行成功,则返回基本信息 |
||||
,调用持卡库的卡鉴权服务接口,完成卡鉴权操作;若执行失败,返回错误代码并进行 |
||||
判断,当判断到五种情况的错误代码(详见10.5)后,则调用基于加密机的SI_ReadCar |
||||
dBas_HSM_Step1函数,否则报错退出; |
||||
(2)若SI_ReadCardBas_HSM_Step1函数执行成功,则分析返回数据内容,组织持卡 |
||||
库报文,调用持卡库的卡内部认证服务接口,否则报错退出; |
||||
(3)若卡内部认证服务接口调用成功,则调用基于加密机的SI_ReadCardBas_HSM_S |
||||
tep2函数,否则报错退出; |
||||
(4)若SI_ReadCardBas_HSM_Step2函数执行成功,则返回基本信息,调用持卡库的 |
||||
卡鉴权服务接口,完成卡鉴权操作,否则报错退出。 |
||||
|
||||
|
||||
附录 |
||||
|
||||
| | | |
||||
| | | |
||||
| | | |
||||
| | | |
||||
| | | |
||||
| | | |
||||
| | | |
||||
| | | |
||||
|
Before Width: | Height: | Size: 6.3 KiB |
Loading…
Reference in new issue