DONSEE东信智能 - 身份证社保卡读卡智能终端应用服务商

eastcoms@qq.com
400-6722-705
首页 > 服务支持专区 > 产品支持 > 产品文档下载

EST-100身份证社保卡读卡器Windows SDK接口文档

来源:www.eastcoms.com   标签:SDK 接口文档 身份证 社保卡 读卡器 东信   发布时间: 2018-9-20 15:55:10

本文是广东东信智能科技有限公司EST-100系列身份证社保卡读卡器SDK接口文档,供软件开发人员参考,产品会持续升级优化,包括软件接口等,最新的以公司研发发的为准,网站的只做参考。

广东东信智能科技有限公司EST-100系列身份证社保卡读卡器开发包系统
如需更多开发资料和最新开发包,请联系我们技术支持。



DONSEE系列多功能读写器

Windows API接口规范V1.6

广东东信智能科技有限公司

www.eastcoms.com

2023.04.21

DONSEE系列多功能读写器 1

API接口规范V1.6 1

1、东信智能读写器(SDK)简介 5

2、函数说明 5

2.1通用函数 5

2.1.1 Donsee_Open打开设备 5

2.1.2 Donsee_Close关闭设备 5

2.1.3 Donsee_Beep蜂鸣器函数 6

2.1.4 Donsee_Version读取设备版本 6

2.1.5 Donsee_WRSN 读写序列号(SN) 6

2.2身份证 7

2.2.1 Donsee_ReadIDCard读取身份证信息 7

2.2.2 Donsee_ReadSAMID 读取模块SAM码 8

2.2.3 Donsee_ReadIDCardUid 读取身份证UID 8

2.3社保卡 8

2.3.1 Donsee_ReadSSCard读取社保卡信息 8

2.4非接触类卡片前置函数 9

2.4.1 Donsee_ICRequest请求卡片 9

2.4.2 Donsee_ICAnticoll防碰撞 9

2.4.3 Donsee_ICSelect选择卡片 9

2.4.4 Donsee_SwitchRF设备天线开关 10

2.5 TypeA、TypeB卡 10

2.5.1 Donsee_SetTypeA设置为TypeA 10

2.5.2 Donsee_SetTypeB设置为TypeB 10

2.5.3 Donsee_PowerOnTypeA TypeA卡上电复位 11

2.5.4 Donsee_PowerOnTypeB TypeB卡上电复位 11

2.5.5 Donsee_APDU执行APDU命令 11

2.6 M1卡 12

2.6.1 Donsee_M1VerifyPass M1卡认证秘钥 12

2.6.2 Donsee_M1VerifyPassHEX M1卡认证秘钥 12

2.6.3 Donsee_M1Read M1卡读卡 12

2.6.4 Donsee_M1Write M1卡写卡 13

2.6.5 Donsee_M1Initval M1卡初始化 13

2.6.6 Donsee_M1Increment M1卡增值 13

2.6.7 Donsee_M1Decrement M1卡减值 14

2.6.8 Donsee_M1Readval M1卡读值 14

2.6.9 Donsee_M1LoadKey M1卡装载密钥 14

2.6.10 Donsee_M1Verify M1卡装载密钥 15

2.6.11 Donsee_ReadICUid读取M1和CPU卡的Uid卡号 15

2.7接触CPU卡 15

2.7.1 Donsee_PowerOn CPU卡上电复位 15

2.7.2 Donsee_ColdPowerOn 冷复位 16

2.7.3 Donsee_HotPowerOn 热复位 16

2.7.4 Donsee_APDU CPU卡执行APDU命令 16

2.7.5 Donsee_PowerOff下电 17

2.7.6 Donsee_GetStatus获取卡座状态 17

2.8 15693卡 18

2.8.1 Donsee_15693_Find 15693寻卡 18

2.8.2 Donsee_15693_Info 15693获取卡片详细信息 18

2.8.3 Donsee_15693_Read 15693读卡 18

2.8.4 Donsee_15693_Write 15693写卡 18

2.8.5 Donsee_15693_WriteAFI 15693写AFI 19

2.8.6 Donsee_15693_LockAFI 15693锁AFI 19

2.8.7 Donsee_15693_WriteDSFID 15693写DSFID 19

2.8.8 Donsee_15693_LockDSFID 15693锁DSFID 20

2.8.9 Donsee_15693_LockDataBlock用于锁定块内容 20

2.9 SLE4442卡 20

2.9.1 Donsee_4442_PowerOn 4442卡上电 20

2.9.2 Donsee_4442_PowerOff 4442卡下电 20

2.9.3 Donsee_4442_Read 4442卡读数据 21

2.9.4 Donsee_4442_Write 4442卡写数据 21

2.9.5 Donsee_4442_Verify 4442卡认证密钥 21

2.9.6 Donsee_4442_Change 4442卡修改密钥 22

2.9.7 Donsee_4442_ReadProtect 4442卡读保护数据 22

2.9.8 Donsee_4442_WriteProtect 4442卡写保护数据 22

2.9.9 Donsee_4442_ReadCount 4442卡密钥剩余认证次数 23

2.10磁条卡 23

2.10.1 Donsee_ReadMagCard磁条卡读卡 23

2.10.2 Donsee_ReadMagType设置输出模式 23

2.11北京通 24

2.11.1 Donsee_ReadBJTIDCard读取北京通信息 24

2.11.2 Donsee_ReadBJTIDCard_Photo读取北京通照片 25

2.12辅助类函数 25

2.12.1 Donsee_HexToStr 16进制数组转字符串 25

2.12.2 Donsee_StrToHex 字符串转16进制数组 25

2.13社保卡加密机 26

2.13.1 Donsee_iReadCardBas读基本信息 26

2.13.2 Donsee_iReadCardBas_HSM_Step1加密机步骤1 26

2.13.3 Donsee_iReadCardBas_HSM_Step2加密机步骤2 27

2.13.4 Donsee_getTerminalNo获取终端机编号 27

2.13.5 Donsee_ChipSerial获取芯片序列号,即终端设备号 28

3、状态码 28

4、卡片调用顺序 30

4.1 TypeA卡 30

4.2 TypeB卡 30

4.3 M1卡 30

4.4 4442卡 30

4.5 接触CPU卡 30

1、DONSEE读卡器SDK简介

本文档描述了广东东信智能科技有限公司DONSEE系列读写器SDK的函数定义、调用方法、参数以及返回值说明,供开发人员进行二次开发时使用。

2、函数说明

2.1通用函数

2.1.1 Donsee_Open打开设备

定义:打开设备端口

原型:

long Donsee_Open(char* dev_Name)

参数:

dev_Name[in] windows:USB设备传入”USB”;串口设备传入”COM1” “COM2”等

Android:USB设备传入”USB”;”ttyS0”,”ttyUSB0”,”ttySAC0”等

返回值:

0: 打开设备成功;

非0: 打开设备失败,参考状态码

2.1.2 Donsee_Close关闭设备

定义:关闭设备端口

原型:

long Donsee_Close()

参数:无

返回值:

0: 关闭设备成功;

非0: 关闭设备失败,参考状态码

2.1.3 Donsee_Beep蜂鸣器函数

定义:调用设备蜂鸣器

原型:

long Donsee_Beep()

参数:无

返回值:

0: 调用蜂鸣器成功;

非0: 调用蜂鸣器失败,参考状态码

2.1.4 Donsee_Version读取设备版本

定义:读取设备版本号

原型:

long Donsee_Version (char* pszVersion)

参数:

pszVersion [out] 设备版本号

返回值:

0: 获取设备版本成功;

非0: 获取设备版本失败,参考状态码

2.1.5 Donsee_WRSN 读写序列号(SN)

定义:写入(读取)设备序列号

原型:

long Donsee_WRSN (int nType, char* pszSerial)

参数:

nType[in] 读写类型: 0,写入序列号;1,读取序列号

pszSerial[in|out] nType = 0时,[in]写入序列号数据;nType = 1时,[out]读出序列号数据

返回值:

0: 序列号操作成功;

非0: 序列号操作失败,参考状态码

2.2身份证

typedef struct

{

    char name[40];               /*中文姓名*/

    char ENfullname[40];               /*英文姓名*/

    char sex[10];                 /*性别*/

    char people[20];             /*民族*/

    char address[200];                 /*地址*/

    char birthday[50];             /*出生日期(YYYYMMDD)*/

    char signdate[50];             /*发证日期(YYYYMMDD)*/

    char validterm[50];                     /*有效日期(YYYYMMDD)*/

    char number[40];             /*证件号码*/

    char organs[50]; /*发证机关(或外国人永久居住正-当次申请受理机关)*/

    char Nationality[200];                 /*国籍*/

    char Photo[2049];      /*读取二代证电子信息时保存照片数据信息*/

    char Other[200];             /*其他*/

    char passNu[24];             /*通行证号*/

    char signCount[8];             /*签发数次*/

    char certVersion[8];             /*证件版本*/

    char certType; /*卡片类型,”0”大陆身份证” ”,I”外国人,”J”港澳台*/

char figData[2049]; /*指纹信息*/

} IDINFO;

2.2.1 Donsee_ReadIDCard读取身份证信息

定义:读取身份证信息

原型:long Donsee_ReadIDCard (int nType,char* szPath,IDINFO* idinfo,char* pszMsg);

参数:

nType [in]: 设置身份证读卡类型:0,文本信息;1,文本+照片;2,文本+照片+指纹

szPath[in]: 获取二代证头像路径

idinfo [out]; 获取的身份证信息

pszMsg [out]; 错误信息

返回值:

0: 读取身份证信息成功;

非0: 读取身份证信息失败,参考状态码

2.2.2 Donsee_ReadSAMID 读取模块SAM码

定义:读取身份证模块SAM码

原型:long Donsee_ReadSAMID (char* pszSAMID);

参数:

pszSAMID [out] 身份证模块SAM码

返回值:

0: 读取身份证模块SAM码成功;

非0: 读取身份证模块SAM码失败,参考状态码

2.2.3 Donsee_ReadIDCardUid 读取身份证UID

定义:读取身份证UID

原型:long Donsee_ReadIDCardUid(char* pszUID);

参数:

pszUID [out] 身份证UID码

返回值:

0: 读取身份证UID成功;

非0: 读取身份证UID失败,参考状态码

2.3社保卡

/*********************社保卡读取  特别注意事项**********************

1、二代社保卡可以直接读取,只支持插卡(接触式)方式读取。

2、三代社保卡加密了,需要PSAM卡才能读取,支持插卡(接触式)和非接触式两种读取方式。

3、如果插PSAM卡了,读卡失败,需要留意以下返回值:

-25536、-25537、-25538、-25539、-25540、-25541,外部认证失败,表示剩余可尝试次数0~5次,当返回-25536社保卡就锁卡了。

*********************社保卡读取  特别注意事项**********************/

typedef struct

{

char name[40];         /*姓名*/

char sex[10]; /*性别*/

char nation[20]; /*民族*/

char birthday[50];     /*出生日期(YYYYMMDD)*/

char signdate[50];     /*发证日期(YYYYMMDD)*/

char validterm[50];         /*有效日期(YYYYMMDD)*/

char cardnumber[40]; /*卡号*/

char idnumber[40]; /*社会保障号码(身份证号)*/

char city[64] ; /*城市代码*/

char cardveVrsion[8] ; /*社保卡版本*/

char Other[200]; /*其他*/

} SSCard_IDINFO;

2.3.1 Donsee_ReadSSCard读取社保卡信息

定义:读取二代、三代社保卡

原型:

long Donsee_ReadSSCard ( int nSlotPsam,

SSCard_IDINFO* cardInfo,

char* pszChMsg);

参数:

nSlotPsam [int] PSAM存放卡座,0x11 SAM1, 0x12 SAM2, 0x13 SAM3, 0x14 SAM4

cardInfo [out] 社保卡信息

pszChMsg [out] 错误信息

返回值:

0: 读取社保卡成功;

非0: 读取社保卡失败,参考状态码

备注:二代社保卡无需PSAM卡,只支持接触式读取。三代社保卡必须配备PSAM卡,支持接触、非接两种方式读取。

2.4非接触类卡片前置函数

2.4.1 Donsee_ICRequest请求卡片

定义:请求卡片

原型:

long Donsee_ICRequest ()

参数:

返回值:

0: 请求卡片成功;

非0: 请求卡片失败,参考状态码

2.4.2 Donsee_ICAnticoll防碰撞

定义:卡片防碰撞

原型:

long Donsee_ICAnticoll (char* pszUID)

参数:

pszUID [out] 卡片序列号Uid

返回值:

0: 卡片防碰撞成功;

非0: 卡片防碰撞失败,参考状态码

2.4.3 Donsee_ICSelect选择卡片

定义:选择卡片

原型:

long Donsee_ICSelect (unsigned char nCardType)

参数:

nCardType [in] 0x41 表示 typeA 及M1 卡,0x42 表示 typeB卡

返回值:

0: 选择卡片成功;

非0: 选择卡片失败,参考状态码

2.4.4 Donsee_SwitchRF设备天线开关

定义:设备天线开关

原型:

long Donsee_SwitchRF (int nFlag)

参数:

nType 0,打开设备天线;1,关闭设备天线

返回值:

0: 天线开关操作成功;

非0: 天线开关操作失败,参考状态码

2.5 TypeA、TypeB卡

2.5.1 Donsee_SetTypeA设置为TypeA

定义:设置为TypeA卡

原型:

long Donsee_SetTypeA ()

参数:

返回值:

0: 设置为TypeA卡成功;

非0: 设置为TypeA卡失败,参考状态码

2.5.2 Donsee_SetTypeB设置为TypeB

定义:设置为TypeB卡

原型:

long Donsee_SetTypeB ()

参数:

返回值:

0: 设置为TypeB卡成功;

非0: 设置为TypeB卡失败,参考状态码

2.5.3 Donsee_PowerOnTypeA TypeA卡上电复位

定义:TypeA上电

原型:

long Donsee_ PowerOnTypeA (char* pszAtr)

参数:

pszAtr [out] 卡片复位信息(ATR)

返回值:

0: TypeA上电成功;

非0: TypeA上电失败,参考状态码

2.5.4 Donsee_PowerOnTypeB TypeB卡上电复位

定义:TypeB上电

原型:

long Donsee_PowerOnTypeB(char* pszAtr)

参数:

pszAtr [out] 卡片复位信息(ATR)

返回值:

0: TypeB上电成功;

非0: TypeB上电失败,参考状态码

2.5.5 Donsee_APDU执行APDU命令

定义:TypeA|TypeB执行APDU命令

原型:

long Donsee_APDUType(char* szAPDUCmd, char* pszAPDUResult);

参数:

szAPDUCmd [in] 下发APDU命令(字符串”0084000008”)

pszAPDUResult [out] 执行APDU相应数据(字符串如”9000”)

返回值:

0: 执行APDU命令成功;

非0: 执行APDU命令失败,参考状态码

2.6 M1卡

2.6.1 Donsee_M1VerifyPass M1卡认证秘钥

定义:M1卡认证秘钥

原型:

long Donsee_M1VerifyPass ( unsigned char nMode,   unsigned char nSecNr,   char *szPassKey);

)

参数:

nMode [in] 认证模式, 0x00 认证KeyA | 0x04  认证KeyB

nSecNr [in] 扇区号 (0~15)

szPassKey [in] 密钥(如:”FFFFFFFFFFFF”)

返回值:

0: M1卡认证秘钥成功;

非0: M1卡认证秘钥失败,参考状态码


2.6.2 Donsee_M1VerifyPassHEX M1卡认证秘钥

定义:M1卡认证秘钥

原型:

long Donsee_M1VerifyPassHex ( unsigned char nMode,   unsigned char nSecNr,   unsigned char * szPassKey);;

)

参数:

nMode [in] 认证模式, 0x00 认证KeyA|0x04  认证KeyB

nSecNr [in] 扇区号 (0~15)

szPassKey [in] 密钥(如:{0xff,0xff,0xff ,0xff ,0xff ,0xff })

返回值:

0: M1卡认证秘钥成功;

非0: M1卡认证秘钥失败,参考状态码

2.6.3 Donsee_M1Read M1卡读卡

定义:M1卡读卡

原型:

long Donsee_M1Read(unsigned char nAddr, unsigned char *pszData)

参数:

nAddr [in] 块号(S50该值范围0~63| S70该值范围0~255)

pszData [out] 读取数据

返回值:

0: M1卡读卡成功;

非0: M1卡读卡失败,参考状态码

2.6.4 Donsee_M1Write M1卡写卡

定义:M1卡写卡

原型:

long Donsee_M1Write(unsigned char nAddr, char *pszData)

参数:

nAddr [in] 块号(S50该值范围0~63| S70该值范围0~255)

pszData [in] 读取数据

块地址计算公式:块地址=扇区号*4+当前块号

返回值:

0: M1卡写卡成功;

非0: M1卡写卡失败,参考状态码


2.6.5 Donsee_M1Initval M1卡初始化

定义:M1卡初始化

原型:

long Donsee_M1Initval (unsigned char nAddr, unsigned long nValue)

参数:

nAddr[in] 块号(S50该值范围0~63| S70该值范围0~255)

nValue [in] 数值

返回值:

0: M1卡初始化成功;

非0: M1卡初始化失败,参考状态码

2.6.6 Donsee_M1Increment M1卡增值

定义:M1卡增值

原型:

long Donsee_M1Increment (unsigned char nAddr, unsigned long nValue)

参数:

nAddr[in] 块号(S50该值范围0~63| S70该值范围0~255)

nValue [in] 数值

返回值:

0: M1卡增值成功;

非0: M1卡增值失败,参考状态码

2.6.7 Donsee_M1Decrement M1卡减值

定义:M1卡减值

原型:

long Donsee_M1Decrement (unsigned char nAddr, unsigned long nValue)

参数:

nAddr[in] 块号(S50该值范围0~63| S70该值范围0~255)

nValue [in] 数值

返回值:

0: M1卡减值成功;

非0: M1卡减值失败,参考状态码

2.6.8 Donsee_M1Readval M1卡读值

定义:M1卡读值

原型:

long Donsee_M1Readval (unsigned char nAddr, unsigned long* nValue)

参数:

nAddr[in] 块号(S50该值范围0~63| S70该值范围0~255)

nValue [out] 数值

返回值:

0: M1卡读值成功;

非0: M1卡读值失败,参考状态码

2.6.9 Donsee_M1LoadKey M1卡装载密钥

定义:装载M1卡密钥到设备

原型:

long Donsee_M1LoadKey ( unsigned char nMode,   unsigned char nSecNr,   char *PassWord);;

)

参数:

nMode [in] 认证模式, 0x00 认证KeyA|0x04  认证KeyB

nSecNr [in] 扇区号 (0~15)

PassWord [in] 待下载到设备的密钥,如”FFFFFFFFFFFF”

例子:

char key[16]= ”FFFFFFFFFFFF”;

int nRe = Donsee_M1LoadKey (0,0,key);//下载扇区0的KeyA密钥至设备里

返回值:

0: M1卡装载密钥成功;

非0: M1卡装载密钥失败,参考状态码


2.6.10 Donsee_M1Verify M1卡装载密钥

定义:装载M1卡密钥到设备

原型:

long Donsee_M1Verify( unsigned char nMode, unsigned char nSecNr);

)

参数:

nMode [in] 认证模式, 0x00 认证KeyA|0x04  认证KeyB

nSecNr [in] 扇区号 (0~15)

返回值:

0: M1卡认证装载密钥成功;

非0: M1卡认证装载密钥失败,参考状态码

2.6.11 Donsee_ReadICUid读取M1和CPU卡的Uid卡号

定义:读取M1和CPU卡UID,仅仅用于串口设备,不支持USB读取。USB请用M1卡寻卡功能。

原型:

long Donsee_ReadICUid (char* pszUID)

参数:

pszUID[out] 卡片UID

返回值:

0: 读取M1和CPU卡的Uid卡号成功;

非0: 读取M1和CPU卡的Uid卡号失败,参考状态码


2.7接触CPU卡

2.7.1 Donsee_PowerOn CPU卡上电复位

定义:CPU卡上电复位

原型:

long Donsee_PowerOn (unsigned char nSlotNo, char* pszAtr)

参数:

nSlotNo[in] 卡座选择: 0x01 大卡座, 0x02:副卡座 ;

0x11:SAM1卡座;0x12:SAM2卡座;

0x13:SAM3卡座;0x14:SAM4卡座

pszAtr [out] 卡片返回复位信息数据

返回值:

0: 卡片复位成功;

非0: 卡片复位失败,参考状态码

