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

📄 package.cpp

📁 一个与银行通讯的测试程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:


int Cpackage::Function_Kkzz_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
	int kkzz_len,iLen=0;
	int offset=0;
	int RetValue=0;
    char tmpStr[4096],tmpstr[100],str[20];

	//message_head             Str_message_head;
	kkzz_ans_msg   Str_kkzz_ans_msg;
	
    kkzz_len = sizeof(kkzz_ans_msg);
	
    memset(&Str_kkzz_ans_msg,0x00,sizeof(Str_kkzz_ans_msg));
    memcpy(&Str_kkzz_ans_msg,cRecvbuf,sizeof(Str_kkzz_ans_msg));
	
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_kkzz_ans_msg.jgdm,3);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.jylx",Str_message_head.jylx);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.pprno",Str_message_head.pprno);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.pprclh",Str_message_head.pprclh);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.jgdm",Str_message_head.jgdm);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.rec_num",Str_message_head.rec_num);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.reserve",Str_message_head.reserve);
    
	if(memcmp(tmpStr,"000",3)==0)
	{
	/*
	char	jylx[2];  		/*	06 - 交易类型			
  	char	ppr_no[3];		/*	多媒体查询机号			
	char 	ppr_clh[3];		/*	机器处理号				
	char	jgdm[3]; 		/*	结果代码				
	char	zh1[10];  		/*	原卡帐号				
	char    zh2[10];		/*	转入卡帐号				  
	char    ye1[12];		/*	原卡余额,单位:分		
	char    ye2[12];		/*	转入卡余额,单位:分	
						/*  发生额,单位:分2001.9.20	
	char	zxclh[6];		/*	中心处理号				
 	char	by1[15];		/*	备用					
				
	*/
		memcpy(packstruct->m_Fhdm,"0000",4);
		packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
		packstruct->m_Flag[0]='0';//占用他表示是否有后续

		memset(packstruct->m_Data,0x00,sizeof(packstruct->m_Data));
 
		//原卡帐号到前端结构 10
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,Str_kkzz_ans_msg.zh1,sizeof(Str_kkzz_ans_msg.zh1));
		alltrimSpace(tmpstr);
		strcpy(packstruct->m_Data, tmpstr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;
		//原卡余额
		memset(tmpstr,0x00,sizeof(tmpstr));
		memset(tmpStr,0x00,sizeof(tmpStr));
		memcpy(tmpstr,Str_kkzz_ans_msg.ye1,sizeof(Str_kkzz_ans_msg.ye1));
		alltrimSpace(tmpstr);
		ChangAnsMoney(tmpstr);
	    sprintf(tmpStr,"%12.12s",tmpstr);
   	   	
		strcat(packstruct->m_Data, tmpStr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,Str_kkzz_ans_msg.zh2,sizeof(Str_kkzz_ans_msg.zh2));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		//转入卡余额
		memset(tmpstr,0x00,sizeof(tmpstr));
		memset(tmpStr,0x00,sizeof(tmpStr));
		memcpy(tmpstr,Str_kkzz_ans_msg.ye2,sizeof(Str_kkzz_ans_msg.ye2));
		alltrimSpace(tmpstr);
		ChangAnsMoney(tmpstr);
	    sprintf(tmpStr,"%12.12s",tmpstr);
   	   	strcat(packstruct->m_Data, tmpStr);//注意不要strcpy
	
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,Str_kkzz_ans_msg.zxclh,sizeof(Str_kkzz_ans_msg.zxclh));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;
		
	//填包数据区长
	memset(str,0x00,sizeof(str));
	memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	RetValue = strlen(packstruct->m_Data);
    sprintf(str, "%04d", RetValue);
	memcpy(packstruct->m_DataLen, str, 4);
    
	}
	else if(memcmp(tmpStr,"001",3)==0)//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"0001",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
		memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
		strcpy(packstruct->m_Data, "转帐失败");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

     return -1;
	}
	else//其它为通信故障。
	{
	memcpy(packstruct->m_Fhdm,"9001",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
	strcpy(packstruct->m_Data, "通信故障");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;
    return -1;
	}
    RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}
