📄 cms551.sqc
字号:
/******************************************************************** ** 源码文件名称 : cms551.SQC ** 所属子系统 : CMS ** 当前文件版本 : 1.0.0.0 ** 作者 : UCCB ALEX ** 版本创建日期 : 2004/10/13 ** 功能描述 : 卡写磁子交易 ** 修改记录 : ** 修改人 修改日期 修改位置 ** Feng 2006-01-09 134行*********************************************************************/#include "code.h"#include "attrdef.h"#include "sysdef.h"#include "pubcom.h"#include "errlog.h"#include "cmscode.h"#include "cmscardinfo.h"#include "cmscardkind.h"#include "cmswritem.h"#include "cmscardinitparam.h"#include "cmsacctm.h"EXEC SQL INCLUDE SQLCA;int cmsCardWriteTrackPro( PUBCOM *pstPubcom ){ /*定义局部变量*/ char acTrack1[TRACK1_LEN+1] ; char acTrack2[TRACK2_LEN+1] ; char acTrack3[TRACK3_LEN+1] ; char acCardCover[200+1] ; char acPassWd[PASSWD_LEN+1] ; /*密码*/ char acHappen[PASSWD_LEN+1] ; /*业务发生地*/ char acCheckFlag[BIT21_LEN][BIT11_LEN]; /*卡状态检查标志*/ int iNumx,iNumy; struct cmscardinfo stCardInfo; struct cmscardkind stCardKind; struct cmswritem stWriteM; struct cmscardinitparam stCardInitParam; struct cmsacctm stAcctM; strcpy( g_acTrcMsg, "子交易: 卡写磁子交易开始..." ); TRCLOG4 memset( &stCardInfo, 0x00, sizeof ( struct cmscardinfo ) ); memset( &stCardKind, 0x00, sizeof ( struct cmscardkind ) ); memset( &stWriteM, 0x00, sizeof ( struct cmswritem ) ); memset( &stCardInitParam, 0x00, sizeof (struct cmscardinitparam) ); memset( &stAcctM, 0x00, sizeof ( struct cmsacctm ) ); /* 取数据字典值 */ getstring( "CardNo", stCardInfo.cardno ); /*卡号 */ getstring( "PassWd", acPassWd ); /*卡密码*/ strcpy( acHappen , pstPubcom->acChannelId );/*业务发生地*/ /* 卡检查状态数组除首位外全置为不检查 */ for ( iNumx = 0; iNumx < BIT21_LEN; iNumx ++ ) for ( iNumy = 0; iNumy < BIT11_LEN; iNumy ++ ) { if ( iNumy == 0 ) acCheckFlag[iNumx][iNumy] = CHECK_YES; else acCheckFlag[iNumx][iNumy] = CHECK_NO; } /* 获取卡片信息表 */ if( pubReadCmscardinfo( &stCardInfo ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡号[%s]不存在", stCardInfo.cardno ); ERRLOG goto Exit; } /* 获取卡片种类表 */ strcpy( stCardKind.cardkind, stCardInfo.cardkind ); if( pubReadCmscardkind( &stCardKind ) ) { if ( SQLCODE == SQLNOTFOUND ) sprintf( g_acRspMsg, "卡片种类[%s]不存在", stCardInfo.cardkind ); ERRLOG goto Exit; } /*置卡状态检查标志*/ acCheckFlag[BIT1_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT2_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT3_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT4_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT5_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT6_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT7_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT8_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT9_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT11_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT13_LEN][BIT1_LEN]=CHECK_YES; acCheckFlag[BIT14_LEN][BIT1_LEN]=CHECK_YES; /*检查卡状态是否正常*/ if( cmsApiChkCardStatIsNormal( &stCardInfo, acCheckFlag ) ) { ERRLOG; goto Exit; } strcpy( g_acTrcMsg, "cardstat is end!" ); TRCLOG3 /*判断卡密码是否正确*/ if( cmsApiChkCardPwd( &stCardInfo,acPassWd,acHappen ) ) { ERRLOG goto Exit; } /* 获取卡片初始化参数表*/ strcpy( stCardInitParam.cardidkind , stCardKind.cardidkind ); if( pubReadCmscardinitparam( &stCardInitParam ) ) { ERRLOG goto Exit; } /*生成磁道信息*/ /* Modify in 2005-01-09 begin if( cmsApiGenCardTrackInfo( stCardInfo.cardno, &stCardInitParam, acTrack1, acTrack2, acTrack3 ) ) */ if( cmsApiGenMakeCardInfo( stCardInfo.cardno, "", "", "", stCardInfo.vouno, &stCardInitParam, acTrack1, acTrack2, acTrack3, acCardCover ) ) /* Modify in 2005-01-09 end */ { ERRLOG goto Exit; } /*为登记写磁登记簿赋值*/ strcpy( stWriteM.cardno , stCardInfo.cardno ); strcpy( stWriteM.writedate , pstPubcom->acTranDate ); stWriteM.serseqno=pstPubcom->lSerSeqNo; sprintf( stWriteM.vouchno,"%s%08d",pstPubcom->acTranDate8,pstPubcom->lSerSeqNo ); getstring( "IdType" , stWriteM.idtype ); getstring( "IdNo" , stWriteM.idcode ); getstring( "CustName" , stWriteM.custname ); strcpy( stWriteM.issuebrc , stCardInfo.issuebrc ); strcpy( stWriteM.teller , stCardInfo.teller ); strcpy( stWriteM.cardkind , stCardInfo.cardkind ); strcpy( stWriteM.writeteller , pstPubcom->acTeller ); strcpy( stWriteM.writeauthteller, pstPubcom->acAteller ); strcpy( stWriteM.writebrc , pstPubcom->acBrc ); getstring( "Reason" , stWriteM.reason ); /*登记卡写磁登记簿*/ if( pubInstCmswritem( &stWriteM ) ) { ERRLOG goto Exit; } if( cmsApiInsTranLog( pstPubcom, &stCardInfo, &stAcctM, "写磁", "卡写磁" ) ) { ERRLOG goto Exit; } /* 子交易出口 */ strcpy( g_acTrcMsg, "Track2[%s]Track3[%s]" , acTrack2, acTrack3 ); TRCLOG3 setstring( "Track2", acTrack2 ); setstring( "Track3", acTrack3 ); strcpy( g_acTrcMsg, "子交易: 卡写磁结束.." ); TRCLOG4Exit: if( !strcmp( g_acRspCode, RSP_OK ) ) return SUCCESS; else return FAILED ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -