123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829 |
- #ifndef CARD_HPP
- #define CARD_HPP
- //////////////////////////////////////////////////////////////////////////////
- // MODULE: Y-PR50.HPP
- // PORPUSE: Print Sub Class
- // low level print control
- // margetic read and write
- // password keyboard input
- // DEVELOP TOOL: BOLAND C++ V3.1
- // ZINC C++ V3.5
- // AUTHOR: HUANG-ZHEN
- // WEI-JIANGBO
- // DATE: 1995.1.8
- // VERSION: Version 3.0
- //
- //
- //hz, modified on 95.1.19
- #include <stdio.h>
- #include <stdlib.h>
- #ifdef linux
- typedef int BOOL;
- #define TRUE 1
- #define FALSE 0
- #else
- //#include <bios.h>
- #include <dos.h>
- #include <conio.h>
- #include <string.h>
- #include <windows.h>
- #endif //linux
- #define BAUD 0xe0 /* Baud 9600 */
- #define BAUD_RATE 9600
- #define ShowLogo 57
- #define RS_INIT 0x00
- #define RS_XMT 0x01
- #define RS_RCV 0x02
- #define RS_STATUS 0x03
- #define esc 0x1b
- #ifdef linux
- #define true 1
- #define false 0
- #endif //linux
- #define TIM_OUT_BIT 0x8000
- #define XMT_RDV_BIT 0x2000
- #define BRK_DET_BIT 0x1000
- #define FRM_ERR_BIT 0x0800
- #define PAR_ERR_BIT 0x0400
- #define OVR_RUN_BIT 0x0200
- #define RCV_ERR_BIT 0x8e00
- //hz, #define BAUD 0xe0 /* Baud 9600 */
- #define PARA 0x00 /* Para None */
- #define STOP 0x00 /* Stop 1 */
- #define DATA 0x03 /* Data 8 */
- #define COM1 1 //hz, 0 /* COM1 port */
- #define PORT_ERR 1
- #define PORT_OK 0
- #define BUFSIZE 1024
- #define CLR_BIM "\033\062"
- #define SET_BIM "\033\061"
- #define LINE_BUFSIZ 640 //hz, change 240, now, can write 40 chinese word
- #ifdef linux
- #define true 1
- #define false 0
- #endif //linux
- #define YES 1
- #define NO 0
- #define OK 1
- #define ERR 0
- #define ABORT -1
- #define NOTHING 0
- #define PUBLIC
- #define LOCAL static
- #define CME_USER_BREAK 2
- #define CM_FORMAT_ERR 3
- #define CM_LEN_TRACK1 110
- #define CM_LEN_TRACK2 40
- #define CM_LEN_TRACK3 110
- #define CM_LEN_BUFF (CM_LEN_TRACK1+CM_LEN_TRACK2+CM_LEN_TRACK3+50)
- #define PORT_COM1 0x03F8 /* COM 1 */
- #define PORT_COM2 0x02F8 // COM 2
- #define PORT_DATA 0 /* DATA */
- #define PORT_IER 1 /* Interrupt enable register */
- #define PORT_IIR 2 /* Interrupt info. register */
- #define PORT_LCR 3 /* Line control register */
- #define PORT_MCR 4 /* Modem control register */
- #define PORT_LSR 5 /* Line status register */
- #define PORT_MSR 6 /* Modem status register */
- typedef struct
- {
- char track1[CM_LEN_TRACK1];
- char track2[CM_LEN_TRACK2];
- char track3[CM_LEN_TRACK3];
- } TCMtrackdata;
- //typedef char BYTE;
- //typedef unsigned int WORD;
- typedef int PR50_BOOLEAN;
- struct CHIN_font
- {
- char upper_half[16];
- char lower_half[16];
- };
- #pragma warning(disable:4786)
- #include <string>
- #include <map>
- #include <fstream>
- using namespace std;
- typedef struct SIGN_CARD_DATA //hz, 97.01.30
- {
- char pan[18]; // left
- //char merchant[8];
- //char cardType; // 1.sign card 2.save card 3...
- //char moneyCode[2]; // 10
- //char amount[5];
- char exprDate[4];
- char cvc1[3];
- //char cvc2[15];
- //char reserved[10];
- char stringEnd;
- } sign_card_data;
- typedef struct SIGN_CARD_TRACK2 //hz, 97.01.30
- {
- //char stx; // ;
- char pan[18];
- char fs; // =
- char exprDate[4];
- char cardType[3]; // 530
- char cvc[11];
- //char etx; // ?
- char stringEnd;
- } sign_card_track2;
- typedef struct SIGN_CARD_TRACK3 //hz, 97.01.30
- {
- //char stx; // !
- char formate[2]; // 01
- char pan[18];
- char fs1; // =
- char country[3]; // 156
- char moneyCode[3]; // 156
- char point; // 0
- char auth[4]; // 5000
- char remSum[4]; // 5000
- char rsDate[4]; // 0000
- char rLength[2]; // 01
- char retry; // 3
- char pinOffset[6]; // 000000
- char cardType[3]; // 530
- char TA_SR1[2]; // 00
- char TA_SR2[2]; // 00
- char exprDate[4];
- char fix[10]; // 1000000000
- char san1[12]; // 000000000000
- char fs2; // =
- char san2[12]; // 000000000000
- char fs3; // =
- char tFlag; // 0
- char cvc[6];
- char sFlag; // 0
- //char etx; // ?
- char stringEnd;
- } sign_card_track3;
- typedef struct CREDIT_CARD_TRACK2
- {
- //char start;
- char masterAccount[16];
- char separator1; // = '\'';
- char expirationDate[4];
- char serviceCode[3];
- char discretionaryData[11];
- //char end;
- char stringEnd;
- } credit_card_track2;
- typedef struct NEW_CREDIT_TRACK2
- {
- //char start;
- char masterAccount[16];
- char separator1; // = '\'';
- char otherData[15];
- //char end;
- char stringEnd;
- } new_credit_track2;
- typedef struct SZ_TRACK2
- {
- //char start;
- char masterAccount[15];
- char separator1; // = '\'';
- char constant[10]; //= "1560000514"
- char cardType;
- char area[8];
- //char end;
- char stringEnd;
- } sz_track_2;
- typedef struct TRACK2
- {
- //char start;
- char masterAccount[15+3];
- char separator1; // = '\'';
- char constant[10]; //= "1560000514"
- char cardType;
- char area[7];
- //char end;
- char stringEnd;
- } track_2;
- typedef struct TRACK3
- {
- char formatCode[2]; // = { '0', '1'};
- char masterAccount[15+3];
- char separator1; // = '\'';
- char constant1_0[22];
- char controlPara[6];
- char constant1_1[12];
- char separator2;
- char slave1[11];
- char separator3;
- char slave2[9];
- char separator4;
- char constant2[7];
- char cardType;
- char area[8];
- char stringEnd;
- } track_3;
- typedef struct SZ_TRACK3
- {
- char formatCode[2]; // = { '0', '1'};
- char masterAccount[15]; //hz, 96.05.28
- char separator1; // = '\'';
- char constant1_0[22];
- char controlPara[6];
- char constant1_1[12];
- char separator2;
- char slave1[11];
- char separator3;
- char slave2[9];
- char separator4;
- char constant2[7];
- char cardType;
- char area[8];
- char stringEnd;
- } sz_track_3;
- typedef struct INTERNET_TRACK2
- {
- //char start;
- char PAN[16];
- char separator1[1]; // = '\'';
- char expirationDate[4]; //
- char serviceCode[3];
- char CVV[3];
- //char end;
- char stringEnd;
- } internet_track_2;
- typedef struct INTERNET_TRACK3
- {
- char formatCode[2]; // = { '0', '1'};
- char PAN[16];
- char separator1[1]; // = '\'';
- char countryCode[3];
- char currency[3];
- char currencyExponent[1];
- char amountAuthorized[4];
- char amountRemaining[4];
- char cycleBegin[4];
- char cycleLength[2];
- char retryCount[1];
- char PINPARM[6];
- char interchangeControl[1];
- char serviceRestriction[2];
- char SRofSAN1[2];
- char SRofSAN2[2];
- char expiryDate[4];
- char sequenceNo[1];
- char securityNo[1];
- char SAN1[12];
- char separator2[1];
- char SAN2[12];
- char separator3[1];
- char relayMarker[1];
- char CCD[6];
- char transactionDate[1];
- char AVV[1];
- char INNIC[3];
- char CVV[3];
- char stringEnd;
- } internet_track_3;
- /*
- typedef struct NEW_TRACK0
- {
- char masterAccount[16];
- char cardSerial;
- char SVCD[6];
- char oldRGCD[4];
- char oldCUNO[8];
- char oldPSBK[8];
- char stringEnd;
- } new_track_0;
- */
- typedef struct NEW_TRACK0
- {
- char masterAccount[16];
- char cardSerial;
- char SVCD[6];
- char oldRGCD[4];
- char expireDate[4];
- char stringEnd;
- } new_track_0;
- typedef struct IC_TRACK0
- {
- char masterAccount[19];
- char cardSerial;
- char SVCD[6];
- char oldRGCD[4];
- char expireDate[4];
- char stringEnd;
- } ic_track_0;
- typedef struct NEW_TRACK2 //9555银联卡
- {
- // char start; // ;
- char masterAccount[16];
- char separator1; // '
- char expireDate[4]; // * 9912->4912
- char serviceCode[3]; // 220->120
- char appendData[13]; // SVCD(6) +卡顺号(1) +CVC(3)+'000'
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } new_track_2;
- typedef struct NEW1_TRACK2 // 6字头银联卡
- {
- // char start; // ;
- char masterAccount[16]; //*
- char separator1; // '
- char expireDate[4]; // * 9912->4912
- char serviceCode[3]; // 101->120
- char localCheckMessage[5]; // 12345 PVKI(1) + PVV(4)
- char appendData[8]; //* 随机数(2)+ CVV(3) + 随机数(3)
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } new1_track_2;
- typedef struct IC_TRACK2 // 6字头IC卡, zhanglei, 2010.09.19
- {
- // char start; // ;
- char masterAccount[19]; //* 帐号长度与NEW1_TRACK2不同,localCheckMessage和appendData调整
- char separator1; // '
- char expireDate[4]; // * 9912->4912
- char serviceCode[3]; // 101->120
- char localCheckMessage[3]; // 12345 PVKI(1) + PVV(4)
- char appendData[7]; //* 随机数(2)+ CVV(3) + 随机数(3)
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } ic_track_2;
- typedef struct HK_TRACK0 //Lint 香港两地通 2003-1-6 16:16
- {
- char masterAccount[16];
- char cardSerial;
- char SVCD[6];
- char oldRGCD[4];
- char expireDate[4];
- char language;
- char PIN; //* PIN校验位
- char PINOffset[5]; //* PIN偏移量
- char stringEnd;
- } hk_track_0;
- typedef struct HK_TRACK2 //Lint 香港一卡通 2002-11-25 16:53
- {
- // char start; // ;
- char masterAccount[16]; //*
- char separator1; // '
- char expireDate[4]; // *
- char serviceCode[3]; // 101
- char localCheckMessage[5]; // 12345 PVKI(1) + PVV(4)
- char appendData[8]; //* 随机数(2)+ CVV(3) + 随机数(3)
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } hk_track_2;
- //extern const char defHKTrack2[]; //香港一卡通 2002-11-25 17:03
- //extern const char defNewTrack2[];
- typedef struct NEW_TRACK3
- {
- // char start; // ;
- char formatCode[2]; // 99
- char masterAccount[16];
- char separator1; // '
- char countryCode[3]; // 156
- char currencyCode[3]; // 156
- char moneyExp; // 0
- char periodAccredit[4]; // 5000
- char periodBalance[4]; // 5000
- char periodStartDate[4]; // 0000->0001
- char periodLength[2]; // 01
- char passwordRetry; // 5
- char SVCD[6];
- char exchangeCode; // 2
- char PANTASR[2]; // 14
- char SAN1TASR[2]; // 00
- char SAN2TASR[2]; // 00
- char expireDate[4]; // * 9912->4912
- char cardSerial;
- char separator2; // '
- char SAN1[10]; // (新)内部客户号:分行(3)+客户号(6)+校验(1)
- char separator3; // '
- char SAN2[9]; // * 卡凭证号(8)+校验(1)
- char separator4; // '
- char transferFlag; // 0
- char checkNum[6]; // 加密校验数
- char appendData[16]; // * (旧)分行号(4)+客户号(8)+校验(1)+'000'
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } new_track_3;
- typedef struct IC_TRACK3 // 6字头IC卡, zhanglei, 2010.09.19
- {
- // char start; // ;
- char formatCode[2]; // 99
- char masterAccount[19]; //* 帐号长度与NEW1_TRACK3不同
- char separator1; // '
- char countryCode[3]; // 156
- char currencyCode[3]; // 156
- char moneyExp; // 0
- char periodAccredit[4]; // 5000
- char periodBalance[4]; // 5000
- char periodStartDate[4]; // 0000->0001
- char periodLength[2]; // 01
- char passwordRetry; // 5
- char SVCD[6];
- char exchangeCode; // 2
- char PANTASR[2]; // 14
- char SAN1TASR[2]; // 00
- char SAN2TASR[2]; // 00
- char expireDate[4]; // * 9912->4912
- char cardSerial;
- char separator2; // '
- char SAN1[10]; // (新)内部客户号:分行(3)+客户号(6)+校验(1)
- char separator3; // '
- char SAN2[9]; // * 卡凭证号(8)+校验(1)
- char separator4; // '
- char transferFlag; // 0
- char checkNum[6]; // 加密校验数
- char appendData[13]; // * (旧)分行号(4)+客户号(8)+校验(1)+'000'
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } ic_track_3;
- typedef struct HK_TRACK3 // 香港一卡通3磁道格式包
- {
- // char start; // ;
- char formatCode[2]; // 92
- char cardType[2]; // 40 卡类别
- char bankSign[4]; // 2658 发卡行标识
- char masterAccount[12]; //* 右10位主账号+00
- char separator1; // '
- char separator2; // '
- char currencyCode[3]; // 000 货币代码
- char currencyIndex; // 0 货币指数
- //char countryCode[3]; // 156
- char VISAGrantDegree[2]; // 00 VISA账户周期授权额度
- char grantDegree[2]; // 00 本行账户周期授权额度
- char transferrableBalance[4]; //0000 VISA当前周期内可提款或转账的余额
- char secondBankSign[4]; //0000 第二发卡行标示
- //char moneyExp; // 0
- //char periodAccredit[4]; // 5000
- //char periodBalance[4]; // 5000
- //char periodStartDate[4]; // 0000
- char periodLength[2]; // 00 周期长度,ATM忽略
- char passwordRetry; // 4 密码重试次数
- char PIN; //* PIN校验位
- char PINOffset[5]; //* PIN偏移量
- // char checkNum[6]; // 校验和
- char exchangeCode; // 0 交换控制符
- char masterAccountType; //1 主账户类型 1 - 储蓄帐户2 - 支票账户3 - 信用卡或联名卡账户4 - 员工账户5 - 无存折储蓄帐户6 - 保留
- char masterAccountLimit; //0 主账户限制码 0 - 无限制1 - 禁止扣帐(允许存款、转入)2 - 禁止存入(允许提款、转出)
- char firstSubsidiaryAccountType; // 0 第一辅助账户类型 0 - 不存在编码;其他同masterAccountType
- char firstSubsidiaryAccountLimit; // 0 第一辅助账户限制码
- char secondSubsidiaryAccountMessage[2]; //00 第二辅助账户及限制码
- char expireDate[4]; //* 失效日期
- char cardSerial[2]; //* 卡顺序号
- //char firstSubsidiaryAccount[12]; //000000000000 第一辅助账号
- //char secondSubsidiaryAccount[12]; //000000000000 第二辅助账号
- char appendData[24]; //* 附加数据 "YYYYMMDD"(申请日期)+随机数(7)+CVV(3)+随机数(6)
- char lastTranDate[4]; // 0000 上次交易日期
- char lastTranTime[4]; // 0000 上次交易时间
- char lastVISADate[4]; // 0000 上次VISA交易日期
- char lastVISATime[4]; // 0000 上次VISA交易时间
- char currentTransferrableBalance[3]; // 000 本行账户当前周期内可提款或转账的余额
- char language; //* 语言代码 1-中文 2-英文
-
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } hk_track_3;
- typedef struct INTER_TRACK0 //Lint 国际借记卡 2003-1-6 16:16
- {
- char masterAccount[16];
- char cardSerial;
- char SVCD[6];
- char oldRGCD[4];
- char expireDate[4];
- char stringEnd;
- } inter_track_0;
- typedef struct INTER_TRACK2 //Lint 国际借记卡2磁道 2004-2-13 15:22
- {
- // char start; // ;
- char masterAccount[16]; //*
- char separator1; // '
- char expireDate[4]; // *
- char serviceCode[3]; // 101
- char localCheckMessage[5]; // 12345 PVKI(1) + PVV(4)
- char appendData[8]; //* 随机数(2)+ CVV(3) + 随机数(3)
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } inter_track_2;
- typedef struct INTER_TRACK3 // 国际借记卡3磁道格式包
- {
- // char start; // ;
- char formatCode[2]; // 99
- char cardType[2]; // 41 卡类别
- char bankSign[4]; // 0062 发卡行标识
- char masterAccount[10]; //* 右10位主账号
- char separator1; // '
- char nationCode[3]; // 156 国家代码
- char currencyCode[3]; // 156 货币代码
- char currencyIndex; // 0 货币指数
- char periodAccredit[4]; // 5000 周期授予量
- char periodBalance[4]; //5000 当前周期内可提款或转账的余额
- char periodStartDate[4]; //0000 周期开始日期
- char periodLength[2]; // 01 周期长度,ATM忽略
- char passwordRetry; // 5 密码重试次数
- //char PIN; //* PIN校验位
- //char PINOffset[5]; //* PIN偏移量
- char grantControlCode[6]; //CVV(3)+随机数(3)
- char exchangeCode; // 2 交换控制符
- char masterAccountType; //1 主账户类型 1 - 储蓄帐户2 - 支票账户3 - 信用卡或联名卡账户4 - 员工账户5 - 无存折储蓄帐户6 - 保留
- char masterAccountLimit; //4 主账户限制码 0 - 无限制1 - 禁止扣帐(允许存款、转入)2 - 禁止存入(允许提款、转出)
- char firstSubsidiaryAccountType[2]; // 00 第一辅助账户类型 0 - 不存在编码;其他同masterAccountType
- char firstSubsidiaryAccountLimit[2]; // 00 第一辅助账户限制码
- char expireDate[4]; //* 失效日期
- char cardSerial; //* 卡顺序号
- char encryptCode; //' 卡保密号 缺省为分隔符
- char firstSubsidiaryAccount[10]; //000000000000 第一辅助账号 分行(3)+客户号(6)+校验(1)
- char separator2; // '
- char secondSubsidiaryAccount[9]; //000000000000 第二辅助账号 卡凭证号(8)+校验(1)
- char separator3; // '
- char passingCode; // 0
- char checkNum[6]; // 校验和
- char appendData[16]; //* 附加数据 分行号(4)+客户号(8)+校验(1)+"000"
-
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } inter_track_3;
- typedef struct NWPK_TRACK0 // 新系统存折
- {
- char masterAccount[15];
- char PSBNBR[10];
- char SVCD[6];
- char stringEnd;
- } nwpk_track_0;
- typedef struct NWPK_TRACK2 // 新系统存折
- {
- // char start; // ;
- char masterAccount[15]; // *
- char separator1; // '
- char PSBNBR[10]; // *
- char SVCD[6]; // *
- char AccountChk; // *
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } nwpk_track_2;
- typedef struct NWPK_TRACK3 // 新系统存折
- {
- // char start; // ;
- char formatCode[2]; // 60
- char masterAccount[15]; // *
- char separator1; // '
- char countryCode[3]; // 156
- char currencyCode[3]; // 156
- char passwordRetry; // 5
- char AccountChk; // *
- char LENSTR[10]; // 0015100699
- char separator2; // '
- char PSBNBR[10]; // *
- char PSBCHK; // *
- char separator3; // '
- char SVCD[6]; // *
- char CVCCHK; // *
- char separator4; // '
- char checkNum[6]; // 000000
- char appendData[16]; // 8130379181303791
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } nwpk_track_3;
- typedef struct NWUS_TRACK0 // 新系统用户卡
- {
- char USRNBR[6];
- char cardSerial;
- char SVCD[6];
- char stringEnd;
- } nwus_track_0;
- typedef struct NWUS_TRACK2 // 新系统用户卡
- {
- // char start; // ;
- char USRNBR[6]; // *
- char separator1; // '
- char cardSerial; // *
- char SVCD[6]; // *
- char USRCHK; // *
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } nwus_track_2;
- typedef struct NWUS_TRACK3 // 新系统用户卡
- {
- // char start; // ;
- char formatCode[2]; // 70
- char USRNBR[6]; // *
- char separator1; // '
- char passwordRetry; // 5
- char USRCHK; // *
- char LENSTR[10]; // 0006010699
- char cardSerial; // *
- char separator2; // '
- char SVCD[6]; // *
- char CVCCHK; // *
- char separator3; // '
- char checkNum[6]; // 000000
- char appendData[16]; // 8130379181303791
- // char endFlag; // ?
- // char LRC;
- char stringEnd;
- } nwus_track_3;
- typedef struct AE_TRACK2_DATA // 运通借记卡oilyang 2021.9.23
- {
- char account[15]; //*Primary Account Number
- char separator1; // Field Separator
- char expireDate[4]; // Card Expiration Date
- char serviceCode[3]; // Service Code
- char effectiveDate[4]; // Card Effective Date
- char cardSeCode[5]; // Card Security Code
- char reserved[3]; // Card Serial(1) + (2)
- char langCode[2];
- char stringEnd;
- } ae_track2_data;
- typedef struct AE_T2_DATA
- {
- char masterAccount[15];
- char cardSerial;
- char cardSeCode[5];
- char expireDate[4];
- char stringEnd;
- } ae_t2_data;
- #define TRACK_DATA_LEN 300
- class CARD
- {
- private:
- map<string,string> m_BinSvcCod;
- void LoadFromFile();
- string GetSvcCod(string key);
- public:
- CARD(){LoadFromFile();};
- ~CARD(){};
- char* SIGNCARD_ISOcode( SIGN_CARD_DATA *data); //hz, 97.01.30
- char* SIGNCARD_ISOdecode( char *trackData); //hz, 97.01.30
- char plus(char ch1, char ch2);
- char minus(char ch1, char ch2);
- char *plusString( char *str1, char *str2, int len);
- char *minusString( char *str1, char *str2, int len);
- char *codeUserCard( char *data);
- char *decodeUserCard( char *data, char *SVCD);
- char *codeUserCardTrack( char *data);
- char *decodeUserCardTrack( char *data, char *SVCD);
- char trackData[TRACK_DATA_LEN];
- char getCheckNum(char *string, int len=0);
-
- BOOL ISOcode( char *data);
- char* ISOdecode2( char *data);
- char* ISOdecode3( char *data);
- BOOL ISOdecode( char *data);
- char* CREDIT_ISOdecode( char *data);
- void INTERNET_ISOcode( char *PAN, char *CVV);
- char* INTERNET_ISOdecode( char* PAN, char* CVV);
- BOOL Track23( char *strTrack2, char *strTrack3, BOOL bWrite, char* MARGType="23" );
- int ISONewCardType(char * CardBin);
- BOOL ISONewcode( char *data);
- BOOL ISONewcode0( char *data); //原来9字头卡
- BOOL ISONewcode1( char *data); //八转十六BZSL专用 6字头卡
- BOOL ISONewdecode( char *data,char* MARGType="23");
- BOOL ISOHKcode( char *data); //Lint 香港一卡通专用
- BOOL ISOHKdecode( char *data,char* MARGType="23");
- BOOL ISOHKcode_help( char *data, BOOL isIC); //Lint 香港一卡通专用
- BOOL ISOHKdecode_help( char *data,char* MARGType, BOOL* isIC);
- char* trimstr(char* strSrc);
- BOOL ISOINTERcode( char *data); //Lint 国际借记卡
- BOOL ISOINTERcodetrack1( char *data, char *name, char *parmTrack1);
- BOOL ISOINTERdecode( char *data,char* MARGType = "23");
- //Cai
- BOOL ISONWPKcode( char *data);
- BOOL ISONWPKdecode( char *data,char* MARGType="23");
- BOOL ISONWUScode( char *data);
- BOOL ISONWUSdecode( char *data,char* MARGType="23");
- BOOL CMBcode( char * type, char * data, char* MagData);
- BOOL CMBdecode( char* MagData, char * type, char * data);
- BOOL CMBcodeEx( char * type, char * data, char* MagData);
- BOOL CMBdecodeEx( char* MagData, char * type, char * data);
- BOOL CMBdecodeMag2( char* Mag2Data, char * data);
- //zhanglei, IC磁条卡, 20100919
- BOOL ICcode( char *data);
- BOOL ICdecode( char *data,char* MARGType="23");
- BOOL Othdecode( char* MagData, char * type, char * data);
- };
- #if (!defined(_WIN32) && !defined(_WIN64))
- #include <stdint.h>
- #else
- #include <wtypes.h>
- #endif //NOT _WIN32
- #if (defined(_WIN32) || defined(_WIN64))
- # ifdef CMB_CARD_TRACK_EXPORTS
- # define CMB_CARD_TRACK_API __declspec(dllexport)
- # else
- # define CMB_CARD_TRACK_API __declspec(dllimport)
- # endif
- #elif ( defined(__GNUC__) && __GNUC__ >= 4 )
- # define CMB_CARD_TRACK_API __attribute__((visibility("default")))
- #else
- # define CMB_CARD_TRACK_API
- #endif
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- CMB_CARD_TRACK_API bool CMBdecodeMag2(char* Mag2Data, char * data);
- CMB_CARD_TRACK_API bool CMBdecodeEx(char* MagData, char * type, char * data);
- #ifdef __cplusplus
- }
- #endif
- class TPR50
- {
- public:
- static int BPType;
- };
- #endif
|