2.7.2 Donsee_ColdPowerOn 冷复位

定义:接触CPU卡冷复位

原型:

long Donsee_ColdPowerOn (unsigned char nSlotNo, char* pszAtr)


参数:

nSlotNo[in] 卡座选择: 0x01 大卡座, 0x02:副卡座 ;

0x11:SAM1卡座;0x12:SAM2卡座;

0x13:SAM3卡座;0x14:SAM4卡座

pszAtr [out] 卡片返回复位信息数据

返回值:

0: 卡片复位成功;

非0: 卡片复位失败,参考状态码


2.7.3 Donsee_HotPowerOn 热复位

定义:接触CPU卡热复位

原型:

long Donsee_HotPowerOn (unsigned char nSlotNo, char* pszAtr)

参数:

nSlotNo[in] 卡座选择: 0x01 大卡座, 0x02:副卡座 ;

0x11:SAM1卡座;0x12:SAM2卡座;

0x13:SAM3卡座;0x14:SAM4卡座

chResponse [out] 卡片返回复位信息数据

返回值:

0: 卡片复位成功;

非0: 卡片复位失败,参考状态码

2.7.4 Donsee_APDU CPU卡执行APDU命令

定义:执行APDU命令

原型:

long Donsee _APDU( unsigned char nSlotNo,

char* szAPDUCmd,

char* pszAPDUResult)

参数:

nSlotNo[in] 卡座选择: 0x01 大卡座, 0x02:副卡座 ;

0x11:SAM1卡座;0x12:SAM2卡座;

0x13:SAM3卡座;0x14:SAM4卡座

szAPDUCmd [in] 下发APDU命令(字符串”0084000008”)

pszAPDUResult [out] 执行APDU相应数据(字符串如”9000”)


返回值:

0: 执行APDU命令成功;

非0: 执行APDU命令失败,参考状态码

2.7.5 Donsee_PowerOff下电

定义:CPU卡下电

原型:

long Donsee_PowerOff (unsigned char nSlotNo)

参数:

nSlotNo[in] 卡座选择: 0x01 大卡座, 0x02:副卡座 ;

0x11:SAM1卡座;0x12:SAM2卡座;

0x13:SAM3卡座;0x14:SAM4卡座

返回值:

0: CPU卡下电成功;

非0: CPU卡下电失败,参考状态码

2.7.6 Donsee_GetStatus获取卡座状态

定义:获取卡座状态

原型:

long Donsee_GetStatus(unsigned char nSlotNo,int* nStatus)

参数:

nSlotNo[in] 卡座选择: 0x01 大卡座, 0x02:副卡座 ;

0x11:SAM1卡座;0x12:SAM2卡座;

0x13:SAM3卡座;0x14:SAM4卡座

nStatus[out] 卡座状态:为 0 表示有卡上电,1表示有卡未上,2表示无卡

返回值:

0: 获取卡座状态成功;

非0: 获取卡座状态失败,参考状态码

2.8 15693卡

2.8.1 Donsee_15693_Find 15693寻卡

定义:15693寻卡

原型:

long Donsee_15693_Find (char* pszUID)

参数:

pszUID [out] 寻卡得到8字节卡片数据;

返回值:

0: 15693寻卡成功;

非0: 15693寻卡失败,参考状态码


2.8.2 Donsee_15693_Info 15693获取卡片详细信息

定义:获取15693卡详细信息

原型:

long Donsee_15693_Info (char* pszCardInfo)

参数:

pszCardInfo [out] 14字节卡片数据;

返回值:

0: 获取15693卡详细信息成功;

非0: 获取15693卡详细信息失败,参考状态码


2.8.3 Donsee_15693_Read 15693读卡

定义:15693读卡

原型:

long Donsee_15693_Read (unsigned char nBlkAdd, char* pszValue)

参数:

nBlkAdd[in] 块地址

pszValue [out] 14字节卡片数据;

返回值:

0: 15693读卡成功;

非0: 15693读卡失败,参考状态码

2.8.4 Donsee_15693_Write 15693写卡

定义:15693写卡

原型:

long Donsee_15693_Write (unsigned char nBlkAdd, char* szData)

参数:

nBlkAdd[in] 块地址

szData [in] 要写入的4字节卡片数据;

返回值:

0: 15693写卡成功;

非0: 15693写卡失败,参考状态码

2.8.5 Donsee_15693_WriteAFI 15693写AFI

定义:15693写AFI

原型:

long Donsee_15693_WriteAFI (unsigned char szValue, char* pszValue)

参数:

szValue [in] 写入的值

pszValue [in] NULL

返回值:

0: 15693写AFI成功;

非0: 15693写AFI失败,参考状态码

2.8.6 Donsee_15693_LockAFI 15693锁AFI

定义:15693写AFI

原型:

long Donsee_15693_LookAFI (char* pszValue)

参数:

pszValue [in] 返回的值

返回值:

0: 15693锁AFI成功;

非0: 15693锁AFI失败,参考状态码

2.8.7 Donsee_15693_WriteDSFID 15693写DSFID

定义:15693写DSFID

原型:

long Donsee_15693_WriteDSFID (unsigned char szValue, char* pszValue)

参数:

szValue [in] 写入的值

pszValue [in] NULL

返回值:

0: 15693写DSFID成功;

