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

📄 package.cpp

📁 一个与银行通讯的测试程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    //-------------deposit_msg_structcxxx
	//得到储蓄信息查询中记录信息总长度
    Ans_PackBodyLen = Ans_PackRecNum*iLen;
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%d]","全国通返回信息模块","记录信息总长度",Ans_PackBodyLen);

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

	RetValue = ChangeZhxx(packstruct, tmpStr, Ans_PackRecNum);
	RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}
//国库券
int Cpackage::Function_CxGkq(PACKSTRUCT *packstruct, char *cSendbuf)
{
	//储  种 (17)
	/*
	//币  种
	//储  种
	card_no 
	password
    查询起始日期YYYYMMDD
    */
	char	tmpStr[ 200 ], tmpstr[ 200 ];
	int iLength,RetValue=0;
	information_request Str_info_request;

	memset( &Str_info_request, 0x30, sizeof(information_request) );
	memset( tmpStr, 0x00, sizeof(tmpStr) );
	memset( tmpstr, 0x00, sizeof(tmpstr) );
	iLength = 0;
 

	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);
	iLength = strlen(tmpStr);
	memcpy(Str_info_request.pprno,tmpStr,3);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","设备编号",tmpStr);


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

	//币  种  2
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 2, 0x01 );
    alltrimSpace(tmpStr);
	
	memcpy(Str_info_request.bz,tmpStr,sizeof(Str_info_request.bz));
	
	//储  种   2  ???/??
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 3, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_info_request.cz,tmpStr,sizeof(Str_info_request.cz));

    //笔数号,查询通知明细时需要输入  笔数号 (起始页数3)
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 4, 0x01 );
    alltrimSpace(tmpStr);
	memcpy(Str_info_request.bs,tmpStr,sizeof(Str_info_request.bs));

	//查询起始日期YYYYMMDD
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 5, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	if(iLength <= 8)
	{
	memcpy(Str_info_request.rq1,tmpStr,iLength);
	//WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","ksrq",tmpStr);
	}
	
   
	RetValue=sizeof(information_request);
	memcpy((char *)cSendbuf,(char *)&Str_info_request,RetValue);
	return RetValue;
}

int Cpackage::Function_CxGkq_ans(int jydm,PACKSTRUCT *packstruct, char *cRecvbuf)
{

//	int head_length;
//		int ErrCode;
	int Ans_PackRecNum=0;
	int Ans_PackBodyLen=0;
	int offset=0;
    int iLen=0;
	int RetValue = 0;
	char tmpStr[4096];

	message_head                 Str_message_head;
	
    offset = sizeof(message_head);
	iLen = sizeof(deposit_msg_structgkq);
    
	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);
	//判断错误码
	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*iLen;
		//判断包是否过长
		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 = ChangeHq_Gkq(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';//占用他表示是否有后续
		return -1;
	}
	else//其它为通信故障。
	{
		memcpy(packstruct->m_Fhdm,"9001",4);
		packstruct->m_Blx[0]='1';//!!!!!!!!!!!!!!!!!!!
		packstruct->m_Flag[0]='0';//占用他表示是否有后续
		return -1;
	}

	RetValue = RetValue + MAX_HEAD_LEN;
	return RetValue;
}

