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

📄 query.c

📁 用C 语言开发Tuxedo客户端连接程序
💻 C
字号:
#include "stdlib.h"#include "stdio.h"#include "string.h"
#include "BankIntf.h"
char *substr(char *s,int start,int n)
{
    int i;
    char *p;
    s+=(start-1);
    p=(char *)malloc((n+1)*sizeof(char));
    for(i=0;i<n;i++)
   *(p+i)=*(s+i);
    *(p+i)='\0';
    return p;
} main(int argc,char *argv[]){		int iRet,i;
		SBasicInput  sBasicInput;
		SDebFeeUserInfoInput  sDebFeeUserInfoInput;
		SBasicOutput sBasicOutput;
		SDebFeeUserInfoOutput sDebFeeUserInfoOutput;
		SRecvFeeDetailBillInfo sRecvFeeDetailBillInfo[50];

		strcpy(sBasicInput.province_code,"HAIN");
        strcpy(sBasicInput.in_mode_code,"D");
		strcpy(sBasicInput.trade_eparchy_code,"0898");
		strcpy(sBasicInput.trade_city_code,argv[3]);
        strcpy(sBasicInput.trade_depart_id,"99330");
		strcpy(sBasicInput.trade_staff_id,argv[4]);
        strcpy(sBasicInput.trade_depart_passwd,"0123456789");
	    strcpy(sDebFeeUserInfoInput.serial_number,argv[2]);
	 
		//memset((char *)&sBasicInput,0,sizeof(sBasicInput));
		//memset((char *)&sBasicOutput,0,sizeof(sBasicOutput));			
		iRet=fnQDebFee(&sBasicInput,&sDebFeeUserInfoInput,&sBasicOutput,&sDebFeeUserInfoOutput,sRecvFeeDetailBillInfo);
		if (iRet<0)		{			printf("\n[交易执行失败[%d]]\n",iRet);			exit(1);		}
		else
		{
		    printf("%s",argv[1]);  // 1:查询
            printf(";%d",sBasicOutput.x_resultcode);  /*返回结果代码*/
			printf(";%s",sBasicOutput.x_resultinfo); /*返回结果信息*/
			printf(";%d",sBasicOutput.x_recordnum); /*返回结果记录数*/
			printf(";%s",sDebFeeUserInfoOutput.spay_fee); /*应收金额*/
			printf(";%s",sDebFeeUserInfoOutput.allbowe_fee); /*往月欠费*/
			printf(";%s",sDebFeeUserInfoOutput.serial_number);/*用户号码*/
			printf(";%s",sDebFeeUserInfoOutput.pay_name); /*客户名*/
			printf(";%s",sDebFeeUserInfoOutput.brand); /*用户品牌*/
			printf(";%s",sDebFeeUserInfoOutput.last_balance); /*上月节余*/
			printf(";%s",sDebFeeUserInfoOutput.total_fee); /*上月费用*/
			printf(";%s",sDebFeeUserInfoOutput.allrowe_fee); /*本月费用*/
			printf(";%s",sDebFeeUserInfoOutput.x_all_fee); /*本月缴纳*/
			printf(";%s",sDebFeeUserInfoOutput.x_new_balance); /*本次节余*/
			printf(";%s",sDebFeeUserInfoOutput.user_id); /*用户标识*/
			printf(";%s",sDebFeeUserInfoOutput.all_money); /*用户当前帐户存款*/
			printf(";%s",sDebFeeUserInfoOutput.all_balance); /*实时余额*/
			printf(";%s",sDebFeeUserInfoOutput.charge_id); /*缴费流水*/
		    printf(";%d",sDebFeeUserInfoOutput.records); /*明细费用项个数*/
			for (i=0;i<sDebFeeUserInfoOutput.records;i++)
			{
		     printf(";%d",sRecvFeeDetailBillInfo[i].integrate_item_code); /*综合帐目编码*/
			printf(";%s",sRecvFeeDetailBillInfo[i].integrate_item); /*综合帐目名称*/
			printf(";%s",sRecvFeeDetailBillInfo[i].fee); /*帐目金额*/
			}
			printf(";%s",sDebFeeUserInfoOutput.eparchy_code); /*地州编码*/
			exit(1);
		}			}


