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

📄 bank_svr.sqc.bak

📁 转发交易接口
💻 BAK
📖 第 1 页 / 共 2 页
字号:
  	Alltrim(jgh);
  	Alltrim(gyh);
  	Alltrim(jkks);
  	Alltrim(yeks);
  	Alltrim(hsks);
  		
  	retcode = 0;
  	sndlen = 0;
  	/*
	//装/清卡编号(批次号)	X(15)//
  	if(strlen(pc) > 15)
  		memcpy(snddata, pc, 15);
  	else
  		memcpy(snddata, pc, strlen(pc));
  	sndlen = sndlen + 15;
  	//机构号(支行)	X(7)
  	if(strlen(jgh) > 7)
  		memcpy(snddata + sndlen, jgh, 7);
  	else
  		memcpy(snddata + sndlen, jgh, strlen(jgh));
  	sndlen = sndlen + 7;
	//自助机具号	X(7)
  	if(strlen(termno) > 7)
  		memcpy(snddata + sndlen, termno, 7);
  	else
  		memcpy(snddata + sndlen, termno, strlen(termno));
  	sndlen = sndlen + 7;
	//日期	X(8)
  	memset(snddata + sndlen, '0', 8);
  	sndlen = sndlen + 8;
	//时间	X(8)
  	memset(snddata + sndlen, '0', 8);
  	sndlen = sndlen + 8;
	//当前加卡柜员	X(07)
  	if(strlen(gyh) > 7)
  		memcpy(snddata + sndlen, gyh, 7);
  	else
  		memcpy(snddata + sndlen, gyh, strlen(gyh));
  	sndlen = sndlen + 7;
	//初始卡数	9(8)
	sprintf(tmpstr, "%08d", atol(jkks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//剩余卡数	9(8)
	sprintf(tmpstr, "%08d", atol(yeks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//回收卡数	9(8)
	sprintf(tmpstr, "%08d", atol(hsks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//成功发卡	9(8)
	sprintf(tmpstr, "%08d", atol(jkks) - atol(hsks));
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
	//可疑卡数	9(8)
	sprintf(tmpstr, "%08d", 0);
  	memcpy(snddata + sndlen, tmpstr, 8);
  	sndlen = sndlen + 8;
  	snddata[sndlen] = 0x00;
  	*/
  		  		
  	SendToBank(rcvSocket, retcode, sndlen, snddata);
  		
	return;  	
}



/*
//清装卡情况明细查询
void zqkmxcx(int rcvSocket, REQHEAD *reqpack)
{
	ANS_HEAD anspack;
  	struct sqlca sqlca;
  	char errorMsg[1024], snddata[4097];
  	int sndlen;
	int retcode;
	memset(snddata, 0x20, sizeof(snddata) - 1);
	snddata[sizeof(snddata) - 1] = 0x00;

	EXEC SQL BEGIN DECLARE SECTION;
		char termno[8]; //自助机具号X(7)
  		long Records;
  		char rq[32];    //日期
		char jgh[32];    //机构号X(7)
		char gyh[32];    //当前加卡柜员X(07)
		char jkks[32];     //初始卡数	9(8)
		char yeks[32];     //剩余卡数	9(8)
		char hsks[32];     //回收卡数	9(8)
		char ffks[32];     //成功发卡	9(8)
		char kyks[32];     //可疑卡数	9(8)
  		char tmpstr[36];
	EXEC SQL END DECLARE SECTION;

	memset(termno, 0x00, sizeof(termno));
	memcpy(termno, reqpack->TIATRDATA, 7);
	Alltrim(termno);
	memset(rq, 0x00, sizeof(rq));
	memcpy(rq, reqpack->TIATRDATA + 7, 8);
	Alltrim(rq);
	memset(gyh, 0x00, sizeof(gyh));
	memcpy(gyh, reqpack->TIATRDATA + 15, 7);
	Alltrim(gyh);
	
  	EXEC SQL SELECT sbdm
   	 INTO :tmpstr
   	 FROM jqxxzt
   	 WHERE id = :termno;
  	if (sqlca.sqlcode == 100)   //无该发卡机处理                          
 	{                                                  
        	retcode = 1000; //无该发卡机处理
        	strcpy(snddata, "无该发卡机设备");
  	        debugLog(__FILE__, __LINE__, "库存查询,无该发卡机设备termno = %s", termno);
        	SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
        	return;
  	}
  	else if (sqlca.sqlcode != 0)   //报错处理
  	{
                SqlInfoGet(errorMsg, &sqlca);
  	        debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	retcode = abs(sqlca.sqlcode)%10000; //
        	strcpy(snddata, errorMsg);
        	SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	        return;
  	}

  	if(gyh[0] == 0x00)  //为空时默认为所有
  	{
  		EXEC SQL SELECT count(*)
   	 	 INTO :Records
   	 	 FROM dr_jqxxmx
   	 	 WHERE Iss21 = :termno;
   	}
   	else
  	{
  		EXEC SQL SELECT count(*)
   	 	 INTO :Records
   	 	 FROM dr_jqxxmx
   	 	 WHERE Iss21 = :termno and Iss3 = :pc;
   	}
   	if (sqlca.sqlcode != 0)   //报错处理
  	{
                SqlInfoGet(errorMsg, &sqlca);
  	        debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	retcode = abs(sqlca.sqlcode)%10000; //
        	strcpy(snddata, errorMsg);
        	SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	        return;
  	}
 
        if(Records <= 0)  //找jqxxmx表
        {

  	
  EXEC SQL DECLARE c1 CURSOR FOR
    SELECT id, name
      FROM tb1;

  EXEC SQL OPEN c1;
  if (sqlca.sqlcode != 0)                             
  {                                                  
        SqlInfoGet(errorMsg, &sqlca);
  	printf("mult select false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
  }
  else
  {

    EXEC SQL FETCH c1 INTO :id, :name;
    if (sqlca.sqlcode != 0)                             
    {                                                  
        SqlInfoGet(errorMsg, &sqlca);
  	printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
    }
    else
    {
      while (sqlca.sqlcode != 100)
      {
        printf("mult select: id = %-d name = %s\n", id, name);
        EXEC SQL FETCH c1 INTO :id, :name;
        if (sqlca.sqlcode != 0 && sqlca.sqlcode != 100 )                             
        {                                                  
            SqlInfoGet(errorMsg, &sqlca);
  	    printf("mult select fetch false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
  	    break;
        }
      }
    }

    EXEC SQL CLOSE c1;
  }
  	

  	SendToBank(rcvSocket, retcode, sndlen, snddata);
*/  

/*		
	return;  	
}

//清装卡情况汇总查询
void zqkhzcx(int rcvSocket, REQHEAD *reqpack)
{
	ANS_HEAD anspack;
	
	
	memset(&anspack, 0x00, sizeof(ANS_HEAD));

}

//发卡明细
void famxcx(int rcvSocket, REQHEAD *reqpack)
{
	ANS_HEAD anspack;
  	struct sqlca sqlca;
  	char errorMsg[1024], snddata[4097];
  	int sndlen;
	int retcode;
	memset(snddata, 0x20, sizeof(snddata) - 1);
	snddata[sizeof(snddata) - 1] = 0x00;

	EXEC SQL BEGIN DECLARE SECTION;
		char termno[8]; //自助机具号X(7)
  		long Records;
  		char rq[9];
  		char lsh[32];
		char pc[32];     //装/清卡编号(批次号)X(15)
		char jgh[32];    //机构号X(7)
		char gyh[32];    //当前加卡柜员X(07)
		char jkks[32];     //初始卡数	9(8)
		char yeks[32];     //剩余卡数	9(8)
		char hsks[32];     //回收卡数	9(8)
		char ffks[32];     //成功发卡	9(8)
		char kyks[32];     //可疑卡数	9(8)
  		char tmpstr[36];
	EXEC SQL END DECLARE SECTION;

	memset(termno, 0x00, sizeof(termno));
	memcpy(termno, reqpack->TIATRDATA, 7);
	Alltrim(termno);
	memset(rq, 0x00, sizeof(rq));
	memcpy(rq, reqpack->TIATRDATA + 7, 8);
	Alltrim(rq);
	memset(pc, 0x00, sizeof(pc));
	memcpy(pc, reqpack->TIATRDATA + 7, 15);
	Alltrim(pc);
	
	
  	//取当前库存
        	EXEC SQL SELECT Iss20, Iss8, Iss11, Iss18, Iss17
   	 	 INTO :jgh, :gyh, :jkks, :yeks, :hsks
   	 	 FROM dr_jylsk
   	 	 WHERE sbdm = :termno and fsrq =:rq
   	 	 //and Iss3 = :pc; 
		if (sqlca.sqlcode != 0)   //报错处理
  		{
            		SqlInfoGet(errorMsg, &sqlca);
  	    		debugLog(__FILE__, __LINE__, "select sql false SQLCODE = [%-d]%s\n", sqlca.sqlcode, errorMsg);
        	        retcode = abs(sqlca.sqlcode)%10000; //
        	        strcpy(snddata, errorMsg);
        	        SendToBank(rcvSocket, retcode, strlen(snddata), snddata);
  	    		return;
  		}
	
	memset(&anspack, 0x00, sizeof(ANS_HEAD));

}
*/
void SendToBank(int rcvSocket, int retcode, int datalen, char *sndData)
{
	ANS_HEAD anspack;
	int sndLen;
	char tmpstr[256];
	if(retcode == 0)
		anspack.TOAMSGTYPE[0] = 'N';
	else
		anspack.TOAMSGTYPE[0] = 'E';
	memset(&anspack, 0x20, sizeof(ANS_HEAD));
	sprintf(tmpstr, "%04d", retcode);
	memcpy(anspack.TOAMSGCODE, tmpstr, 4);
	memset(anspack.TOACURSPOS, '0', 4);
	memset(anspack.TOATMSEQNO, '0', 6);
	memset(anspack.TOASUBSTRCODE, '0', 4);
	memset(anspack.TOASUBSAPCODE, '0', 2);
	memset(anspack.TOATRDATE, '0', 8);
	memset(anspack.TOATRTIME, '0', 6);
	memset(anspack.TOAACDATE, '0', 8);
	memset(anspack.TOAJRNNO, '0', 9);
	memset(anspack.TOAPAGEIND, '0', 1);
	memset(anspack.TOACOMPIND, '0', 1);
	memset(anspack.TOAENCRIND, '0', 1);
	memset(anspack.TOATRBR, '0', 6);
	anspack.TOAFINFLAG[0] = 'N';
	memset(anspack.TOAAUTH, '0', 2);
	sprintf(tmpstr, "%04d", datalen);
	memcpy(anspack.TOAMSGLEN, tmpstr, 4);
	sndLen = sizeof(ANS_HEAD)-4096 + datalen;
	sprintf(tmpstr, "%08d", sndLen - 8);
	memcpy(anspack.PACKLEN, tmpstr, 4);
	memcpy(anspack.TOAOUTPDATA, sndData, datalen);
	
        if (write(rcvSocket, (unsigned char *)&anspack, sndLen) != sndLen)
        {
            debugLog(__FILE__, __LINE__, "send ans to bank failed");
            close(rcvSocket);
            return;
        }
	return;
}


void 	sig_child( )
{
    	while( waitpid( -1, NULL, WNOHANG ) > 0 ) ;
}

void	sig_Terminate( )
{
	kill( getpid(), SIGKILL );

	exit( 0 );
}


⌨️ 快捷键说明

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