Exemple #1
0
int F847222(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{

	int ret=0;
	char  ia_buf[1024]="";
	char sMsg[256]="";
	double dUniNo;
	InAcc IA;
	T_t_tif_tradeserial serial;
	T_t_aif_account account;
	T_t_cif_shop shop;
	trade_param_t param;
	int shop_id;
	
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);
	int i;

	ResetNormalCPack(&aPack,0,1);

	shop_id = atoi(rPack->sbank_acc);
	if(shop_id <= 0)
	{
		*pRetCode = E_SHOP_ACTNO_NOT_EXIST;
		goto L_RETU;
	}
	if(strlen(rPack->scard0) <= 0)
	{
		*pRetCode = E_OPER_NOT_EXIST;
		goto L_RETU;
	}
	ret = CheckOperatorPwd(rPack->scard0,rPack->semp_pwd);
	if(ret)
	{
		*pRetCode = ret;
		goto L_RETU;
	}

	memset(&account,0,sizeof account);
	memset(&shop,0,sizeof shop);
	
	ret = DB_t_cif_shop_read_by_shop_id(shop_id,&shop);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode  = E_SHOP_ACTNO_NOT_EXIST;
		else
			*pRetCode = E_DB_SHOP_R;
		goto L_RETU;
	}
	if(strcmp(shop.is_indep, TYPE_YES))
	{
		*pRetCode = E_FAN_SHOP_NOT_INDEP;
		goto L_RETU;
	}
	memset(&IA,0,sizeof IA);
	memset(&param,0,sizeof param);
	param.pIA = &IA;
	IA.pVoidPointer = ia_buf;
	param.shop_id = shop.shop_id;
	param.remain_balance = rPack->damt1;
	
	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniNo);
	if(ret)
	{
		*pRetCode = ret;
		goto L_RETU;
	}
	param.serial_no = D2I(dUniNo);

	//初始化流水记录
	memset(&serial,0,sizeof serial);
	serial.serial_no = param.serial_no;
	serial.serial_state = SERISTAT_DEBT;
	serial.serial_type = TXCODE_FAN_BALANCE;
	// 借用显示卡号字段保存商户号
	sprintf(serial.showid,"%d",param.shop_id);
	getsysdate(serial.operate_date);
	getsystime(serial.operate_time);
	des2src(serial.collect_date,serial.operate_date);
	des2src(serial.collect_time,serial.operate_time);
	des2src(serial.enteract_date,serial.operate_date);
	des2src(serial.enteract_time,serial.operate_time);

	des2src(serial.oper_code,rPack->scard0);
	des2src(serial.reserve_1,rPack->scert_addr);
	serial.in_balance = param.remain_balance;
	serial.trade_fee = param.remain_balance;

	des2src(param.tx_date,serial.operate_date);
	des2src(param.tx_time,serial.operate_time);
	des2src(param.oper_code,rPack->scard0);
	
	ret = do_parse_shop(&param);
	if(ret)
	{
		writelog(LOG_ERR,"商户解款失败shop[%d] ret [%d]",param.shop_id,ret);
		*pRetCode = ret;
		goto L_RETU;
	}
	
	SetCol(handle,0);
	SetCol(handle,F_VSMESS,F_LVOL1,F_DAMT1,0);
	sprintf(out_pack->vsmess,"流水号:%d ",IA.iSerialNo);
	for(i=1;i<=IA.iOutTxTypeCnt;i++)
	{
		if(amtcmp(IA.dArrOutAmt[i],0)!=0)
		{
			//sprintf(sMsg,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
			//strcat(out_pack->vsmess,sMsg);
			writelog(LOG_INFO,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
		}
	}
	out_pack->lvol1 = IA.iSerialNo;
	out_pack->damt1 = param.free_balance;
	//strcat(out_pack->vsmess,IA.pVoidPointer);
	writelog(LOG_DEBUG,out_pack->vsmess);
	
	//保存流水
	ret = DB_t_tif_tradeserial_add(&serial);
	if(ret)
	{
		if(DB_REPEAT == ret)
			return E_DB_TRADESERIAL_E;
		else
			return E_DB_TRADESERIAL_I;
		goto L_RETU;
	}
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
	
L_RETU:
	return -1;
}
int F847221(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{

	int ret=0;
	double 	tx_money = 0.0;
	char  ia_buf[1024]="";
	char sMsg[256]="";
	double	dUniNo = 0;
	T_t_tif_tradeserial serial;
	T_t_tif_tradeserial old_serial;
	T_t_group_cash_report group_cash;
	T_t_groups groups;
	InAcc IA;
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);
	int i;

	ResetNormalCPack(&aPack,0,1);

	if(strlen(rPack->scard0) <= 0)
	{
		*pRetCode = E_NOTEXIST_OPER;
		goto L_RETU;
	}
	ret = CheckOperatorPwd(rPack->scard0,rPack->semp_pwd);
	if(ret)
	{
		*pRetCode = ret;
		goto L_RETU;
	}

	if(rPack->lvol1 <= 0)
	{
		*pRetCode = E_FAN_SERIAL_NOT_EXISTS;
		goto L_RETU;
	}

	// 更新被冲正流水的状态
	memset(&old_serial,0,sizeof old_serial);
	ret = DB_t_tif_tradeserial_read_lock_by_cur_and_serial_no(rPack->lvol1,&old_serial);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_FAN_SERIAL_NOT_EXISTS;
		else
			*pRetCode = E_DB_TRADESERIAL_R;
		goto L_RETU;
	}

	if(SERISTAT_RUSH == old_serial.serial_state)
	{
		writelog(LOG_ERR,"流水已被冲正,流水号[%d]",old_serial.serial_no);
		*pRetCode = E_FAN_ALREADY_RUSHED;
		DB_t_tif_tradeserial_free_lock_cur();
		goto L_RETU;
	}

	old_serial.serial_state = SERISTAT_RUSH;
	ret = DB_t_tif_tradeserial_update_lock_by_cur(&old_serial);
	if(ret)
	{
		writelog(LOG_ERR,"更新流水[%d]状态失败",old_serial.serial_no);
		*pRetCode = E_DB_TRADESERIAL_U;
		goto L_RETU;
	}
	DB_t_tif_tradeserial_free_lock_cur();

	tx_money = old_serial.trade_fee;
	// 生成新的冲正流水
	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniNo);
	if(ret)
	{
		*pRetCode = ret;
		goto L_RETU;
	}
	// 查询组可解款余额
	memset(&group_cash,0,sizeof group_cash);
	ret = DB_t_group_cash_report_read_lock_by_c1_and_groupid(old_serial.showid,&group_cash);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_FAN_ACC_NOT_EXISTS;
		else
			*pRetCode = E_DB_GRP_CASH_RPT_R;
		goto L_RETU;
	}
	
	/*
	if(amtcmp(tx_money,group_cash.cur_money)>0)
	{
		*pRetCode = E_FAN_ACC_INSUFFICIENT;
		DB_t_group_cash_report_free_lock_by_c1();
		goto L_RETU;
	}
	*/

	// 生成流水
	memset(&serial,0,sizeof serial);
	serial.serial_no = (int)dUniNo;
	serial.serial_state = SERISTAT_DEBT;
	serial.serial_type = TXCODE_FAN_RUSH_PAY;
	getsysdate(serial.operate_date);
	getsystime(serial.operate_time);
	des2src(serial.collect_date,serial.operate_date);
	des2src(serial.collect_time,serial.operate_time);
	GetLogicDate(serial.enteract_date);
	des2src(serial.enteract_time,serial.operate_time);

	des2src(serial.opercode,rPack->scard0);
	des2src(serial.reserve_1,rPack->scert_addr);
	serial.cardbefbal = tx_money;
	serial.trade_fee = tx_money * -1;
	// 商户号
	des2src(serial.showid,old_serial.showid);

	// 入账
	memset(&IA,0,sizeof IA);
	IA.dArrInAmt[0] = serial.trade_fee;
	IA.iCardNo = 0;
	//收费类别为 1
	IA.iFeeType = 1;
	IA.iTxFlag = ACC_TYPE_RUSH;
	IA.pVoidPointer = ia_buf;
	ret = process(&IA,&serial);
	if(ret)
	{
		writelog(LOG_ERR,"account process error [%d]",ret);
		*pRetCode  = ret;
		DB_t_group_cash_report_free_lock_by_c1();
		goto L_RETU;
	}
	SetCol(handle,0);
	SetCol(handle,F_VSMESS,F_LVOL1,F_DAMT1,F_DAMT2,F_SBANK_ACC,0);
	
	sprintf(out_pack->vsmess,"流水号:%d ",IA.iSerialNo);
	for(i=1;i<=IA.iOutTxTypeCnt;i++)
	{
		if(amtcmp(IA.dArrOutAmt[i],0)!=0)
		{
			sprintf(sMsg,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
			strcat(out_pack->vsmess,sMsg);
		}
	}
	
	strcat(out_pack->vsmess,(char*)IA.pVoidPointer);
	writelog(LOG_DEBUG,out_pack->vsmess);

	des2src(group_cash.last_check_date,serial.operate_date);
	des2src(group_cash.last_check_time,serial.operate_time);
	group_cash.cur_money = group_cash.cur_money + tx_money;
	out_pack->lvol1 = serial.serial_no;
	out_pack->damt1 = serial.trade_fee;
	out_pack->damt2 = group_cash.cur_money;

	//更新组未解款金额
	ret = DB_t_group_cash_report_update_lock_by_c1(&group_cash);
	if(ret)
	{
		*pRetCode = E_DB_GRP_CASH_RPT_U;
		goto L_RETU;
	}
	// add
	DB_t_group_cash_report_free_lock_by_c1();
	ret = DB_t_groups_read_by_groupid(group_cash.groupid,&groups);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_DB_GROUP_N;
		else
			*pRetCode = E_DB_GROUP_R;
		goto L_RETU;
	}
	des2src(out_pack->sbank_acc,groups.group_acc);
	//保存流水
	ret = DB_t_tif_tradeserial_add(&serial);
	if(ret)
	{
		if(DB_REPEAT == ret)
			return E_DB_TRADESERIAL_E;
		else
			return E_DB_TRADESERIAL_I;
		goto L_RETU;
	}
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
	
