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

📄 recvfee.c

📁 用C 语言开发Tuxedo客户端连接程序
💻 C
字号:
#include "stdio.h"#include "string.h"
#include "BankIntf.h"main(int argc,char *argv[]){		int iRet ;
		int i;
		SBasicInput  sBasicInput;
		SRecvFeeInput  sRecvFeeInput;
		SBasicOutput sBasicOutput;
		SRecvFeeOutput recvFeeOutput;
		SRecvFeeDetailBillInfo sRecvFeeDetailBillInfo[50];
        
		strcpy(sBasicInput.province_code,"QHAI");
        strcpy(sBasicInput.in_mode_code,"D");
		strcpy(sBasicInput.trade_eparchy_code,"0898");
		strcpy(sBasicInput.trade_city_code,argv[6]);
        strcpy(sBasicInput.trade_depart_id,"99330");
		strcpy(sBasicInput.trade_staff_id,argv[7]);
        strcpy(sBasicInput.trade_depart_passwd,"0123456789");

	    strcpy(sRecvFeeInput.serial_number,argv[2]);
		strcpy(sRecvFeeInput.writeoff_mode,"1");
		strcpy(sRecvFeeInput.recover_tag,"1");
		strcpy(sRecvFeeInput.x_fpay_fee,argv[3]);
		strcpy(sRecvFeeInput.remove_tag,"0");
        strcpy(sRecvFeeInput.channel_trade_id,argv[5]);
        strcpy(sRecvFeeInput.channel_accept_time,argv[4]);

		//memset((char *)&sBasicInput,0,sizeof(sBasicInput));
		//memset((char *)&sBasicOutput,0,sizeof(sBasicOutput));		tuxputenv("WSNADDR=//135.191.25.225:46500");	
		iRet=fnTRecvFee(&sBasicInput,&sRecvFeeInput,&sBasicOutput,&recvFeeOutput,sRecvFeeDetailBillInfo);
		if (iRet<0)		{			printf("\n[交易执行失败[%d]]\n",iRet);			exit(1);		}
		else
		{
		    printf("%s",argv[1]);  // 2:交费
            printf(";%d",sBasicOutput.x_resultcode);  /*返回结果代码*/
			printf(";%s",sBasicOutput.x_resultinfo); /*返回结果信息*/
			printf(";%d",sBasicOutput.x_recordnum); /*返回结果记录数*/
		
			printf(";%s",recvFeeOutput.serial_number); /*用户号码*/
			printf(";%s",recvFeeOutput.pay_name); /*客户名*/
			printf(";%s",recvFeeOutput.brand);/*用户品牌*/
			printf(";%s",recvFeeOutput.last_balance); /*上月节余*/
			printf(";%s",recvFeeOutput.total_fee); /*上月费用*/
			printf(";%s",recvFeeOutput.allrowe_fee); /*本月费用*/
			printf(";%s",recvFeeOutput.recv_fee); /*本次缴纳 小写*/
			printf(";%s",recvFeeOutput.x_remark1); /*本次缴纳 大写*/
			printf(";%s",recvFeeOutput.all_new_money);  /*交费后预存款*/
			printf(";%s",recvFeeOutput.all_new_balance); 	/*本次节余*/
			printf(";%s",recvFeeOutput.charge_id); /*缴费流水*/
			printf(";%s",recvFeeOutput.recv_time); /*缴费时间*/
			printf(";%s",recvFeeOutput.recv_staff_id); /*收费员工*/
		    printf(";%s",recvFeeOutput.user_id); /*用户标识*/
			printf(";%d",recvFeeOutput.records); /*明细费用项个数*/
		
			for (i=0;i<recvFeeOutput.records;i++)
			{
		     printf(";%d",sRecvFeeDetailBillInfo[i].integrate_item_code); /*综合帐目编码*/
		     printf(";%s",sRecvFeeDetailBillInfo[i].integrate_item); /*综合帐目名称*/
			 printf(";%s",sRecvFeeDetailBillInfo[i].fee); /*帐目金额*/
			}
			exit(1);
		}			}


 	/*-----------------------------------------------------------------------------
 * Function: fnTRecvFee
 * Purpose : 正常收费收费提交
 * Input   :
 *            SBasicInput *                 -- 输入参数,基本输入数据
 *            SRecvFeeInput *               -- 输入参数,提交数据:用户实际缴纳金额/用户交费方式
 *            SBasicOutput *                -- 输出参数,基本输出数据
 *            SRecvFeeOutput *              -- 输出参数,缴费返回数据
 *            sRecvFeeDetailBillInfo[50]    -- 输出参数,帐单明细信息
 * Return  :  0 成功, -1 失败
 * Remark  :
 * Author  : Luxd
 * Date	   : 2004/07/07
 *-----------------------------------------------------------------------------
 */