/*-----------------------------------------------------------------------------
 * Function: fnQDebFee
 * Purpose : 正常用户欠费查询
 * Input   :
 *            SBasicInput *               -- 输入参数,基本输入数据
 *            SDebFeeUserInfoInput *      -- 输入参数,用户信息
 *            SBasicOutput *              -- 输出参数,基本输出数据
 *            SDebFeeUserInfoOutput *     -- 输出参数,用户欠费信息
 *            sRecvFeeDetailBillInfo[50]  -- 输出参数,帐单明细信息
 * Return  :  0 成功, -1 失败
 * Remark  :
 * Author  : Luxd
 * Date    : 2004/07/07
 *-----------------------------------------------------------------------------
 */
#if defined(__STDC__) || defined(__cplusplus)
int  fnQDebFee(SBasicInput * sBasicInput, SDebFeeUserInfoInput * sDebFeeUserInfoInput,
                SBasicOutput * sBasicOutput, SDebFeeUserInfoOutput * sDebFeeUserInfoOutput,
                SRecvFeeDetailBillInfo sRecvFeeDetailBillInfo[50])

#else
int  fnQDebFee(sBasicInput, sDebFeeUserInfoInput, sBasicOutput, sDebFeeUserInfoOutput, sRecvFeeDetailBillInfo )
     SBasicInput * sBasicInput;
     SDebFeeUserInfoInput * sDebFeeUserInfoInput;
     SBasicOutput * sBasicOutput;
     SDebFeeUserInfoOutput * sDebFeeUserInfoOutput;
     SRecvFeeDetailBillInfo sRecvFeeDetailBillInfo[50];