L_RETU:
	return -1;
}
Exemple #3
0
int F847220(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{

    int ret=0;
    double 	tx_money = 0.0;
    char  ia_buf[1024]="";
    char sMsg[256]="";
    double	dUniNo = 0;
    T_t_tif_tradeserial serial;
    T_t_group_cash_report group_cash;
    int groupid;
    T_t_groups groups;
    InAcc IA;
    ST_CPACK aPack;
    ST_PACK *out_pack = &(aPack.pack);
    int i;

    ResetNormalCPack(&aPack,0,1);

    if(strlen(rPack->scard0) <= 0)
    {
        *pRetCode = E_NOTEXIST_OPER;
        goto L_RETU;
    }
    ret = CheckOperatorPwd(rPack->scard0,rPack->semp_pwd);
    if(ret)
    {
        writelog(LOG_ERR,"操作员密码错误operator[%s]",rPack->scard0);
        *pRetCode = ret;
        goto L_RETU;
    }

    if(strlen(rPack->sbank_acc) <= 0)
    {
        *pRetCode = E_NOTEXIST_ACCNO;
        goto L_RETU;
    }

    tx_money = rPack->damt1;
    if(amtcmp(tx_money,0.0)<=0)
    {
        *pRetCode = E_INPUT_AMT;
        goto L_RETU;
    }

    memset(&groups,0,sizeof groups);

    //ret = DB_t_groups_read_by_group_acc(rPack->sbank_acc,&groups);
    ret = DB_t_groups_read_by_groupid(rPack->sbank_acc,&groups);
    if(ret)
    {
        if(DB_NOTFOUND == ret)
            *pRetCode = E_NOTEXIST_ACCNO;
        else
            *pRetCode = E_DB_GROUP_R;
        goto L_RETU;
    }

    ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniNo);
    if(ret)
    {
        *pRetCode = ret;
        goto L_RETU;
    }

    // 查询组可解款余额
    memset(&group_cash,0,sizeof group_cash);
    ret = DB_t_group_cash_report_read_lock_by_c1_and_groupid(groups.groupid,&group_cash);
    if(ret)
    {
        if(DB_NOTFOUND == ret)
            *pRetCode = E_FAN_ACC_NOT_EXISTS;
        else
            *pRetCode = E_DB_GRP_CASH_RPT_R;
        goto L_RETU;
    }

    if(amtcmp(tx_money,group_cash.cur_money)>0)
    {
        writelog(LOG_ERR,"操作员组余额[%.2lf], 解款金额[%.2lf]",group_cash.cur_money,tx_money);
        *pRetCode = E_FAN_ACC_INSUFFICIENT;
        DB_t_group_cash_report_free_lock_by_c1();
        goto L_RETU;
    }

    // 生成流水
    memset(&serial,0,sizeof serial);
    serial.serial_no = D2I(dUniNo);
    serial.serial_state = SERISTAT_DEBT;
    serial.serial_type = TXCODE_FAN_PAY_MONEY;
    getsysdate(serial.operate_date);
    getsystime(serial.operate_time);
    des2src(serial.collect_date,serial.operate_date);
    des2src(serial.collect_time,serial.operate_time);
    GetLogicDate(serial.enteract_date);
    des2src(serial.enteract_time,serial.operate_time);

    des2src(serial.opercode,rPack->scard0);
    des2src(serial.reserve_1,rPack->scert_addr);
    serial.cardbefbal = tx_money;
    serial.trade_fee = tx_money;
    des2src(serial.showid,group_cash.groupid);

    // 入账
    memset(&IA,0,sizeof IA);
    //IA.dInCardBala = serial.cardbefbal;
    IA.dArrInAmt[0] = serial.trade_fee;
    IA.iCardNo = 0;
    //收费类别为 1
    IA.iFeeType = 1;
    IA.pVoidPointer = ia_buf;
    ret = process(&IA,&serial);
    if(ret)
    {
        writelog(LOG_ERR,"入账失败ret [%d]",ret);
        *pRetCode  = ret;
        DB_t_group_cash_report_free_lock_by_c1();
        goto L_RETU;
    }
    SetCol(handle,0);
    SetCol(handle,F_VSMESS,F_LVOL1,F_DAMT1,0);

    sprintf(out_pack->vsmess,"流水号:%d ",IA.iSerialNo);
    for(i=1; i<=IA.iOutTxTypeCnt; i++)
    {
        if(amtcmp(IA.dArrOutAmt[i],0)!=0)
        {
            sprintf(sMsg,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
            strcat(out_pack->vsmess,sMsg);
        }
    }
    //serial.cardaftbal =
    strcat(out_pack->vsmess,(char*)IA.pVoidPointer);
    writelog(LOG_DEBUG,out_pack->vsmess);
    out_pack->lvol1 = serial.serial_no;
    group_cash.cur_money = group_cash.cur_money - serial.trade_fee;

    des2src(group_cash.last_check_date,serial.operate_date);
    des2src(group_cash.last_check_time,serial.operate_time);
    out_pack->damt1 = group_cash.cur_money;

    //更新组未解款金额
    ret = DB_t_group_cash_report_update_lock_by_c1(&group_cash);
    if(ret)
    {
        *pRetCode = E_DB_GRP_CASH_RPT_U;
        goto L_RETU;
    }
    // add
    DB_t_group_cash_report_free_lock_by_c1();
    //保存流水
    ret = DB_t_tif_tradeserial_add(&serial);
    if(ret)
    {
        if(DB_REPEAT == ret)
            return E_DB_TRADESERIAL_E;
        else
            return E_DB_TRADESERIAL_I;
        goto L_RETU;
    }
    PutRow(handle,out_pack,pRetCode,szMsg);
    return 0;
L_RETU:
    return -1;
}
Exemple #4
0
int F847224(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{

	int ret=0;
	T_t_shop shop;
	int shop_id;
	
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);

	ResetNormalCPack(&aPack,0,1);

	writelog(LOG_DEBUG,"操作员[%s]",rPack->scard0);
	shop_id = atoi(rPack->sbank_acc);
	if(shop_id <= 0)
	{
		*pRetCode = E_SHOP_ACTNO_NOT_EXIST;
		goto L_RETU;
	}
	if(strlen(rPack->scard0) <= 0)
	{
		*pRetCode = E_OPER_NOT_EXIST;
		goto L_RETU;
	}
	ret = CheckOperatorPwd(rPack->scard0,rPack->semp_pwd);
	if(ret)
	{
		writelog(LOG_DEBUG,"检查操作员密码错误[%s]",rPack->scard0);
		*pRetCode = ret;
		goto L_RETU;
	}
	writelog(LOG_DEBUG,"计算商户余额shopid[%d]",shop_id);
	shop_id = strtoul(rPack->sbank_acc,NULL,10);
	memset(&shop,0,sizeof shop);
	ret =DB_t_shop_read_by_shop_id(shop_id,&shop);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_DB_SHOP_N;
		else
			*pRetCode =  E_DB_SHOP_R;
		goto L_RETU;
	}

	if(strcmp(shop.is_indep,TYPE_YES))
	{
		*pRetCode = E_FAN_SHOP_NOT_INDEP;
		goto L_RETU;
	}
	
	SetCol(handle,0);
	SetCol(handle,F_DAMT1,0);

	ret = do_calc_shop_balance(shop.shop_id,&(out_pack->damt1));
	if(ret)
	{
		writelog(LOG_DEBUG,"计算商户余额错误shopid[%d]",shop.shop_id);
		*pRetCode = ret;
		goto L_RETU;
	}
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
	
L_RETU:
	return -1;
}
Exemple #5
0
int F847223(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{

	int ret=0;
	char  ia_buf[1024]="";
	char sMsg[256]="";
	int rows;
	double dUniNo;
	InAcc IA;
	T_t_tif_tradelog tradelog;
	T_t_tif_tradeserial serial;
	T_t_tif_tradeserial old_serial;
	int shop_id;
	int i;
	
	ST_CPACK aPack;
	ST_PACK *out_pack = &(aPack.pack);

	ResetNormalCPack(&aPack,0,1);


	if(strlen(rPack->scard0) <= 0)
	{
		*pRetCode = E_OPER_NOT_EXIST;
		goto L_RETU;
	}
	ret = CheckOperatorPwd(rPack->scard0,rPack->semp_pwd);
	if(ret)
	{
		*pRetCode = ret;
		goto L_RETU;
	}
	memset(&old_serial,0,sizeof old_serial);
	writelog(LOG_DEBUG,"rush log serial no[%d]",rPack->lvol1);
	ret = DB_t_tif_tradeserial_read_lock_by_cur_and_serial_no(rPack->lvol1,&old_serial);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_FAN_SERIAL_NOT_EXISTS;
		else
			*pRetCode = E_DB_TRADESERIAL_N;
		goto L_RETU;
	}
	if(SERISTAT_RUSH == old_serial.serial_state)
	{
		DB_t_tif_tradeserial_free_lock_cur();
		writelog(LOG_ERR,"流水重复冲正,serial[%d] operator[%s]"
			,old_serial.serial_no,rPack->scard0);
		*pRetCode = E_FAN_ALREADY_RUSHED;
		goto L_RETU;
	}
	old_serial.serial_state = SERISTAT_RUSH;
	ret = DB_t_tif_tradeserial_update_lock_by_cur(&old_serial);
	if(ret)
	{
		writelog(LOG_ERR,"流水状态更新失败");
		*pRetCode = E_DB_TRADESERIAL_U;
		goto L_RETU;
	}
	DB_t_tif_tradeserial_free_lock_cur();
	//////////////////////////////////////////////////////////////////////////////////
	ret = getNewUniqNo(KEYTYPE_TRADESERIAL,&dUniNo);
	if(ret)
	{
		*pRetCode = ret;
		goto L_RETU;
	}
	//初始化流水记录
	memset(&serial,0,sizeof serial);
	serial.serial_no = D2I(dUniNo);
	serial.serial_state = SERISTAT_DEBT;
	serial.serial_type = TXCODE_FAN_RUSH_BALANCE;
	GetLogicDate(serial.operate_date);
	getsystime(serial.operate_time);
	getsysdate(serial.collect_date);
	des2src(serial.collect_time,serial.operate_time);
	des2src(serial.enteract_date,serial.collect_date);
	des2src(serial.enteract_time,serial.operate_time);

	des2src(serial.oper_code,rPack->scard0);
	des2src(serial.reserve_1,rPack->scert_addr);
	serial.in_balance = serial.trade_fee;
	des2src(serial.showid,old_serial.showid);
	
	// 查询流水明细
	ret = DB_t_tif_tradelog_open_select_by_c2_and_serino_and_seri_type_and_outorin(
		old_serial.serial_no,old_serial.serial_type,DBCR_DEBIT);
	if(ret)
	{
		if(DB_NOTFOUND == ret)
			*pRetCode = E_FAN_SERIAL_NOT_EXISTS;
		else
			*pRetCode = E_DB_TRADELOG_R;
		goto L_RETU;
	}
	rows= 0;
	memset(&IA,0,sizeof IA);
	while(1)
	{
		memset(&tradelog,0,sizeof tradelog);
		ret = DB_t_tif_tradelog_fetch_select_by_c2(&tradelog);
		if(ret)
		{
			if(DB_NOTFOUND == ret)
			{
				if(rows > 0)
					break;
				else
					*pRetCode = E_FAN_SERIAL_NOT_EXISTS;
			}
			else
				*pRetCode = E_DB_TRADELOG_R;
			goto L_RETU;
		}
		rows++;
		ret = do_rush_balance(&tradelog,&IA,&serial);
		if(ret)
		{
			DB_t_tif_tradelog_close_select_by_c2();
			*pRetCode = ret;
			goto L_RETU;
		}
	}

	SetCol(handle,0);
	SetCol(handle,F_VSMESS,F_LVOL1,F_DAMT1,F_DAMT2,F_SBANK_ACC,0);
	sprintf(out_pack->vsmess,"流水号:%d ",IA.iSerialNo);
	for(i=1;i<=IA.iOutTxTypeCnt;i++)
	{
		if(amtcmp(IA.dArrOutAmt[i],0)!=0)
		{
			//sprintf(sMsg,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
			//strcat(out_pack->vsmess,sMsg);
			writelog(LOG_INFO,"%s:%.2lf元 ",IA.sArrOutTxName[i],IA.dArrOutAmt[i]);
		}
	}
	out_pack->lvol1 = serial.serial_no;
	// 冲正金额
	out_pack->damt1 = serial.trade_fee;
	des2src(out_pack->sbank_acc,old_serial.showid);
	// 计算商户余额
	shop_id = strtoul(old_serial.showid,NULL,10);
	ret = do_calc_shop_balance(shop_id,&(out_pack->damt2));
	if(ret)
	{
		writelog(LOG_ERR,"计算商户余额失败ret[%d]",ret);
		*pRetCode = ret;
		goto L_RETU;
	}
	//strcat(out_pack->vsmess,IA.pVoidPointer);
	writelog(LOG_DEBUG,out_pack->vsmess);

	serial.trade_fee *= -1;
	//保存流水
	ret = DB_t_tif_tradeserial_add(&serial);
	if(ret)
	{
		if(DB_REPEAT == ret)
			return E_DB_TRADESERIAL_E;
		else
			return E_DB_TRADESERIAL_I;
		goto L_RETU;
	}
	PutRow(handle,out_pack,pRetCode,szMsg);
	return 0;
	
L_RETU:
	return -1;
}