非0: 15693写DSFID 失败,参考状态码

2.8.8 Donsee_15693_LockDSFID 15693锁DSFID

定义:15693锁DSFID

原型:

long Donsee_15693_LockDSFID (char* pszValue )

参数:

pszValue [in] 返回的值

返回值:

0: 15693锁DSFID成功;

非0: 15693锁DSFID失败,参考状态码

2.8.9 Donsee_15693_LockDataBlock用于锁定块内容

定义:用于锁定块内容。注意:此过程不可逆(不能解锁)块锁定后内容不能在修改。

原型:

long Donsee_15693_LockDataBlock(unsigned char nBlk_add, char* pszValue)

参数:

nBlk_add [in] 块地址

pszValue [out] 返回数据

返回值:

0: 15693锁块内容成功;

非0: 15693锁块内容失败,参考状态码

2.9 SLE4442卡

2.9.1 Donsee_4442_PowerOn 4442卡上电

定义:4442卡上电

原型:

long Donsee_4442_PowerOn (char* pszUID)

参数:

pszUID [out] 上电返回数据,4字节厂商代码

返回值:

0: 4442卡上电成功;

非0: 4442卡上电失败,参考状态码

2.9.2 Donsee_4442_PowerOff 4442卡下电

定义:4442卡下电

原型:

long Donsee_4442_PowerOff ()

参数:

返回值:

0: 4442卡下电成功;

非0: 4442卡下电失败,参考状态码

2.9.3 Donsee_4442_Read 4442卡读数据

定义:4442卡读取数据

原型:

long Donsee_4442_Read (int nOffset, int nLen, char* pszData)

参数:

nOffset[in] 起始地址

nLen[in] 读取数据长度

pszData [iout] 读取的数据内容

返回值:

0: 4442卡读取数据成功;

非0: 4442卡读取数据失败,参考状态码

2.9.4 Donsee_4442_Write 4442卡写数据

定义:4442卡写入数据

原型:

long Donsee_4442_Write (int nOffset, int nLen, char* szData)

参数:

nOffset[in] 起始地址

nLen[in] 写入数据长度

szData [in] 写入的数据内容

返回值:

0: 4442卡写入数据成功;

非0: 4442卡写入数据失败,参考状态码

2.9.5 Donsee_4442_Verify 4442卡认证密钥

定义:4442卡认证秘钥

原型:

long Donsee_4442_Verify(char* szKey)

参数:

szKey [in] 秘钥数据,如unsigned  char chKey [4]={0xff,0xff,0xff};

返回值:

0: 4442卡认证秘钥成功;

非0: 4442卡认证秘钥失败,参考状态码

2.9.6 Donsee_4442_Change 4442卡修改密钥

定义:4442卡修改秘钥

原型:

long Donsee_4442_Change (char *szNewKey)

参数:

szNewKey [in] 秘钥数据,如unsigned  char chNewKey [4]={0xff,0xff,0xff};

返回值:

0: 4442卡修改密钥成功;

非0: 4442卡修改密钥失败,参考状态码

2.9.7 Donsee_4442_ReadProtect 4442卡读保护数据

定义:4442卡读取保护数据

原型:

long Donsee_4442_ReadProtect (int nOffset, int nLen, char* pszData)

参数:

nOffset[in] 起始地址,起始地址 需小于32

nLen[in] 读取数据长度,数据长度 需小于32

pszData [iout] 读取的数据内容,返回值为一串00或01的数据串,如果为00代表已写保护,如果为01代表未写保护

返回值:

0: 4442卡读保护数据成功;

非0: 4442卡读保护数据失败,参考状态码

2.9.8 Donsee_4442_WriteProtect 4442卡写保护数据

定义:4442卡写入保护数据,即固化数据,一旦写保护,数据将不能再修改

原型:

long Donsee_4442_WriteProtect (int nOffset, int nLen, char* szData)

参数:

nOffset[in] 起始地址,起始地址 需小于32

nLen[in] 读取数据长度,数据长度 需小于32

szData [in] 读取的数据内容,返回值为一串00或01的数据串,如果为00代表已写保护,如果为01代表未写保护

返回值:

0: 4442卡写保护数据成功;

非0: 4442卡写保护数据失败,参考状态码

2.9.9 Donsee_4442_ReadCount 4442卡密钥剩余认证次数

定义:4442卡密钥剩余认证次数

原型:

long Donsee_4442_ReadCount (int* nCount)

参数:

nCount [out] 4442卡密钥剩余认次数

返回值:

0: 获取4442卡密钥剩余认证次数成功;

非0: 获取4442卡密钥剩余认证次数失败,参考状态码




2.10磁条卡

2.10.1 Donsee_ReadMagCard磁条卡读卡

定义:磁条卡读卡

原型:

long Donsee_ReadMagCard (unsigned char nTime,int nTrack,char *pszTrackData)

参数:

ctime[in] 超时时间,单位:秒

track [in] 磁道(1~3)磁道1~~磁道3,track=4时表示全轨一次性刷出

为TLV格式,例如:010101020201020303010203

getdata [out] 返回的数据

返回值:

0: 磁条卡读卡成功;

非0: 磁条卡读卡失败,参考状态码

2.10.2 Donsee_ReadMagType设置输出模式

定义:磁条卡设置输出模式

