⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stock_0212.ec

📁 证券交易系统
💻 EC
字号:
 /* * 证券交易系统,城综网帐户信息校验 打包解包模块() * 帐户种类: 储蓄卡 */#include <stdio.h>#include "../incl/lu62.h"#include "../incl/bank.h"$include sqlca;extern   SEND_NET_0212   send_net_0212;extern   RECV_NET_0212   recv_net_0212;#define  ASCII           "IBM-eucCN"      /* ASCII code page               **/#define  EBCDIC          "IBM-935"        /* EBCDIC (Host) code page       **/#define  A2E             1                /* translate ASCII to EBCDIC     **/#define  E2A             2                /* translate EBCDIC to ASCII     **/#define  HEADLEN         7extern   WORKER   *wk;#define  MAX_BUFFERSIZE   1024extern  int get_host_trace( char * );tohost_stock_0212(){        int            i,sendlen,recvlen,net_err;        unsigned char  sendstr[512],recvstr[512];        i = inq_acc_0212( sendstr, &sendlen );        if ( i < 0 ) {            WriteLog ( LOGFILE,"inq_acc_0212 err!");            return ( -1 );        }        return ( 0 );}int inq_acc_0212 ( sendstr,sendlen )int           *sendlen;unsigned char *sendstr; {        int             recvlen,net_err,retcode,loop,length, i;        char            sideinfo[9] = "SAVCICSB",str[100]  ;        unsigned char   recvstr[512];        if ( pack_host_inq_0212(sendstr, &sendlen ) )        {             WriteLog ( LOGFILE,"pack_host_inq_0212 err!");             return ( -1 );        }        retcode = LUFunction(LU_ALLOC, sideinfo, NULL, NULL);        WriteLog ( LOGFILE,"检查LU连路结束!");        if (retcode != 0)            {           strcpy ( send_net_0212.retcode, "8999" );           strcpy ( send_net_0212.errmsg,"系统错误");           WriteLog ( LOGFILE,"LU_ALLOC err:[%d]",retcode);           return(-1);        }        retcode = LUFunction(LU_SEND, &sendlen, sendstr);        WriteLog ( LOGFILE,"向9000发送数据结束!");             if (retcode != 0)        {            LUFunction(LU_FREE);            strcpy ( send_net_0212.retcode, "8999" );            strcpy ( send_net_0212.errmsg,"系统错误");            WriteLog ( LOGFILE,"LU_SEND err:[%d]",retcode);            return(-1);        }        length = MAX_BUFFERSIZE;        retcode = LUFunction(LU_RECEIVE, &length, recvstr);        WriteLog ( LOGFILE,"接收9000返回数据结束!");                           if (retcode != 0)         {            LUFunction(LU_FREE);            strcpy ( send_net_0212.retcode, "8999" );            strcpy ( send_net_0212.errmsg,"系统错误");            WriteLog ( LOGFILE,"LU_RECEIVE err:[%d]",retcode);            return(-1);        }       sendlen = 1;       strcpy(sendstr,"1");        retcode = LUFunction(LU_SENDTRUE, &sendlen, sendstr);       WriteLog ( LOGFILE,"向9000发送确认数据结束!");            if (retcode != 0)       {           LUFunction(LU_FREE);           strcpy ( send_net_0212.retcode, "8999" );           strcpy ( send_net_0212.errmsg,"系统错误");           WriteLog ( LOGFILE,"LU_SENDTRUE err:[%d]",retcode);           return(-1);       }        LUFunction(LU_FREE);        unpk_host_inq_0212(recvstr,length);        return(0);}int pack_host_inq_0212(sendbuf, sendlen)int           *sendlen;unsigned char *sendbuf;{        int         len, i;        char        tmp[256];        char        merchant_id[10],host_ls[7];        char        worker_4[5], active[2];        char        amount[13];        char        tmp_pan2[4];        struct      head hd;        strcpy(hd.jym, "2210");        strcpy(hd.gzh,wk->worker_4);        strcpy(hd.sqjb, "000000");        strcpy(hd.bz, "0");        strcpy( hd.sqyh, hd.gzh );        if( get_host_trace(host_ls) < 0 )        {        	WriteLog(LOGFILE, "get_host_trace err!");        	return (-1);        }        hd.lsh = atoi ( host_ls );        memcpy( sendbuf, headstr( hd ), 27 );         memcpy( tmp,&recv_net_0212.account[3],13);              /*  16位卡  */        tmp[13] = '\0';        len = Hmeg( sendbuf, 27, tmp, L_KH1 );                   /* 卡号1 */        memset(tmp,0,sizeof(tmp));        memcpy(tmp,&recv_net_0212.account[16],3 );         /*  19位卡  */        tmp[3]        = '\0';        len = Hmeg(sendbuf,len,tmp,L_KH2);                 /*  密码   */        len = Hmeg( sendbuf, len, recv_net_0212.password, 0x51 );         len = Hmeg( sendbuf, len, "000000", 0x51 );              /*  OFFSET */        len = Hmeg( sendbuf, len, "2", 0x51 );                                       /* 0 - check pin offset,1 - not check */        sendbuf[ len++ ] = 0xff;                                 /*  结束标志 */        *sendlen = len;        return (0);}int   unpk_host_inq_0212(recvbuf, recvlen )short                 recvlen;unsigned char        *recvbuf;{        int     flag,i, j, result, retcode;        char    err1[10], err2[10];        char    xm[10],sfz[20],dz[16],ztbz[4];        result = 1;        /* packet format error */        if (    recvbuf[ 0 ] != 0x03 ||                recvbuf[ 1 ] != 0x00 ||                recvbuf[ 2 ] <  0x00 ||                recvbuf[ 2 ] >  0x09 &&                 recvbuf[ 2 ] != 0x0f )         {                strcpy ( send_net_0212.retcode, "8999" );                strcpy ( send_net_0212.errmsg,"系统错误");                return( -1 );        }        /* Accept by host */        if ( recvbuf[ 2 ] == 0x09 ) {                                      result = 0;             recvlen=Hemg2(recvbuf,7,xm,0x42);             recvlen=Hemg1(recvbuf,recvlen,sfz,0x43);             recvlen=Hemg2(recvbuf,recvlen,dz,0x44);                              recvlen=Hemg1(recvbuf,recvlen,ztbz,0x45);             for (i=0;ztbz[i]!='\0';i++)                   ztbz[i]= 0x30 + ( 0x0f & ztbz[i] );             if ( !memcmp (ztbz,"000",3 ) )             {                strcpy ( send_net_0212.retcode, "0000" );                strcpy ( send_net_0212.errmsg,"交易成功");             }             else              {                strcpy ( send_net_0212.retcode, "8009" );                strcpy ( send_net_0212.errmsg,"帐户状态错");             }        }        /* Reject by host */        else {                result = -1;                for( i = 7, j = 0; i < 11; i++, j++ ) err1[ j ] = recvbuf[ i ];                asc( err1, 4, err2 );                result = atoi( err2 );                if(  result >= 41  &&  result <= 47 ) result = 34;                switch( result ) {                        case 18:                         case 84:                         case 25:                                  retcode = 14;                                 strcpy ( send_net_0212.retcode, "8007" );                                 strcpy ( send_net_0212.errmsg,"无此卡帐户");                                 break;                         case 53:                                  retcode = 57;                                 strcpy ( send_net_0212.retcode, "8999" );                                 strcpy ( send_net_0212.errmsg,"卡帐户");                                 break;                         case 37 :                        case 70:                        case 112:                                  retcode = 58;                                 strcpy ( send_net_0212.retcode, "8999" );                                 strcpy ( send_net_0212.errmsg,"卡帐户");                                 break;                         case 31:                                  retcode = 15;                                 strcpy ( send_net_0212.retcode, "8999" );                                 strcpy ( send_net_0212.errmsg,"卡帐户");                                 break;                         case 59:                        case 60:                        case 39:                                  retcode = 41;                                 strcpy ( send_net_0212.retcode, "8009" );                                 strcpy ( send_net_0212.errmsg,"卡在黑名单中");                                 break;                         case 50:                                  retcode = 34;                                 strcpy ( send_net_0212.retcode, "8009" );                                 strcpy ( send_net_0212.errmsg,"卡状态错");                                 break;                         case 54:                                  retcode = 14;                                 strcpy ( send_net_0212.retcode, "8007" );                                 strcpy ( send_net_0212.errmsg,"无此卡号");                                 break;                         case 51:                                  retcode = 14;                                 strcpy ( send_net_0212.retcode, "8007" );                                 strcpy ( send_net_0212.errmsg,"无此卡号");                                 break;                        case 49:                                  retcode = 62;                                 strcpy ( send_net_0212.retcode, "8012" );                                 strcpy ( send_net_0212.errmsg,"交易超限额");                                 break;                        case 62:                                 retcode = 13;                                 strcpy ( send_net_0212.retcode, "8012" );                                 strcpy ( send_net_0212.errmsg,"交易超限额");                                 break;                        case 63:                                retcode = 12;                                strcpy ( send_net_0212.retcode, "8001" );                                strcpy ( send_net_0212.errmsg,"无效交易");                                break;                        case 64:                                retcode = 41;                                strcpy ( send_net_0212.retcode, "8009" );                                strcpy ( send_net_0212.errmsg,"卡在黑名单中");                                break;                        case 65:                                retcode = 34;                                strcpy ( send_net_0212.retcode, "8007" );                                strcpy ( send_net_0212.errmsg,"非本行卡");                                break;                        case 66:                                retcode = 14;                                strcpy ( send_net_0212.retcode, "8007" );                                strcpy ( send_net_0212.errmsg,"无此卡号");                                break;                        case 75:                        case 130:                        case 55:                                 retcode = 51;                                strcpy ( send_net_0212.retcode, "8012" );                                strcpy (send_net_0212.errmsg,"取现超信用额度");                                break;                         case 104:                        case 87:                                retcode = 40;                                strcpy ( send_net_0212.retcode, "8001" );                                strcpy ( send_net_0212.errmsg,"主机无此交易");                                break;                         case 24:                                 retcode = 12;                                strcpy ( send_net_0212.retcode, "8001" );                                strcpy ( send_net_0212.errmsg,"无效交易");                                break;                        case 68:                                retcode = 55;                                strcpy ( send_net_0212.retcode, "8011" );                                strcpy ( send_net_0212.errmsg,"密码不符");                                break;                        case 89:                        case 115:                                retcode = 4;                                strcpy ( send_net_0212.retcode, "8007" );                                strcpy ( send_net_0212.errmsg,"主机无此商户");                                break;                        default:                                         retcode = 12;                                strcpy ( send_net_0212.retcode, "8001" );                                strcpy ( send_net_0212.errmsg,"无效交易");                                break;                }        }         return( 0 );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -