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

📄 package.cpp.bak

📁 一个与银行通讯的测试程序
💻 BAK
📖 第 1 页 / 共 5 页
字号:
    memcpy(packstruct->m_Data,tmpStr,Ans_PackBodyLen);

	memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	memcpy(packstruct->m_DataLen,Str_message_head.rec_num,3);
    return Ans_PackBodyLen;
}

int Cpackage::Function_CxDsf(PACKSTRUCT *packstruct, char *cSendbuf)
{
	//储  种 81-代收电话费	82-代收电费		83-代收保险费
	/*
	//币  种
	card_no 
	password
    查询起始日期YYYYMMDD
    */
	char	tmpStr[ 200 ], tmpstr[ 200 ], Buff[ 20 ], dateBuf[ 20 ];
	int RetValue=0;
	int FunCode;
	information_request Str_info_request;

	memset( &Str_info_request, 0x00, sizeof(information_request) );
	memset( tmpStr, 0x00, sizeof(tmpStr) );
	memset( tmpstr, 0x00, sizeof(tmpstr) );
	
 	//信息查询请求
	
	//02 - 信息查询 jylx[2];
	/*
   	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
	alltrimSpace(tmpStr);
	mempy(Str_info_request.jylx,"02",sizeof(Str_info_request.jylx));
    */
    
	memcpy(Str_info_request.jylx,"02",sizeof(Str_info_request.jylx));
    
	//多媒体查询 设备编号 3
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
	alltrimSpace(tmpStr);
	memcpy(Str_info_request.pprno,tmpStr,sizeof(Str_info_request.pprno));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","设备编号",tmpStr);


	//处理号 3  ????????????????????
	//memset(tmpstr,0x00,sizeof(tmpstr));
    //mwmcpy(tmpstr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
	//alltrimSpace(tmpstr);
	memcpy(Str_info_request.pprclh,"000",sizeof(Str_info_request.pprclh));
	
	//card_no 16
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 1, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_info_request.card_no,tmpStr,sizeof(Str_info_request.card_no));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","card_no",tmpStr);

	//币  种  2
	memcpy(Str_info_request.bz,"01",sizeof(Str_info_request.bz));


	//储  种   2  ???/??
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
	alltrimSpace(tmpStr);
	FunCode = atoi(tmpStr);
	//81-代收电话费	82-代收电费		83-代收保险费
	if(FunCode==4041)
		memcpy(Str_info_request.cz,"81",sizeof(Str_info_request.cz));
    else if(FunCode==4042)
		memcpy(Str_info_request.cz,"82",sizeof(Str_info_request.cz));
	else if(FunCode==4043)
		memcpy(Str_info_request.cz,"83",sizeof(Str_info_request.cz));
    else
		memcpy(Str_info_request.cz,"00",sizeof(Str_info_request.cz));
    
    //笔数号,查询通知明细时需要输入  笔数号 (起始页数3)
	memset(tmpStr,0x00,sizeof(tmpstr));
	strcpy(tmpStr,"0000");
	memcpy(Str_info_request.bs,tmpStr,sizeof(Str_info_request.bs));

	//查询起始日期YYYYMMDD
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_info_request.rq1,tmpStr,sizeof(Str_info_request.rq1));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","起始日期",tmpStr);

	//终止日期00000000
	memcpy(Str_info_request.rq2,"00000000",sizeof(Str_info_request.rq2));
	
	//reserve[15];
	memcpy(Str_info_request.reserve,"000000000000000",sizeof(Str_info_request.reserve));
    
	RetValue=sizeof(information_request);
	return RetValue;
}


//代收费信息
int Cpackage::Function_CxDsf_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
	int head_length,ErrCode;
	int Ans_PackRecNum=0;
	int Ans_PackBodyLen=0;
	int offset=0;
    int iLen=0;
	char tmpStr[4096];

	message_head                 Str_message_head;
	dsf_msg_struct   Str_dsf_struct;
	
    offset = sizeof(message_head);
	//cccccccccccccccccccccccccccccccccccccccc
	iLen = sizeof(dsf_msg_struct);
    
	memset(tmpStr,0x00,sizeof(tmpStr));

    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);

    memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.jgdm,3);
	//判断错误码
	if(!memcmp(tmpStr,"000",3) == 0)
	{
		ErrCode = atoi(tmpStr);
		switch(ErrCode)
		{
		default:
			memcpy(packstruct->m_Fhdm,"9001",4);
			break;
		}
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
	memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
	memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	return -1;
	}
    
	//得到包中记录数
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_message_head.rec_num,3);
    alltrimSpace(tmpStr);
	Ans_PackRecNum = atoi(tmpStr);
    
     //目前无法知道真样判断是何种返回,分解包

	/*********************************************************/
    //-------------Str_deposit_structgkq
	//得到中记录信息总长度mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
    
	Ans_PackBodyLen = Ans_PackRecNum*iLen;
	
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%d]","返回信息模块","记录信息总长度",Ans_PackBodyLen);

	//复制记录内容
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,cRecvbuf+offset,Ans_PackBodyLen);

	memcpy(packstruct->m_Fhdm,"0000",4);
	packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续

	memset(packstruct->m_Data,0x00,sizeof(MAX_DATA_LEN));
    memcpy(packstruct->m_Data,tmpStr,Ans_PackBodyLen);

	memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	memcpy(packstruct->m_DataLen,Str_message_head.rec_num,3);
    return Ans_PackBodyLen;
}



int Cpackage::Function_Mmjy_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{
	int kkzz_len,iLen=0;
	int offset=0;
	int RetValue=0;
    char tmpStr[4096];
/*
typedef struct
{ 
       char  jylx[2];		/*  01 - 密码校验标志	
       char  pprno[3];		/*  多媒体查询  设备号	
       char  pprclh[3];		/*  多媒体查询 处理号	
       char  jgdm[3];		/*  结果代码 (参看后面)	
       char  reserve[15];	/*  备用  				  
}ReplyPasswd;
*/
	ReplyPasswd   Str_ReplyPasswd;

    memset(&Str_ReplyPasswd,0x00,sizeof(Str_ReplyPasswd));
    memcpy(&Str_ReplyPasswd,cRecvbuf,sizeof(Str_ReplyPasswd));
	
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,Str_ReplyPasswd.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))
	{
		char 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));
 			
		//填包数据区长
		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))//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"1001",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
     return 1;
	}
	else if(memcmp(tmpStr,"002",3))//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"1002",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
     return 2;
	}
	else if(memcmp(tmpStr,"003",3))//卡中无该项存款
	{
    memcpy(packstruct->m_Fhdm,"1003",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
     return 3;
	}
	else//其它为通信故障。
	{
	memcpy(packstruct->m_Fhdm,"9000",4);
	packstruct->m_Blx[0]='0';//!!!!!!!!!!!!!!!!!!!
	packstruct->m_Flag[0]='0';//占用他表示是否有后续
    return 0;
	}
    RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}

int Cpackage::Function_Mmjy(PACKSTRUCT *packstruct, char *cSendbuf)
{

	char	tmpStr[ 200 ], tmpstr[ 200 ], Buff[ 20 ], dateBuf[ 20 ];
	int RetValue=0;
	RequestPasswd Str_RequestPasswd;

    memset( &Str_RequestPasswd, 0x00, sizeof(RequestPasswd) );
	
	memset( tmpStr, 0x00, sizeof(tmpStr) );
	memset( tmpstr, 0x00, sizeof(tmpstr) );
	
 	memcpy(Str_RequestPasswd.jylx,"01",sizeof(Str_RequestPasswd.jylx));
   
	//多媒体查询 设备编号 3
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,packstruct->m_Zdh,sizeof(packstruct->m_Zdh));
	alltrimSpace(tmpStr);
	memcpy(Str_RequestPasswd.pprno,tmpStr,sizeof(Str_RequestPasswd.pprno));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐请求模块","设备编号",tmpStr);


	memcpy(Str_RequestPasswd.pprclh,"000",sizeof(Str_RequestPasswd.pprclh));
	
	//ckh16  卡号
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 1, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_RequestPasswd.card_no,tmpStr,sizeof(Str_RequestPasswd.card_no));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐请求模块","卡号",tmpStr);

	//mm6];	   		
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_RequestPasswd.mm,tmpStr,sizeof(Str_RequestPasswd.mm));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐请求模块","转入卡号",tmpStr);
    
	//mm[6];       	 	srmm shuru 密码      
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_RequestPasswd.srmm,tmpStr,sizeof(Str_RequestPasswd.srmm));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐请求模块","取款密码",tmpStr);
   
    //reserve;         	备用
    memcpy(Str_RequestPasswd.reserve,"000000000000000",sizeof(Str_RequestPasswd.reserve));
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","卡内转帐请求模块","期限",tmpStr);
   
	RetValue=sizeof(Str_RequestPasswd);
	return RetValue;
}

int Cpackage::Funct_Xxcx_Pub(PACKSTRUCT *packstruct, char *jydm, char *cSendbuf)
{
return 0;
}


//解析活期查询包
int Cpackage::ChangeHq(PACKSTRUCT *packstruct, char *buffer, int NumRec)
{
		char tmpstr[200],str[10];
		int iLen=0;
		int tmpoffset=0;
		int StructLen,iPackDataLen=0;

	    deposit_msg_structcxxx TmpRecoBody;
        StructLen = sizeof(deposit_msg_structcxxx);

		memcpy(packstruct->m_Fhdm,"0000",4);
		packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
		packstruct->m_Flag[0]='0';//占用他表示是否有后续

		memset(packstruct->m_Data,0x00,sizeof(packstruct->m_Data));
 
	//进行包化间
    for(int i=0; i<NumRec; i++)
	{   
		//定义临时结构体
		memset((char *)&TmpRecoBody,0x00,StructLen);
		tmpoffset = i*StructLen;
	    memcpy((char *)&TmpRecoBody,buffer+tmpoffset,StructLen);
		
		//填充帐号到前端结构 10
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.zh,sizeof(TmpRecoBody.zh));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);//注意不要strcpy
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		//填充发生日到前端结构 8
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.fsr,sizeof(TmpRecoBody.fsr));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

        //填充状态到前端结构2
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.zt,sizeof(TmpRecoBody.zt));
		alltrimSpace(tmpstr);
		//注意第一个为STRCPY
		strcat(packstruct->m_Data, tmpstr);
		iLen = strlen(packstruct->m_Data);
	    packstruct->m_Data[iLen] = 0x01;

		//填充发生额 到前端结构 12
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.fse,sizeof(Tm

⌨️ 快捷键说明

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