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

📄 testjtyhdlg.cpp

📁 转发交易接口
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	int len = 0;
	char tmpStr[80];
	int retVal =0;
	REQHEAD reqhead;
	REQ_BODY_NBXK reqbody;

	memset((char *)&reqhead,0x00,sizeof(reqhead));
	memset((char *)&reqbody,0x00,sizeof(reqbody));
	/***********************************head*********************************************/
    memcpy(reqhead.TIAFILLER,"TLU6",4);
	memcpy(reqhead.TIAAPCODE,"04",2);
	memcpy(reqhead.TIATRCODE,"7290",4);
	memcpy(reqhead.TIAFECODE,"047290",6);	// 前置机号 前置交易码,用于双交易码
	memcpy(reqhead.TIATMSEQNO,"TERM099",7);	//终端号
	memcpy(reqhead.TIATXTYPE,"WEB99",5);//交易来源,填'WEB99'
	memcpy(reqhead.TIATXSEQ,"000000000000000",15);//[15]填网银凭证号
	memcpy(reqhead.TIATLID,"0000000",7);//[7]虚拟柜员号
	reqhead.TIAREQTYPE[0] = 'T';
	/*************************可不填
	reqhead.TIAAUTH[2];
	reqhead.TIASUP1ID[7];
	reqhead.TIASUP2ID[7];
	reqhead.TIASUP1PSW[6];
	reqhead.TIASUP2PSW[6];
	reqhead.TIASUP1DEV[1];
	reqhead.TIASUP2DEV[1];
	//char TIAAUTHRESNTBL		Occur 10	I???????????????????
	reqhead.TIAAUTHRESNTBL[10];
	reqhead.TIAAUTHRESN[6];
	reqhead.TIAAUTHLOG[1];
	reqhead.TIAJRNNO[9];
	*/
	reqhead.TIACOMPIND[1]='0';
	reqhead.TIAENCRIND[1]='0';
	/*
	reqhead.TIATRBR[6];
	reqhead.TIATLLVL[1];
	reqhead.TIAVERNO[8];
	reqhead.TIAOUTERTLR[1];
	reqhead.m_TIAFILLER[2];
	*/
	//char TIATRDATA[2048];
	
	/*********************************body*************************************/
    memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
	
	memset( tmpStr, 0x00, sizeof( tmpStr ) );
    retVal = GetValue( vpack->m_Data, tmpStr, 1, 0x01 );
	alltrimSpace(tmpStr);	
	strcpy(reqbody.gyh,tmpStr);
	
	memset( tmpStr, 0x00, sizeof( tmpStr ) );
    retVal = GetValue( vpack->m_Data, tmpStr, 2, 0x01 );
	alltrimSpace(tmpStr);
	strcat(reqbody.cardnum,tmpStr);
	
	memcpy(vbuff,(char *)&reqhead,sizeof(reqhead));
	memcpy(vbuff+sizeof(reqhead),(char *)&reqbody,sizeof(reqbody));
	len = sizeof(reqhead)+sizeof(reqbody);
	return len;
}


int CTestJtyhDlg::Function_Nbxk_AnsPack(PACKSTRUCT *vpack, char *vbuff)
{
	int len = 0;
	char tmpStr[80];
	
	ANS_BODY_KHZLJL ans;
	memset((char *)&ans,0x00,sizeof(ans));
	
	memset((char *)&ans,0x00,sizeof(ans));
	memcpy((char *)&ans,vbuff,sizeof(ans));
	
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,(char *)&ans.head.TOAMSGCODE,sizeof(ans.head.TOAMSGCODE));
    // 判断结果
	if(memcmp(tmpStr,"0000",4)==0)//  成功
	{
		int iLen=0;
		memcpy(vpack->m_Fhdm,"0000",sizeof(vpack->m_Fhdm));
		memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
		
		strcpy(vpack->m_Data, " ");
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;
		
		strcat(vpack->m_Data, " ");
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;

		//填包数据区长
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
		iLen = strlen(vpack->m_Data);
		sprintf(tmpStr, "%04d", iLen);
		memcpy(vpack->m_DataLen, tmpStr, 4);
		return 0;
	}
	else
	{
		int iLen=0;
		memcpy(vpack->m_Fhdm,"9999",sizeof(vpack->m_Fhdm));
		memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
		
		//客户号
		strcpy(vpack->m_Data,"9999" );
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;
		
		strcat(vpack->m_Data, "内部销卡失败");
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;
		
		//填包数据区长
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
		iLen = strlen(vpack->m_Data);
		sprintf(tmpStr, "%04d", iLen);
		memcpy(vpack->m_DataLen, tmpStr, 4);
		
		return 0;
	}
}




//表外付出047280
int CTestJtyhDlg::Function_Bwfc_ReqPack(PACKSTRUCT *vpack, char *vbuff)
{
	int len = 0;
	char tmpStr[80];
	int retVal =0;
	REQHEAD reqhead;
	REQ_BODY_BWFC reqbody;

	memset((char *)&reqhead,0x00,sizeof(reqhead));
	memset((char *)&reqbody,0x00,sizeof(reqbody));
	/***********************************head*********************************************/
    memcpy(reqhead.TIAFILLER,"TLU6",4);
	memcpy(reqhead.TIAAPCODE,"04",2);
	memcpy(reqhead.TIATRCODE,"7280",4);
	memcpy(reqhead.TIAFECODE,"047280",6);	// 前置机号 前置交易码,用于双交易码
	memcpy(reqhead.TIATMSEQNO,"TERM099",7);	//终端号
	memcpy(reqhead.TIATXTYPE,"WEB99",5);//交易来源,填'WEB99'
	memcpy(reqhead.TIATXSEQ,"000000000000000",15);//[15]填网银凭证号
	memcpy(reqhead.TIATLID,"0000000",7);//[7]虚拟柜员号
	reqhead.TIAREQTYPE[0] = 'T';
	/*************************可不填
	reqhead.TIAAUTH[2];
	reqhead.TIASUP1ID[7];
	reqhead.TIASUP2ID[7];
	reqhead.TIASUP1PSW[6];
	reqhead.TIASUP2PSW[6];
	reqhead.TIASUP1DEV[1];
	reqhead.TIASUP2DEV[1];
	//char TIAAUTHRESNTBL		Occur 10	I???????????????????
	reqhead.TIAAUTHRESNTBL[10];
	reqhead.TIAAUTHRESN[6];
	reqhead.TIAAUTHLOG[1];
	reqhead.TIAJRNNO[9];
	*/
	reqhead.TIACOMPIND[1]='0';
	reqhead.TIAENCRIND[1]='0';
	/*
	reqhead.TIATRBR[6];
	reqhead.TIATLLVL[1];
	reqhead.TIAVERNO[8];
	reqhead.TIAOUTERTLR[1];
	reqhead.m_TIAFILLER[2];
	*/
	//char TIATRDATA[2048];
	
	/*********************************body*************************************/
    memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
	
	memset( tmpStr, 0x00, sizeof( tmpStr ) );
    retVal = GetValue( vpack->m_Data, tmpStr, 1, 0x01 );
	alltrimSpace(tmpStr);	
	strcpy(reqbody.gyh,tmpStr);
	
	memset( tmpStr, 0x00, sizeof( tmpStr ) );
    retVal = GetValue( vpack->m_Data, tmpStr, 2, 0x01 );
	alltrimSpace(tmpStr);
	strcat(reqbody.cardnum,tmpStr);
	
	memcpy(vbuff,(char *)&reqhead,sizeof(reqhead));
	memcpy(vbuff+sizeof(reqhead),(char *)&reqbody,sizeof(reqbody));
	len = sizeof(reqhead)+sizeof(reqbody);
	return len;
}


int CTestJtyhDlg::Function_Bwfc_AnsPack(PACKSTRUCT *vpack, char *vbuff)
{
	int len = 0;
	char tmpStr[80];
	
	ANS_BODY_KHZLJL ans;
	memset((char *)&ans,0x00,sizeof(ans));
	
	memset((char *)&ans,0x00,sizeof(ans));
	memcpy((char *)&ans,vbuff,sizeof(ans));
	
	memset(tmpStr,0x00,sizeof(tmpStr));
    memcpy(tmpStr,(char *)&ans.head.TOAMSGCODE,sizeof(ans.head.TOAMSGCODE));
    // 判断结果
	if(memcmp(tmpStr,"0000",4)==0)//  成功
	{
		int iLen=0;
		memcpy(vpack->m_Fhdm,"0000",sizeof(vpack->m_Fhdm));
		memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
		
		strcpy(vpack->m_Data, " ");
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;
		
		strcat(vpack->m_Data, " ");
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;

		//填包数据区长
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
		iLen = strlen(vpack->m_Data);
		sprintf(tmpStr, "%04d", iLen);
		memcpy(vpack->m_DataLen, tmpStr, 4);
		return 0;
	}
	else
	{
		int iLen=0;
		memcpy(vpack->m_Fhdm,"9999",sizeof(vpack->m_Fhdm));
		memset((char *)vpack->m_Data,0x00,sizeof(vpack->m_Data));
		
		strcpy(vpack->m_Data,"9999" );
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;
		
		strcat(vpack->m_Data, "表外付出失败");
        iLen = strlen(vpack->m_Data);
		vpack->m_Data[iLen] = 0x01;
		
		//填包数据区长
		memset(tmpStr,0x00,sizeof(tmpStr));
		memset(vpack->m_DataLen,0x00,sizeof(vpack->m_DataLen));
		iLen = strlen(vpack->m_Data);
		sprintf(tmpStr, "%04d", iLen);
		memcpy(vpack->m_DataLen, tmpStr, 4);
		
		return 0;
	}
}


SOCKET CTestJtyhDlg::NextSocket_Connect(char *cIpaddress, char *cPort)
{
	int socketport = atoi(cPort);
	struct sockaddr_in serv_addr;
	memset((char *)&serv_addr,0,sizeof(serv_addr));
	serv_addr.sin_family=AF_INET;
	serv_addr.sin_addr.s_addr=inet_addr(cIpaddress);
	serv_addr.sin_port=htons(socketport);
	
	if((sockfd_Bank=socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
	{
		return SOCKET_ERROR;
	}

	//if (SOCKET_ERROR == setsockopt(sockfd, SOL_SOCKET, SO_LINGER,(char *)&nTimeOut,sizeof(nTimeOut))
	//	|| SOCKET_ERROR == setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO,(char *)&nTimeOut,sizeof(nTimeOut)))
	//{
		//CloseSocket(sockfd);
	//	return SOCKET_ERROR;
	//}

	if(connect(sockfd_Bank, (struct sockaddr *)(& serv_addr), sizeof(serv_addr)) == SOCKET_ERROR)
	{
		//CloseSocket(sockfd);
		return SOCKET_ERROR;
	}
	else
	{
		return sockfd_Bank;
	}


}







int	CTestJtyhDlg::TcpCliSockInit ( char *portName, unsigned long address )
{
	int	csocket;

	int 	rval = -1, timeOut=5, elapsedTime = 0;

	time_t 	startTime, endTime;
	void 	(*OldAction)( int );
	struct	sockaddr_in  addr;

	startTime = time( NULL );

	csocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); 
	if( csocket < 0 )
	{
			return -1;
	}

	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = address;
	addr.sin_port = htons( atoi ( portName ) ); 

	while( (elapsedTime < timeOut) && ( rval == -1 ) )
	{
		rval = connect( csocket,(struct sockaddr*)&addr,sizeof(addr) );
	
		if( rval == 0 )
			return csocket;
		else
		{
			closesocket(csocket);
			csocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
			if ( csocket < 0)
				return -1;
		}
		endTime = time( NULL );
		elapsedTime = endTime - startTime;
	}
	return  csocket;
}


int 	CTestJtyhDlg::TcpServSockInit(char *portName, unsigned long address)
{
	int 	sock, length, rval, i;
	struct 	sockaddr_in serverAddr;

	sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (sock < 0)
		return -2;

	serverAddr.sin_family = AF_INET;
	serverAddr.sin_addr.s_addr =  INADDR_ANY;
	serverAddr.sin_port = htons( atoi( portName ) );
	i=1;
	setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(const char*)&i,sizeof(i));
	rval = bind(sock, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) ;
	if ( rval<0 )
		return -3;
	return sock;
}

int	CTestJtyhDlg::TcpSockListen( int sock )
{
	return ( listen ( sock, 15 ) ) ;
}


int 	CTestJtyhDlg::IsReadyToRead(int sock,int timeOut )
{
	struct 	timeval tv;
	struct 	timeval * ptv;
	fd_set 	ready;

	int 	rtnVal, len;

	if ( timeOut != 0 )
	{
		tv.tv_sec = timeOut;
		tv.tv_usec = 0;
		ptv = &tv;
	}else
	{
		ptv = 0;
	}
	FD_ZERO(&ready);
	FD_SET(sock, &ready);
	rtnVal = select(sock + 1, &ready, 0, 0, ptv);
	switch ( rtnVal )
	{
		case 0: return FALSE;  
		case -1:return FALSE; 
	}

	if ( FD_ISSET(sock,&ready) )
		return TRUE;
	return FALSE;
}



int 	CTestJtyhDlg::IsReadyToWrite(int sock,int timeOut )
{
	struct 	timeval tv;
	struct 	timeval * ptv;

	fd_set 	ready;

	int 	rtnVal, len;


	if ( timeOut != 0 )
	{
		tv.tv_sec = timeOut;
		tv.tv_usec = 0;
		ptv = &tv;
	}
	else
	{
		ptv = 0;
	}

	FD_ZERO(&ready);
	FD_SET(sock, &ready);
	rtnVal = select(sock + 1, 0,&ready,  0, ptv);

	switch ( rtnVal )
	{
		case 0: return FALSE;  
		case -1:return FALSE; 
	}
	if ( FD_ISSET(sock,&ready) )
		return TRUE;
	return FALSE;
}



int 	CTestJtyhDlg::WriteData( int sock, unsigned char* buf, int length, int timeOut)
{
	int 	rtnVal, len, counter,wantLen;

	counter = 0;
	wantLen = length ;

	while ( counter != length )
	{
		if ( IsReadyToWrite(sock,timeOut ) )
		{
			rtnVal = write(sock,buf + counter,wantLen);
			if ( rtnVal == -1 )
			{
				
			}
			counter += rtnVal  ;
			wantLen = length - counter;
		}
		else
			return -1;
	}
	return (counter);
}


int 	CTestJtyhDlg::ReadSlot( int sock, char *slotBuff, int maxsz, int timeOut )
{
	int 	rtnVal, length, counter, wantLen;

	counter = 0;

	wantLen = maxsz ;

	if ( IsReadyToRead ( sock, timeOut ) )
	{
		rtnVal = read(sock, slotBuff+counter, wantLen );
		return rtnVal;
	}
	else
	{
		return -1;
	}
}

⌨️ 快捷键说明

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