原型:

long Donsee_ReadMagType (int nMode, unsigned char* szConfig)

参数:

nMode [in] 0表示主动读卡,1表示被动读

szConfig [in] 字符数组

szConfig [0]: 0x01 磁道1

            0x02 磁道2

            0x03 磁道3

            0x04 磁道2\3

szConfig [1]: 0x00 全部输出

            0x01除去起始接收符输出

            0x02只输出数据

szConfig [2]: 0x00不换行输出

            0x01换行输出

返回值:

0: 磁条卡设置输出模式成功;

非0: 磁条卡设置输出模式失败,参考状态码

2.11北京通

typedef struct

{

char name[40];     /*姓名*/

char sex[10]; /*性别*/

char cardnumber[40]; /*北京通号*/

char nType[32] ; /*卡片类型*/

char cardName[40]; /*证件名称*/

char organs[50]; /*发卡机构*/

} BJT_IDINFO;

2.11.1 Donsee_ReadBJTIDCard读取北京通信息

定义:读取北京通信息

原型:

long Donsee_ReadBJTIDCard (BJT_IDINFO* cardInfo,char* arrChMsg);

参数:

cardInfo [out] 北京通信息

arrChMsg [out] 错误信息

返回值:

0: 读取北京通信息成功;

非0: 读取北京通信息失败,参考状态码


2.11.2 Donsee_ReadBJTIDCard_Photo读取北京通照片

定义:读取北京通信息

原型:

long Donsee_ReadBJTIDCard_Photo (char* cardInfoPhoto,char* arrChMsg);

参数:

cardInfoPhoto[in] 北京通照片保存路径

arrChMsg [out] 错误信息

返回值:

0: 读取北京通照片信息成功;

非0: 读取北京通照片信息失败,参考状态码

2.12辅助类函数

2.12.1 Donsee_HexToStr 16进制数组转字符串

定义:16进制数组转字符串

原型:

long Donsee_HexToStr(unsigned char *Src,int len,unsigned char *Des );

参数:

Src[in]: 十六进制数组

Len[in]: 数据长度

Des[out]: 转换好的hexstr格式字符串。

返回值:

0: 16进制数组转字符串成功;

非0: 16进制数组转字符串失败,参考状态码

2.12.2 Donsee_StrToHex 字符串转16进制数组

定义:字符串转16进制数组

原型:long Donsee_StrToHex(unsigned char *Src, int len,unsigned char *Des);

参数:

Src[in]: hexstr格式字符串

Len[in]: 字节长度

Des[out]; 转换好的数据

返回值:

0: 字符串转16进制数组成功;

非0: 字符串转16进制数组失败,参考状态码

2.13社保卡加密机

2.13.1 Donsee_iReadCardBas读基本信息

/*********************社保卡读取  特别注意事项**********************

1、二代社保卡可以直接读取,只支持插卡(接触式)方式读取。

2、三代社保卡加密了,需要PSAM卡才能读取,支持插卡(接触式)和非接触式两种读取方式。

3、如果插PSAM卡了,读卡失败,需要留意以下返回值:

-25536、-25537、-25538、-25539、-25540、-25541,外部认证失败,表示剩余可尝试次数0~5次,当返回-25536社保卡就锁卡了。

*********************社保卡读取  特别注意事项**********************/

定义:读基本信息

原型:

long Donsee_iReadCardBas(int nType, char *pOutInfo)

参数:

nType [in] 卡片类型 1接触、2非接、3接触+非接,非接优先

info [out] 返回的数据

返回值:

0: 读卡成功;

非0: 读卡失败,参考状态码

//返回格式:发卡地区行政区划代码(卡识别码前6位)|社会保障号码|卡号|卡识别码|姓名|卡复位信息(仅取历史字节)|规范版本|发卡日期|卡有效期|终端机编号|终端设备号|

//返回举例:

360700|360700199907151372|890642628|360700D156003335690999604657ED2D|张无忌|0081544B44869B160818107861|2.00|20180701|20280701|310000309109|65884835323437175132|

说明:此函数读三代社保卡需要psam卡,否则返回-2201,二代社保卡可以直接读取

2.13.2 Donsee_iReadCardBas_HSM_Step1加密机步骤1

定义:加密机步骤1

原型:

long Donsee_iReadCardBas_HSM_Step1(int nType,char *pOutInfo)

参数:

nType [in] 卡片类型 1接触、2非接、3接触+非接,非接优先

info [out] 返回的数据

返回值:

0: 读卡成功;

非0: 读卡失败,参考状态码

//返回格式:发卡地行政区划代码|卡复位信息|算法标识|卡识别码|内部认证过程因子|内部认证鉴别所需的原始信息|外部认证过程因子|外部认证鉴别所需的原始信息|

//返回举例:

440100|00814A66678660440100AC8FE3|03|440100D15600880600AC8FE3257118AC|7EFCD0C331DA50AC|0102030405060708|DB25A7E8ABD59B1B|0102030405060708|

2.13.3 Donsee_iReadCardBas_HSM_Step2加密机步骤2

定义:加密机步骤2

原型:

long Donsee_iReadCardBas_HSM_Step2 (char *key, char *pOutInfo)

参数:

key [in]     密钥,即加密机返回的信息

info [out] 返回的数据

返回值:

0: 读卡成功;

非0: 读卡失败,参考状态码

key为加密机返回的内部认证和外部认证结果数据,依次为:内部认证结果数据(即内部认证鉴别数据(16 位)和内部认证鉴别所需的原始信息(16 位)拼接组成)、外部认证结果数据(即外部认证鉴别数据(16 位)和外部认证鉴别所需的原始信息(16 位)拼接组成)。各数据项之间以“|”分割,且最后一个数据项以“|”结尾。

例如:96BBD0687A1667AD0102030405060708|A52BFF7396EEE45F0102030405060708|

//返回格式(和Donsee_iReadCardBas一样):发卡地区行政区划代码(卡识别码前6位)|社会保障号码|卡号|卡识别码|姓名|卡复位信息(仅取历史字节)|规范版本|发卡日期|卡有效期|终端机编号|终端设备号|

//返回举例:

360700|360700199907151372|890642628|360700D156003335690999604657ED2D|张无忌|0081544B44869B160818107861|2.00|20180701|20280701|310000309109|65884835323437175132|

2.13.4 Donsee_getTerminalNo获取终端机编号

定义:读取设备版本号

原型:

long Donsee_getTerminalNo (unsigned char nSlotNo,char* szTerminalNo)

参数:

nSlotNo[in]      PSAM存放卡座,0x11 SAM1, 0x12 SAM2, 0x13 SAM3, 0x14 SAM4

szTerminalNo[out] 社保加密PSAM卡卡号,即终端机编号,12位数据,例如310000309109

返回值:

0: 获取终端机编号成功;

非0: 获取终端机编号失败,参考状态码

2.13.5 Donsee_ChipSerial获取芯片序列号,即终端设备号

定义:读取设备版本号

原型:

long Donsee_ChipSerial(char* pszChipSerial)

参数:

pszChipSerial[out] 获取芯片序列号,即终端设备号,20位数据,例如65884835323437175132

返回值:

0: 获取终端设备号成功;

非0: 获取终端设备号失败,参考状态码

3、状态码

IFD_OK 0 执行成功

IFD_ICC_TypeError -1 卡片类型不对

IFD_ICC_NoExist -2 无卡

IFD_ICC_NoPower -3 有卡未上电

IFD_ICC_NoResponse -4 卡片无应答

IFD_ConnectError -11 读卡器连接错

IFD_UnConnected -12 未建立连接(没有执行打开设备函数)

IFD_BadCommand -13 (动态库)不支持该命令

IFD_ParameterError -14 (发给动态库的)命令参数错

IFD_CheckSumError -15 信息校验和出错

社保卡状态码

返回值 错误信息描述

-1 卡类型不对

-2 无卡

-3 有卡未上电

-4 卡无应答

-5 加载动态库错

-11 读卡器连接错

-12 未建立连接

-13 (动态库)不支持该命令

-14 (发给动态库的)命令参数错

-15 信息校验和出错

-20 卡识别码格式错

-21 内部认证失败(用户卡不合法)

-22 传入数据与卡内不符

-23 传入数据不合法

-24 PSAM卡密钥级别不够

-31 用户取消密码输入

-32 密码输入操作超时

-33 输入密码长度错

-34 两次输入密码不一致

-35(预留) 初始密码不能交易

-36(预留) 不能改为初始密码

-41 运算数据含非法字符

-42 运算数据长度错

-51 PIN校验失败,剩余次数N次(根据卡返回信息)

-52 PIN锁定

-2201 无PSAM卡

-2202 PSAM卡算法不支持(即PSAM卡内没有SSF33算法或SM4算法)

-2203 PSAM卡内没有RKSSSE密钥(3.0卡读个人基本信息需要RKSSSE密钥外部认证)

-2204 不需要加密机认证

-25536、-25537、-25538、-25539、-25540、-25541 外部认证失败,剩余可尝试次数0~5次

-26368 Lc/Le不正确

-26881 命令不接受(无效状态)

-27009 命令与文件结构不相符、当前文件非所需文件

-27010 不满足安全条件

-27011 密钥锁定(算法锁定)鉴别方法锁定

-27012 引用数据无效、随机数无效

-27013 不满足使用条件、应用被锁定、应用未选择、余额上溢

-27016 安全报文数据项不正确、MAC不正确

-27264 数据域参数不正确

-27265 不支持该功能、卡中无MF、卡被锁定、应用锁定

-27266 未找到文件、文件标识相重、SFI不正确

-27267 未找到记录

-27272 未找到引用数据、未找到密钥

-37634 MAC无效

-37635 应用已被永久锁定、卡片锁定

-37891 PSAM卡不支持消费交易

-37894 所需MAC(或/和TAC)不可用

其他 未知错误

4、卡片调用顺序

4.1 TypeA卡

1 设置为TypeA卡片

2 请求卡片

3 防碰撞

4 选择卡片

5 上电

6  APDU 命令

4.2 TypeB卡

1 设置为TypeB卡片

2 上电

3 选卡

4  APDU 命令

4.3 M1卡

1 请求卡片

2 防碰撞

3 选择卡片

4 认证密钥

5 读或写

4.4 4442卡

1 上电复位

2 认证

3 读或写

4.5 接触CPU卡

1 上电

2  APDU 命令


 

 
QQ在线咨询