#if defined(__STDC__) || defined(__cplusplus)			
int  fnTRecvFee(SBasicInput * sBasicInput, SRecvFeeInput * sRecvFeeInput, 
                SBasicOutput * sBasicOutput, SRecvFeeOutput * sRecvFeeOutput, 
                SRecvFeeDetailBillInfo sRecvFeeDetailBillInfo[50])
#else    
int  fnTRecvFee( sBasicInput, sRecvFeeInput, sBasicOutput, sRecvFeeOutput, sRecvFeeDetailBillInfo ) 
     SBasicInput * sBasicInput;
     SRecvFeeInput * sRecvFeeInput;
     SBasicOutput * sBasicOutput;
     SRecvFeeOutput * sRecvFeeOutput;
     SRecvFeeDetailBillInfo sRecvFeeDetailBillInfo[50];    
#endif
{

	FBFR *fmlbuf= (FBFR *) NULL;        /* tuxedo服务调用输入输出缓存 */

	int iReturn, i;
	long lOutLen;
	
	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  recvfee[RECV_FEE_LEN] = "\0";                 /*本次缴纳 小写*/
    char  xremark1[X_REMARK_LEN] = "\0";                /*本次缴纳 大写*/
    char  allnewmoney[ALL_NEW_MONEY_LEN] = "\0";        /*本月缴纳*/
    char  allnewbalance[ALL_NEW_BALANCE_LEN] = "\0";    /*本次节余*/
    char  chargeid[CHARGE_ID_LEN] = "\0";               /*缴费流水*/
    char  recvtime[RECV_TIME_LEN] = "\0";               /*缴费时间*/
    char  recvstaffid[RECV_STAFF_ID_LEN] = "\0";        /*收费员工*/
    char  userid[USER_ID_LEN] = "\0";                   /*用户标识*/
    long  lResultrecord = 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 infotemp[2000];    
    long  chargesourcecode = 37;
	long  payfeemodecode=17;


	
	/* 建立tuxedo连接 */
    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 -2;
	}

	iReturn = Finit(fmlbuf, 4096);

	if(iReturn >= 0)
	{
	    /* 填写tuxedo服务输入数据 */
	    if(strcmp(sBasicInput->trade_staff_id, "ITFUA000") ==0)
	        iReturn =  
                Fchg(fmlbuf, X_TRANS_CODE,         (FLDOCC)0, (char *)"ITF_BKHT_RECVFEE",               (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);
                
	    else
            iReturn =  
                Fchg(fmlbuf, X_TRANS_CODE,         (FLDOCC)0, (char *)"ITF_BKHT_RECVFEE_BANK",          (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 *)sRecvFeeInput->serial_number,          (FLDLEN)0)|
            Fchg(fmlbuf, WRITEOFF_MODE,       (FLDOCC)0, (char *)sRecvFeeInput->writeoff_mode,          (FLDLEN)0)|
            Fchg(fmlbuf, REMOVE_TAG,          (FLDOCC)0, (char *)sRecvFeeInput->remove_tag,             (FLDLEN)0)|
            Fchg(fmlbuf, RECOVER_TAG,         (FLDOCC)0, (char *)sRecvFeeInput->recover_tag,            (FLDLEN)0)|
            Fchg(fmlbuf, X_FPAY_FEE,		  (FLDOCC)0, (char *)sRecvFeeInput->x_fpay_fee,             (FLDLEN)0)|
            Fchg(fmlbuf, CHARGE_SOURCE_CODE,  (FLDOCC)0, (char *)&chargesourcecode,                     (FLDLEN)0)|
            Fchg(fmlbuf, PAY_FEE_MODE_CODE,   (FLDOCC)0, (char *)&payfeemodecode,                       (FLDLEN)0)|
	    	Fchg(fmlbuf, CHANNEL_TRADE_ID,   (FLDOCC)0, (char *)sRecvFeeInput->channel_trade_id,         (FLDLEN)0)|
			Fchg(fmlbuf, CHANNEL_ACCEPT_TIME,   (FLDOCC)0, (char *)sRecvFeeInput->channel_accept_time,      (FLDLEN)0);
           
	}

	if (iReturn < 0)
	{
		tpfree((char*)fmlbuf);
		tpterm();
		return -3;
	}
	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, 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, RECV_FEE,      (FLDOCC)0, (char *)recvfee,         (FLDLEN *)NULL);
        	Fget(fmlbuf, X_REMARK1,	    (FLDOCC)0, (char *)xremark1,        (FLDLEN *)NULL);      	      	
        	Fget(fmlbuf, ALL_NEW_MONEY, (FLDOCC)0, (char *)allnewmoney,     (FLDLEN *)NULL);        	
        	Fget(fmlbuf, ALL_NEW_BALANCE, (FLDOCC)0, (char *)allnewbalance, (FLDLEN *)NULL);
        	Fget(fmlbuf, CHARGE_ID,     (FLDOCC)0, (char *)chargeid,        (FLDLEN *)NULL);
       	    Fget(fmlbuf, RECV_TIME,     (FLDOCC)0, (char *)recvtime,        (FLDLEN *)NULL);
        	Fget(fmlbuf, RECV_STAFF_ID,	(FLDOCC)0, (char *)recvstaffid,     (FLDLEN *)NULL);
        	Fget(fmlbuf, USER_ID,       (FLDOCC)0, (char *)userid,          (FLDLEN *)NULL);
        	
        	Fget(fmlbuf, X_RECORDNUM,   (FLDOCC)0, (char *)&lResultrecord,  (FLDLEN *)NULL);
        	
        	sprintf(sRecvFeeOutput->serial_number,  "%s",  serialnumber);
        	sprintf(sRecvFeeOutput->pay_name,	    "%s",  payname);
        	sprintf(sRecvFeeOutput->brand, 	        "%s",  brand);
        	sprintf(sRecvFeeOutput->last_balance,   "%s",  lastbalance);
        	sprintf(sRecvFeeOutput->total_fee, 	    "%s",  totalfee);
        	sprintf(sRecvFeeOutput->allrowe_fee,    "%s",  allrowefee);       	
        	sprintf(sRecvFeeOutput->recv_fee,       "%s",  recvfee);
        	sprintf(sRecvFeeOutput->x_remark1,      "%s",  xremark1);
        	sprintf(sRecvFeeOutput->all_new_money,  "%s",  allnewmoney);
        	sprintf(sRecvFeeOutput->all_new_balance,"%s",  allnewbalance);
        	sprintf(sRecvFeeOutput->charge_id,      "%s",  chargeid);
        	sprintf(sRecvFeeOutput->recv_time,      "%s",  recvtime);
        	sprintf(sRecvFeeOutput->recv_staff_id,  "%s",  recvstaffid);
        	sprintf(sRecvFeeOutput->user_id,        "%s",  userid);
        	
        	sRecvFeeOutput->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 + -