#endif
{
	FBFR *fmlbuf= (FBFR *) NULL;        /* tuxedo服务调用输入输出缓存 */

	int iReturn,i;
	int lResultrecord;
	long lOutLen;
	
	char  spayfee[SPAY_FEE_LEN] = "\0";              /*应收金额*/
    char  allbowefee[ALLBOWE_FEE_LEN] = "\0";        /*往月欠费*/
    char  serialnumber[SERIAL_NUMBER_LEN] = "\0";    /*用户号码*/
    char  payname[PAY_NAME_LEN] = "\0";              /*客户名*/
    char  brand[BRAND_LEN] = "\0";				     /*用户品牌*/
    char  lastbalance[LAST_BALANCE_LEN] = "\0";      /*上月节余*/
    char  totalfee[TOTAL_FEE_LEN] = "\0";            /*上月费用*/
    char  allrowefee[ALLROWE_FEE_LEN] = "\0";		 /*本月费用*/
    char  xallfee[X_ALL_FEE_LEN] = "\0";			 /*本月缴纳*/
    char  xnewbalance[X_NEW_BALANCE_LEN] = "\0";     /*本次节余*/
    char  recvstaffid[RECV_STAFF_ID_LEN] = "\0";     /*收费员工*/
    char  userid[USER_ID_LEN] = "\0";				 /*用户标识*/    
    char  allmoney[ALL_MONEY_LEN] = "\0";     /*用户当前帐户存款*/
    char  allbalance[ALL_BALANCE_LEN] = "\0";				 /*实时余额*/
    char  chargeid[CHARGE_ID_LEN] = "\0";			 /*缴费流水*/
	
	long  integrateitemcode = 0;				     /*综合帐目编码*/
    char  integrateitem[INTEGRATE_ITEM_LEN] = "\0";  /*综合帐目名称*/
    char  fee[RECV_FEE_LEN] = "\0";                  /*帐目金额*/
    
    long  xresultcode = 0;                           /*返回结果代码*/
    char  xresultinfo[X_RESULTINFO_LEN] = "\0";      /*返回结果信息*/
    long  xrecordnum = 0;                            /*返回结果记录数,多行输出时有效*/
	char  eparchycode[EPARCHY_CODE_LEN]="\0";        /*返回地州编码*/
    char infotemp[2000];
    
    /*SBasicOutput BasicOut;
    BasicOut.x_resultcode = 0;
    strcpy(BasicOut.x_resultinfo,"\0");
    BasicOut.x_recordnum = 0;   
    sBasicOutput = &BasicOut;*/
    
	/* 建立tuxedo连接 */
	tuxputenv("WSNADDR=//135.191.25.225:46500");
    if (tpinit((TPINIT *) NULL) == -1) 
    {
		(void) fprintf(stderr, "Tpinit failed\n");
		return -1;
	}

	fmlbuf = (FBFR *)tpalloc((char *)FMLTYPE, NULL, 4096);  /*分配缓存*/
	if (fmlbuf == (FBFR *)NULL)
	{
		tpterm();
		return -1;
	}

	iReturn = Finit(fmlbuf, 4096);

	if(iReturn >= 0)
	{
	    /* 填写tuxedo服务输入数据 */
        iReturn =  
            Fchg(fmlbuf, X_TRANS_CODE,         (FLDOCC)0, (char *)"ITF_BKHQ_GETDEBFEE",             (FLDLEN)0)|
            Fchg(fmlbuf, PROVINCE_CODE,        (FLDOCC)0, (char *)sBasicInput->province_code,       (FLDLEN)0)|
            Fchg(fmlbuf, IN_MODE_CODE,         (FLDOCC)0, (char *)sBasicInput->in_mode_code,        (FLDLEN)0)|
            Fchg(fmlbuf, TRADE_EPARCHY_CODE,   (FLDOCC)0, (char *)sBasicInput->trade_eparchy_code,  (FLDLEN)0)|
            Fchg(fmlbuf, TRADE_CITY_CODE,      (FLDOCC)0, (char *)sBasicInput->trade_city_code,     (FLDLEN)0)|
            Fchg(fmlbuf, TRADE_DEPART_ID,      (FLDOCC)0, (char *)sBasicInput->trade_depart_id,     (FLDLEN)0)|
            Fchg(fmlbuf, TRADE_STAFF_ID,       (FLDOCC)0, (char *)sBasicInput->trade_staff_id,      (FLDLEN)0)|
            Fchg(fmlbuf, TRADE_DEPART_PASSWD,  (FLDOCC)0, (char *)sBasicInput->trade_depart_passwd, (FLDLEN)0);
    }
            
	if (iReturn >= 0)
	{
	    /* 填写服务号码 */
		iReturn =
			    Fchg(fmlbuf, SERIAL_NUMBER,      (FLDOCC)0, (char *)sDebFeeUserInfoInput->serial_number,  (FLDLEN)0)|
                Fchg(fmlbuf, WRITEOFF_MODE,      (FLDOCC)0, (char *)"1",  (FLDLEN)0)|
                Fchg(fmlbuf, REMOVE_TAG,         (FLDOCC)0, (char *)"0",  (FLDLEN)0)|
                Fchg(fmlbuf, RECOVER_TAG,        (FLDOCC)0, (char *)"1",  (FLDLEN)0);
	}

	if (iReturn < 0)
	{
		tpfree((char*)fmlbuf);
		tpterm();
		return -1;
	}
	else
	{
		/* 调用tuxedo服务 */
		iReturn = tpcall("ITF_BKHSVC",(char *)fmlbuf,0,(char **)&fmlbuf,(long *)&lOutLen, TPNOTRAN);
			
		/* 取返回数据 */	
	    if (iReturn >= 0)
	    {
	        /* 取发票数据 */
	        Fget(fmlbuf, SERIAL_NUMBER, (FLDOCC)0, (char *)serialnumber,   (FLDLEN *)NULL);
        	Fget(fmlbuf, SPAY_FEE,      (FLDOCC)0, (char *)spayfee,	       (FLDLEN *)NULL);
        	Fget(fmlbuf, ALLBOWE_FEE,	(FLDOCC)0, (char *)allbowefee,     (FLDLEN *)NULL);
        	Fget(fmlbuf, PAY_NAME,      (FLDOCC)0, (char *)payname,        (FLDLEN *)NULL);
        	Fget(fmlbuf, BRAND,	        (FLDOCC)0, (char *)brand,          (FLDLEN *)NULL);
        	Fget(fmlbuf, LAST_BALANCE,	(FLDOCC)0, (char *)lastbalance,    (FLDLEN *)NULL);
        	Fget(fmlbuf, TOTAL_FEE,	    (FLDOCC)0, (char *)totalfee,       (FLDLEN *)NULL);
        	Fget(fmlbuf, ALLROWE_FEE,	(FLDOCC)0, (char *)allrowefee,     (FLDLEN *)NULL);
        	Fget(fmlbuf, X_ALL_FEE,     (FLDOCC)0, (char *)xallfee,	       (FLDLEN *)NULL);
        	Fget(fmlbuf, X_NEW_BALANCE, (FLDOCC)0, (char *)xnewbalance,    (FLDLEN *)NULL);
        	Fget(fmlbuf, USER_ID,       (FLDOCC)0, (char *)userid,	       (FLDLEN *)NULL);
        	
        	Fget(fmlbuf, ALL_MONEY,     (FLDOCC)0, (char *)allmoney,        (FLDLEN *)NULL);
        	Fget(fmlbuf, ALL_BALANCE,       (FLDOCC)0, (char *)allbalance,  (FLDLEN *)NULL);
        	Fget(fmlbuf, CHARGE_ID,     (FLDOCC)0, (char *)chargeid,        (FLDLEN *)NULL);
        	
        	Fget(fmlbuf, X_RECORDNUM,   (FLDOCC)0, (char *)&lResultrecord,  (FLDLEN *)NULL);
        	Fget(fmlbuf, EPARCHY_CODE,  (FLDOCC)0, (char *)eparchycode,	    (FLDLEN *)NULL);

        	sprintf(sDebFeeUserInfoOutput->spay_fee,       "%s",  spayfee);
        	sprintf(sDebFeeUserInfoOutput->allbowe_fee,    "%s",  allbowefee);
        	sprintf(sDebFeeUserInfoOutput->serial_number,  "%s",  serialnumber);
        	sprintf(sDebFeeUserInfoOutput->pay_name,	   "%s",  payname);
        	sprintf(sDebFeeUserInfoOutput->brand, 	       "%s",  brand);
        	sprintf(sDebFeeUserInfoOutput->last_balance,   "%s",  lastbalance);
        	sprintf(sDebFeeUserInfoOutput->total_fee, 	   "%s",  totalfee);
        	sprintf(sDebFeeUserInfoOutput->allrowe_fee,    "%s",  allrowefee);
        	sprintf(sDebFeeUserInfoOutput->x_all_fee,  	   "%s",  xallfee);
        	sprintf(sDebFeeUserInfoOutput->x_new_balance,  "%s",  xnewbalance);
        	sprintf(sDebFeeUserInfoOutput->all_money,  	   "%s",  allmoney);
        	sprintf(sDebFeeUserInfoOutput->all_balance,    "%s",  allbalance);
        	sprintf(sDebFeeUserInfoOutput->user_id,        "%s",  userid);
        	sprintf(sDebFeeUserInfoOutput->charge_id,      "%s",  chargeid);
            sprintf(sDebFeeUserInfoOutput->eparchy_code,    "%s",  eparchycode);
        	sDebFeeUserInfoOutput->records = lResultrecord;
        	
        	/* 发票打印明细费用项数据 */
        	for(i = 0; i < lResultrecord; i++)
	        {
	            Fget(fmlbuf, INTEGRATE_ITEM_CODE, (FLDOCC)i, (char *)&integrateitemcode,    (FLDLEN *)NULL);
        		Fget(fmlbuf, INTEGRATE_ITEM,	  (FLDOCC)i, (char *)integrateitem,         (FLDLEN *)NULL);
        		Fget(fmlbuf, FEE,                 (FLDOCC)i, (char *)fee,                   (FLDLEN *)NULL);
        
        		sRecvFeeDetailBillInfo[i].integrate_item_code = integrateitemcode;
        		sprintf(sRecvFeeDetailBillInfo[i].integrate_item,      "%s",   integrateitem);
        		sprintf(sRecvFeeDetailBillInfo[i].fee,                 "%s",   fee);
        	}
        	
        	Fget(fmlbuf, X_RESULTCODE,        (FLDOCC)0, (char *)&xresultcode,  (FLDLEN *)NULL);
        	Fget(fmlbuf, X_RESULTINFO,        (FLDOCC)0, (char *)infotemp,      (FLDLEN *)NULL);
        	Fget(fmlbuf, X_RECORDNUM, (FLDOCC)0, (char *)&xrecordnum,           (FLDLEN *)NULL);
        	infotemp[500] = '\0';

        	sBasicOutput->x_resultcode = xresultcode;
        	sprintf(sBasicOutput->x_resultinfo, "%s", infotemp);
        	sBasicOutput->x_recordnum = xrecordnum;
	    }
	}
    
	/* 释放输入、输出缓存,断开tuxedo连接 */
	tpfree((char*)fmlbuf);
	tpterm();

	/* 返回结果 */
	if (iReturn < 0)
	    return -1;

	return 0;
}

⌨️ 快捷键说明

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