//卡内转帐
int Cpackage::Function_Knzz_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
    //int head_length;
	int zz_len,iLen=0;
	int Ans_PackRecNum=0;
	int Ans_PackBodyLen=0;
	int offset=0;
	int RetValue=0;
    char tmpStr[4096];

	zz_ans_msg1             Str_message_head;
//	zz_ans_msg_body1   Str_zz_ans_msg1;;

	offset = sizeof(zz_ans_msg1);
    zz_len = sizeof(zz_ans_msg_body1);
	
    memset((char *)&Str_message_head,0x00,sizeof(Str_message_head));
    memcpy((char *)&Str_message_head,cRecvbuf,sizeof(Str_message_head));
		
    WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐返回信息模块","Str_message_head.jylx",Str_message_head.jylx);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐返回信息模块","Str_message_head.pprno",Str_message_head.ppr_no);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐返回信息模块","Str_message_head.pprclh",Str_message_head.ppr_clh);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐返回信息模块","Str_message_head.jgdm",Str_message_head.jgdm);

	   
	//目前无法知道真样判断是何种返回,分解包
	/*********************************************************/
    //-------------deposit_msg_structcxxx
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.jgdm,3);

	if(memcmp(tmpStr,"000",3)==0)
	{
	
	//得到包中记录数
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.rec_num,sizeof(Str_message_head.rec_num));
    alltrimSpace(tmpStr);
	Ans_PackRecNum = atoi(tmpStr);
    
	//得到储蓄信息查询中记录信息总长度
    Ans_PackBodyLen = Ans_PackRecNum*zz_len;
	//判断包是否过长
	if(Ans_PackBodyLen > 4096)
	{
		memcpy(packstruct->m_Fhdm,"0001",4);
		packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
		packstruct->m_Flag[0]='0';//占用他表示是否有后续
		return -1;
	}
	memset(tmpStr,0x00,sizeof(tmpStr));
   	memcpy(tmpStr,cRecvbuf+offset,Ans_PackBodyLen);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%d]","信息查询返回信息模块","记录信息总长度",Ans_PackBodyLen);
	
	RetValue = ChangeKnzz(packstruct, tmpStr, Ans_PackRecNum);
	
	}
	else if(memcmp(tmpStr,"001",3)==0)//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"0001",4);
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
		memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
		strcpy(packstruct->m_Data, "转帐失败");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

     return -1;
	}
	else//其它为通信故障。
	{
	memcpy(packstruct->m_Fhdm,"9001",4);
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
	memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
		strcpy(packstruct->m_Data, "通信故障");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

    return -1;
	}

	RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}

//
int Cpackage::Function_KnzzNext_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
	int knzz_len,iLen=0;
	int offset=0;
	int RetValue=0;
    char tmpStr[4096];

//	message_head             Str_message_head;
	zz_ans_msg2   Str_zz_ans_msg2;
	
    knzz_len = sizeof(zz_ans_msg2);
	
    memset(&Str_zz_ans_msg2,0x00,sizeof(Str_zz_ans_msg2));
    memcpy(&Str_zz_ans_msg2,cRecvbuf,sizeof(Str_zz_ans_msg2));
	
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_zz_ans_msg2.jgdm,3);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.jylx",Str_message_head.jylx);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.pprno",Str_message_head.pprno);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.pprclh",Str_message_head.pprclh);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.jgdm",Str_message_head.jgdm);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.rec_num",Str_message_head.rec_num);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.reserve",Str_message_head.reserve);
    
	if(memcmp(tmpStr,"000",3)==0)
	{
		char tmpstr[100],str[20];
		memcpy(packstruct->m_Fhdm,"0000",4);
		packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
		packstruct->m_Flag[0]='0';//占用他表示是否有后续

		memset(packstruct->m_Data,0x00,sizeof(packstruct->m_Data));
 
		//dao期日 中心授权号到前端结构 8
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,Str_zz_ans_msg2.datea,sizeof(Str_zz_ans_msg2.datea));
		alltrimSpace(tmpstr);
		strcpy(packstruct->m_Data, tmpstr);
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		//到期标志
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,Str_zz_ans_msg2.Duemark,sizeof(Str_zz_ans_msg2.Duemark));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		//余额
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,Str_zz_ans_msg2.kyye,sizeof(Str_zz_ans_msg2.kyye));
		alltrimSpace(tmpstr);
		ChangAnsMoney(tmpstr);
	    sprintf(tmpStr,"%12.12s",tmpstr);
   	   	
		strcat(packstruct->m_Data, tmpStr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;
		
		//填包数据区长
		memset(str,0x00,sizeof(str));
		memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
		RetValue = strlen(packstruct->m_Data);
		sprintf(str, "%04d", RetValue);
		memcpy(packstruct->m_DataLen, str, 4);
		
	}
	else if(memcmp(tmpStr,"001",3)==0)//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"0001",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
		memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
		strcpy(packstruct->m_Data, "转帐失败");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;

     return -1;
	}
	else//其它为通信故障。
	{
	memcpy(packstruct->m_Fhdm,"9001",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
	memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
		strcpy(packstruct->m_Data, "通信故障");
		iLen = strlen(packstruct->m_Data);
		packstruct->m_Data[iLen] = 0x01;
    return -1;
	}
    RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}

int Cpackage::Function_Cxxxcx_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
	int cxxx_len,iLen=0;
	int Ans_PackRecNum=0;
	int Ans_PackBodyLen=0;
	int offset=0;
	int RetValue=0;
    char tmpStr[4096];

	message_head             Str_message_head;
    offset = sizeof(message_head);
	cxxx_len = sizeof(deposit_msg_structcxxx);
	
    memset(&Str_message_head,0x00,sizeof(Str_message_head));
    memcpy(&Str_message_head,cRecvbuf,sizeof(message_head));
	
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.jylx",Str_message_head.jylx);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.pprno",Str_message_head.pprno);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.pprclh",Str_message_head.pprclh);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.jgdm",Str_message_head.jgdm);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.rec_num",Str_message_head.rec_num);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询返回信息模块","Str_message_head.reserve",Str_message_head.reserve);
    
	//目前无法知道真样判断是何种返回,分解包
	/*********************************************************/
    //-------------deposit_msg_structcxxx
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.jgdm,3);

	strcpy(tmpStr,"000");

	if(memcmp(tmpStr,"000",3)==0)
	{
	
	//得到包中记录数
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.rec_num,3);
    alltrimSpace(tmpStr);
	Ans_PackRecNum = atoi(tmpStr);
    
	//得到储蓄信息查询中记录信息总长度
    Ans_PackBodyLen = Ans_PackRecNum*cxxx_len;
	//判断包是否过长
	if(Ans_PackBodyLen > 4096)
	{
		memcpy(packstruct->m_Fhdm,"0001",4);
		packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
		packstruct->m_Flag[0]='0';//占用他表示是否有后续
		return -1;
	}
	memset(tmpStr,0x00,sizeof(tmpStr));
   	memcpy(tmpStr,cRecvbuf+offset,Ans_PackBodyLen);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%d]","信息查询返回信息模块","记录信息总长度",Ans_PackBodyLen);
   	
	switch(jydm)
	{
	case 4011:
		RetValue = ChangeHq(packstruct, tmpStr, Ans_PackRecNum);
	     break;
	case 4012:
		RetValue = ChangeDq(packstruct, tmpStr, Ans_PackRecNum);
	     break;
	case 4013:
		RetValue = ChangeDhlb(packstruct, tmpStr, Ans_PackRecNum);
	     break;
	case 4015://通知存款查询基本信息查询
	case 4016://通知存款查询明细查询
		RetValue = ChangeTzck(jydm, packstruct, tmpStr, Ans_PackRecNum);
	     break;
	case 4018://外币储蓄查询
        RetValue = ChangeWbcxcx(jydm,packstruct, tmpStr, Ans_PackRecNum);
	     break;
	case 4019://外币储蓄查询
		RetValue = ChangeWbdq(jydm,packstruct, tmpStr, Ans_PackRecNum);
	     break;
	case 4020://信用卡查询
		RetValue = ChangeXykmx(jydm,packstruct, tmpStr, Ans_PackRecNum);
	     break;

⌨️ 快捷键说明

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