int Cpackage::ChangeHq_Gkq(PACKSTRUCT *packstruct, char *buffer, int NumRec)
{
	char tmpstr[200],str[10],tmpStr[80];
	int iLen=0;
	int tmpoffset=0;
	int StructLen,iPackDataLen=0;
	
	deposit_msg_structgkq TmpRecoBody;
	StructLen = sizeof(deposit_msg_structgkq);
	
	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);

		//填充发生日到前端结构 8
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.fsr,sizeof(TmpRecoBody.fsr));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);
		WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","国库查询","发生日",tmpstr);
        
		//填充状态到前端结构2
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.zt,sizeof(TmpRecoBody.zt));
		alltrimSpace(tmpstr);
		if(memcmp(tmpstr,"00",2)==0)
          	strcat(packstruct->m_Data, "正常");
		else
	        strcat(packstruct->m_Data, "其他");
		WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","国库查询","状态",tmpstr);

		//填充发生额 到前端结构 12
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpStr,TmpRecoBody.fxnd,sizeof(TmpRecoBody.fxnd));
		alltrimSpace(tmpStr);
		strcat(packstruct->m_Data, tmpStr);
		WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","国库查询","发行年度",tmpstr);

		//填充djq到前端结构  12
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.djq,sizeof(TmpRecoBody.djq));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);
		WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","国库查询","djq",tmpstr);

	
		//qx 10
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.qx,sizeof(TmpRecoBody.qx));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);
		WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询","qs",tmpstr);

		//je 2
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpStr,TmpRecoBody.je,sizeof(TmpRecoBody.je));
		alltrimSpace(tmpStr);
		ChangAnsMoney(tmpStr);
	    sprintf(tmpstr,"%12.12s",tmpStr);
   		strcat(packstruct->m_Data, tmpstr);
	    WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询","je",tmpstr);
	
		//bs
		memset(tmpstr,0x00,sizeof(tmpstr));
		memcpy(tmpstr,TmpRecoBody.bs,sizeof(TmpRecoBody.bs));
		alltrimSpace(tmpstr);
		strcat(packstruct->m_Data, tmpstr);
	    WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","信息查询","bs",tmpstr);

	}//for over

	//填包数据区长
	memset(str,0x00,sizeof(str));
	memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
	iPackDataLen = strlen(packstruct->m_Data);
    sprintf(str, "%04d", iPackDataLen);
	memcpy(packstruct->m_DataLen, str, 4);

    return iPackDataLen;
}











//暂不开
int Cpackage::Function_CxDsf(PACKSTRUCT *packstruct, char *cSendbuf)
{
	//储  种 81-代收电话费	82-代收电费		83-代收保险费
	/*
	MAKEDATA
	@account
	@password
	@startday
	@endday
	%..\dbf\lsjymc.dbf
	ENDMAKEDATA
    */
	char	tmpStr[ 200 ], tmpstr[ 200 ];
	//Buff[ 20 ], dateBuf[ 20 ];
	int iLength,RetValue=0;
	int FunCode;
	information_request Str_info_request;

	memset( &Str_info_request, 0x20, sizeof(information_request) );
	memset( tmpStr, 0x00, sizeof(tmpStr) );
	memset( tmpstr, 0x00, sizeof(tmpstr) );
	iLength = 0;
 	
	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);
	iLength = strlen(tmpStr);
	memcpy(Str_info_request.pprno,tmpStr,iLength);
	WriteParseLog(__FILE__,__LINE__,"%s  , %s=[%s]","综合信息请求模块","设备编号",tmpStr);


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

	//币  种  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.bz,"81",2);
    else if(FunCode==4042)
		memcpy(Str_info_request.bz,"82",2);
	else if(FunCode==4043)
		memcpy(Str_info_request.bz,"83",2);
    else
		memcpy(Str_info_request.bz,"00",2);
    

	//储  种   2  ???/??

		memcpy(Str_info_request.cz,"05",sizeof(Str_info_request.bz));

    //笔数号,查询通知明细时需要输入  笔数号 (起始页数3)
	memset(tmpStr,0x00,sizeof(tmpstr));
	strcpy(tmpStr,"0000");
	memcpy(Str_info_request.bs,tmpStr,4);

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

	//终止日期00000000
	memset(tmpStr,0x00,sizeof(tmpstr));
	GetValue( packstruct->m_Data, tmpStr, 4, 0x01 );
    alltrimSpace(tmpStr);
	iLength = strlen(tmpStr);
	memcpy(Str_info_request.rq2,tmpStr,8);

	//memcpy(Str_info_request.rq2,"00000000",8);
	//reserve[15];
	//memcpy(Str_info_request.reserve,"000000000000000",sizeof(Str_info_request.reserve));
    
	RetValue=sizeof(information_request);
	memcpy((char *)cSendbuf,(char *)&Str_info_request,RetValue);

	return RetValue;
}


//代收费信息
int Cpackage::Function_CxDsf_ans(int jydm, PACKSTRUCT *packstruct, char *cRecvbuf)
{

⌨️ 快捷键说明

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