CashWithdrawReverse

来源:互联网 发布:红旗linux证书 编辑:程序博客网 时间:2024/05/19 19:34
/* Fuction  :  Data_CashWithdrawalReversal_RQ * Action   :  CashWithdrawalReversalRequest * Input    : * Output   : * Author   : * Date     : 2014/11/06 */intData_CashWithdrawalReversal_RQ(){    EXEC SQL BEGIN DECLARE SECTION;    AP_JOURNAL origjnl;    char OrignSysTraceNo[6+1];    char origTranDTime[10+1];    EXEC SQL END DECLARE SECTION;    char entry[ENTRY_ROW][ENTRY_COL];    int entry_count = 0;    int i =0;    struct S_CSTM_REVER_INFO s_cstm_rever_info[1];    char AccNum[10+1];    double tmp_tran_amt = 0.00;    double tmp_tran_amt2 = 0.00;        char pwd[6+1];    char pwd_enc[6+1];    char record_idx[200+1];    int ret = -1;    int rellen = 0;    char tmp_str[100+1];    char currtype[2+1];     char pbjourno[10+1];    char hostjourno[10+1];    char listjourno[10+1];    char trandate[8+1];    char PAccNum[99+1];    char ProcCode[6+1];    char tran_amt[12];    char tran_date_time[10+1];    char sys_trace_num[6+1];    char local_time[6+1];    char local_tran_date[4+1];    char expiry_date[4+1];    char settle_date[4+1];    char merchant_type[4+1];    char acq_ins_cou_code[3+1];    char ser_entry_mod[3+1];    char ser_cond_code[2+1];    char tran_fee[9+1];    char acq_ins_id[99+1];    char track2_data[99+1];    char retr_ref_num[12+1];    char resp_code[2+1];    char card_accp_termid[8+1];    char card_accp_id[15+1];    char card_accp_name_loc[40+1];    char tran_curr_code[3+1];    char orig_data_ele[42+1];    char origMsgType[4+1];    char origRecvInstCode[11+1];    char origSndInstCode[11+1];    char card_id[19+1];    char filename[50+1];    char filepath[128+1];    char fullfilepath[256+1];    FILE *fp = NULL;    char strbuf[10240+1];    char loc_sndpkg_time[10+1];    memset(entry,0,sizeof(entry));    memset(AccNum,0,sizeof(AccNum));    memset(&s_cstm_rever_info,0x00,sizeof(s_cstm_rever_info));    memset(pwd,0,sizeof(pwd));    memset(pwd_enc,0,sizeof(pwd_enc));    memset(record_idx,0,sizeof(record_idx));        memset(tmp_str, 0x00, sizeof(tmp_str));    memset(currtype, 0x00,sizeof(currtype));    memset(pbjourno, 0x00, sizeof(pbjourno));    memset(hostjourno, 0x00, sizeof(hostjourno));    memset(listjourno, 0x00, sizeof(listjourno));    memset(trandate, 0x00, sizeof(trandate));    memset(PAccNum,0x00,sizeof(PAccNum));    memset(ProcCode,0x00,sizeof(ProcCode));    memset(tran_amt,0x00,sizeof(tran_amt));    memset(tran_date_time,0x00,sizeof(tran_date_time));    memset(sys_trace_num,0x00,sizeof(sys_trace_num));    memset(local_time,0x00,sizeof(local_time));    memset(local_tran_date,0x00,sizeof(local_tran_date));    memset(expiry_date,0x00,sizeof(expiry_date));    memset(settle_date,0x00,sizeof(settle_date));    memset(merchant_type,0x00,sizeof(merchant_type));    memset(acq_ins_cou_code,0x00,sizeof(acq_ins_cou_code));    memset(ser_entry_mod,0x00,sizeof(ser_entry_mod));    memset(ser_cond_code,0x00,sizeof(ser_cond_code));    memset(tran_fee,0x00,sizeof(tran_fee));    memset(acq_ins_id,0x00,sizeof(acq_ins_id));    memset(track2_data,0x00,sizeof(track2_data));    memset(retr_ref_num,0x00,sizeof(retr_ref_num));    memset(resp_code,0x00,sizeof(resp_code));    memset(card_accp_termid,0x00,sizeof(card_accp_termid));    memset(card_accp_id,0x00,sizeof(card_accp_id));    memset(card_accp_name_loc,0x00,sizeof(card_accp_name_loc));    memset(tran_curr_code,0x00,sizeof(tran_curr_code));    memset(orig_data_ele,0x00,sizeof(orig_data_ele));    memset(&origjnl, 0x00, sizeof(&origjnl));    memset(card_id, 0x00, sizeof(card_id));    memset(loc_sndpkg_time, 0x00, sizeof(loc_sndpkg_time));    memset(OrignSysTraceNo, 0x00, sizeof(OrignSysTraceNo));    memset(origTranDTime, 0x00, sizeof(origTranDTime));    memset(origMsgType, 0x00, sizeof(origMsgType));    memset(origRecvInstCode, 0x00, sizeof(origRecvInstCode));    memset(origSndInstCode, 0x00, sizeof(origSndInstCode));    ret = GetSndPkgTime8583(loc_sndpkg_time);    if(ret==PB_ERR)    {        WriteLog(ERR_LVL, "生成8583报文中发报时间错误");        return PB_ERR;    }    WriteLog(ERR_LVL, "loc_sndpkg_time [%s]", loc_sndpkg_time);    WriteLog(ERR_LVL,"========= Data_CashWithdrawalReversal_RQ[001004] begin =========");    /* Get the data */    Get_pbjourno(pbjourno,hostjourno,listjourno);    GetPoolDataByName("PBSYS", "PbDate", 0, 0, trandate, &rellen );    trim(pbjourno);    trim(hostjourno);    trim(listjourno);    trim(trandate);    WriteLog(ERR_LVL,"pbjourno[%s]",pbjourno);    WriteLog(ERR_LVL,"hostjourno[%s]",hostjourno);    WriteLog(ERR_LVL,"listjourno[%s]",listjourno);    WriteLog(ERR_LVL,"trandate[%s]",trandate);    GetPoolDataByName("Bconnex8583","PAccNum",0,0,PAccNum,&rellen);    GetPoolDataByName("Bconnex8583","ProcCode",0,0,ProcCode,&rellen);    GetPoolDataByName("Bconnex8583","tran_amt",0,0,tran_amt,&rellen);    GetPoolDataByName("Bconnex8583","tran_date_time",0,0,tran_date_time,&rellen);    GetPoolDataByName("Bconnex8583","sys_trace_num",0,0,sys_trace_num,&rellen);    GetPoolDataByName("Bconnex8583","local_time",0,0,local_time,&rellen);    GetPoolDataByName("Bconnex8583","local_tran_date",0,0,local_tran_date,&rellen);    GetPoolDataByName("Bconnex8583","expiry_date",0,0,expiry_date,&rellen);    GetPoolDataByName("Bconnex8583","settle_date",0,0,settle_date,&rellen);    GetPoolDataByName("Bconnex8583","merchant_type",0,0,merchant_type,&rellen);    GetPoolDataByName("Bconnex8583","acq_ins_cou_code",0,0,acq_ins_cou_code,&rellen);    GetPoolDataByName("Bconnex8583","ser_entry_mod",0,0,ser_entry_mod,&rellen);    GetPoolDataByName("Bconnex8583","ser_cond_code",0,0,ser_cond_code,&rellen);    GetPoolDataByName("Bconnex8583","tran_fee",0,0,tran_fee,&rellen);    GetPoolDataByName("Bconnex8583","acq_ins_id",0,0,acq_ins_id,&rellen);    GetPoolDataByName("Bconnex8583","track2_data",0,0,track2_data,&rellen);    GetPoolDataByName("Bconnex8583","retr_ref_num",0,0,retr_ref_num,&rellen);    GetPoolDataByName("Bconnex8583","resp_code",0,0,resp_code,&rellen);    GetPoolDataByName("Bconnex8583","card_accp_termid",0,0,card_accp_termid,&rellen);    GetPoolDataByName("Bconnex8583","card_accp_id",0,0,card_accp_id,&rellen);    GetPoolDataByName("Bconnex8583","card_accp_name_loc",0,0,card_accp_name_loc,&rellen);    GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen);    GetPoolDataByName("Bconnex8583","orig_data_ele",0,0,orig_data_ele,&rellen);    GetPoolDataByName("Bconnex8583","tran_curr_code",0,0,tran_curr_code,&rellen);    GetPoolDataByName("Bconnex8583","orig_data_ele",0,0,orig_data_ele,&rellen);    PutPoolDataByName("Bconnex8583","resp_code", 0, 0, "06", 0); //如果流程出错,则为resp_code赋值    rtrim(PAccNum);    rtrim(ProcCode);    rtrim(tran_amt);    rtrim(tran_date_time);    rtrim(sys_trace_num);    rtrim(local_time);    rtrim(local_tran_date);    rtrim(expiry_date);    rtrim(settle_date);    rtrim(merchant_type);    rtrim(acq_ins_cou_code);    rtrim(ser_entry_mod);    rtrim(ser_cond_code);    rtrim(tran_fee);    rtrim(acq_ins_id);    rtrim(track2_data);    rtrim(retr_ref_num);    rtrim(resp_code);    rtrim(card_accp_termid);    rtrim(card_accp_id);    rtrim(card_accp_name_loc);    rtrim(tran_curr_code);    rtrim(orig_data_ele);    WriteLog(ERR_LVL,"PAccNum[%s]",PAccNum);    WriteLog(ERR_LVL,"ProcCode[%s]",ProcCode);    WriteLog(ERR_LVL,"tran_amt[%s]",tran_amt);    WriteLog(ERR_LVL,"tran_date_time[%s]",tran_date_time);    WriteLog(ERR_LVL,"sys_trace_num[%s]",sys_trace_num);    WriteLog(ERR_LVL,"local_time[%s]",local_time);    WriteLog(ERR_LVL,"local_tran_date[%s]",local_tran_date);    WriteLog(ERR_LVL,"expiry_date[%s]",expiry_date);    WriteLog(ERR_LVL,"settle_date[%s]",settle_date);    WriteLog(ERR_LVL,"merchant_type[%s]",merchant_type);    WriteLog(ERR_LVL,"acq_ins_cou_code[%s]",acq_ins_cou_code);    WriteLog(ERR_LVL,"ser_entry_mod[%s]",ser_entry_mod);    WriteLog(ERR_LVL,"ser_cond_code[%s]",ser_cond_code);    WriteLog(ERR_LVL,"tran_fee[%s]",tran_fee);    WriteLog(ERR_LVL,"acq_ins_id[%s]",acq_ins_id);    WriteLog(ERR_LVL,"track2_data[%s]",track2_data);    WriteLog(ERR_LVL,"retr_ref_num[%s]",retr_ref_num);    WriteLog(ERR_LVL,"resp_code[%s]",resp_code);    WriteLog(ERR_LVL,"card_accp_termid[%s]",card_accp_termid);    WriteLog(ERR_LVL,"card_accp_id[%s]",card_accp_id);    WriteLog(ERR_LVL,"card_accp_name_loc[%s]",card_accp_name_loc);    WriteLog(ERR_LVL,"tran_curr_code[%s]",tran_curr_code);    WriteLog(ERR_LVL,"orig_data_ele[%s]",orig_data_ele);    get_in_currtype(tran_curr_code, currtype);    WriteLog(ERR_LVL, "发送到核心的币种为[%s]", currtype);    memcpy(card_id, track2_data+1, 19);    memcpy(origMsgType, orig_data_ele, 4);    memcpy(card_id, track2_data+1, 19);    memcpy(origMsgType, orig_data_ele, 4);    memcpy(OrignSysTraceNo, orig_data_ele+4, 6);    memcpy(origTranDTime, orig_data_ele+10, 10);     memcpy(origRecvInstCode, orig_data_ele+20, 11);    memcpy(origSndInstCode, orig_data_ele+31,11);        WriteLog(ERR_LVL, "Original massage type is [%s]\n", origMsgType);    WriteLog(ERR_LVL, "Original system trace audit number is [%s]\n", OrignSysTraceNo);    WriteLog(ERR_LVL, "OrigTran date and time is [%s]", origTranDTime);    WriteLog(ERR_LVL, "Original acquirer institution identification code is [%s]\n", origRecvInstCode);    WriteLog(ERR_LVL, "Original forwarding institution identification code is [%s]", origSndInstCode);        /**********hsm test************/    char pin_block[6+1];    char mingwen[6+1];    unsigned char pin_data[16+1];    unsigned char sPinOut2[17];        memset(pin_block,0x00,sizeof(pin_data));    memset(mingwen,0x00,sizeof(mingwen));    memset(pin_data,0x00,sizeof(pin_data));    memset(sPinOut2,0x00,sizeof(sPinOut2));    memcpy(pin_block,"111111",6);    WriteLog(ERR_LVL,"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&test&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");    WriteLog(ERR_LVL,"pin_block[%s]",pin_block);        ret = Data_encry_new(pin_data,card_id,pin_block);    if(ret !=0)    {        WriteLog(ERR_LVL,"call Data_encry failed!");        Pb_ReturnClient8583("96");        return PB_ERR;    }    trim(pin_data);    WriteLog(ERR_LVL,"pin_data=[%s]",pin_data);        ret = Data_decry_new(pin_data,card_id,mingwen);    if(ret !=0)    {        WriteLog(ERR_LVL,"call Data_decry failed!");        Pb_ReturnClient8583("96");        return PB_ERR;    }    trim(mingwen);    WriteLog(ERR_LVL,"mingwen=[%s]",mingwen);        WriteLog(ERR_LVL,"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&test&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");    /**********hsm test************/        WriteLog(ERR_LVL,"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&test&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");    /******* 密码软加密 *************/    memcpy(pwd,mingwen,6);     ret = CrtCstmPwd(pwd,pwd_enc);    if( ret != PB_OK )    {        WriteLog( ERR_LVL ,"Err CrtCstmPwd ");        Pb_ReturnClient8583("06");        return PB_ERR;    }    WriteLog( ERR_LVL ,"pwd[%s]   pwd_enc[%s]",pwd,pwd_enc);    WriteLog(ERR_LVL,"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&test&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");    /**** 查询原交易是否存在 ********/    EXEC SQL SELECT * INTO :origjnl        FROM T_AP_JOURNAL        WHERE rltseqno = :OrignSysTraceNo        AND hststlmdtime = :origTranDTime        AND transtat = '0';    if(SQLCODE!= 0)    {        WriteLog(ERR_LVL, "Search orignal transacation error! rltseqno[%s], hststlmdtime[%s], SQLCODE is [%d]", OrignSysTraceNo, origTranDTime, SQLCODE);        return PB_ERR;    }    WriteLog(ERR_LVL, "select table t_ap_journal successflly! sqlcode=[%d]", SQLCODE);    /******* 取出原流水金额进行转换  ******/    sscanf(origjnl.Reserve5,"%lf",&tmp_tran_amt);    tmp_tran_amt = tmp_tran_amt/100;    WriteLog(ERR_LVL,"tmp_tran_amt[%lf]",tmp_tran_amt);    sscanf(tran_amt,"%lf",&tmp_tran_amt2);    tmp_tran_amt2 = tmp_tran_amt2/100;    WriteLog(ERR_LVL,"tmp_tran_amt2[%lf]",tmp_tran_amt2);    trim(origjnl.TranStat);    trim(origjnl.AcctNo);    trim(origjnl.TranDate);    trim(origjnl.SysSeqNum);    WriteLog(ERR_LVL, "原交易状态为[%s]!", origjnl.TranStat);    WriteLog(ERR_LVL,"原交易账号为[%s]!",origjnl.AcctNo);    WriteLog(ERR_LVL,"原交易金额为[%lf]", origjnl.Reserve5);    if(memcmp(origjnl.TranStat, "0", 1) !=0 )   /* 该笔交易是 成功 状态  */    {        WriteLog(ERR_LVL, "原交易不符合冲正条件!");        return PB_ERR;    }    if( fabs(tmp_tran_amt2 - tmp_tran_amt) > ZERO_AMT )    {        WriteLog(ERR_LVL, " 冲正金额和原交易金额不相等!");        return PB_ERR;    }    if( memcmp(origjnl.AcctNo, card_id, 19)!=0 )    {        WriteLog(ERR_LVL, "冲正交易账号和原交易账号不匹配!");        return PB_ERR;    }    /* HostAddHead */    ret = Data_HostAddHead("5712");    if(ret !=0)    {           WriteLog(ERR_LVL,"HostAddHead failed!");        return PB_ERR;    }        /* 5712 body */     sprintf(tmp_str,"%s||%s|%lf|||%s|%s||| ",card_id,currtype,tmp_tran_amt,pwd_enc,track2_data);    WriteLog(ERR_LVL,"5712 condition[%s]",tmp_str);    PutPoolDataByName("FDYL","checkstr",0,0,"01111311111111111011111011100000000000000000000000000000",0);    PutPoolDataByName("FDYL","condition",0,0,tmp_str,0);        /* 5718 body */    PutPoolDataByName( "FDCZ", "DataFlag", 0, 0, "2" , 0 );    memcpy(card_id,track2_data+1,19);    WriteLog(ERR_LVL,"card_id[%s]",card_id);        sprintf( filename, "%s-%s.txt",  "001004", pbjourno );    sprintf( filepath, "%s/%s/%s",getenv("INST_PATH"),getenv("INST_NO_PATH"), filename );    sprintf( fullfilepath, "%s/%s",getenv("PRINTERDIR"), filepath );    WriteLog( ERR_LVL, "filepath[%s] ", filepath );    WriteLog( ERR_LVL, "fullfilepath[%s] ", fullfilepath );    PutPoolDataByName( "FDCZ", "FileName", 0, 0, filepath , 0 );            rtrim(origjnl.AppIndex);        sprintf(record_idx,"%s",origjnl.AppIndex);    WriteLog( ERR_LVL ,"record_idx[%s]",record_idx);    PutPoolDataByName( "FDCZ", "CorrRecordIdx", 0, 0, record_idx , 0 );        fp = fopen( fullfilepath, "w+b" );    if( NULL == fp )    {        WriteLog( ERR_LVL, "Open file error![%s]",fullfilepath );        return PB_ERR;    }            memcpy(s_cstm_rever_info->acc_no,card_id,19);    s_cstm_rever_info->tran_amt = tmp_tran_amt;    s_cstm_rever_info->fee_amt = 0.00;    memcpy(s_cstm_rever_info->curr_type,currtype,2);        memcpy(s_cstm_rever_info->corr_flag,"1",1);     memcpy(s_cstm_rever_info->corr_date,origjnl.AcctDate,10);    sprintf(s_cstm_rever_info->corrseqno,"TT%s",origjnl.SysSeqNum);    /* 组装上传记账分录格式 */     ret = GetReverEntry(origjnl.AcctDate,s_cstm_rever_info,entry,&entry_count);    if(ret != PB_OK)    {           WriteLog(ERR_LVL,"Err GetJournalEntry");        Pb_ReturnClient8583("96");        return PB_ERR;    }    WriteLog(ERR_LVL,"entry_count[%d]",entry_count);    /* 记账分录写入文件 */    for( i = 0;i<entry_count;i++)    {        fprintf( fp, "%s\n", entry[i] );        WriteLog(ERR_LVL,"entry[%s]",entry[i]);    }    sprintf( AccNum ,"%s" , &entry_count );    PutPoolDataByName( "FDCZ", "AccNum", 0, 0, AccNum , 0 );    fclose(fp);    ret = Host_ftpData( filename );    if( ret !=0 )    {        WriteLog(ERR_LVL,"Host_ftpData[%s] err", filename );        return PB_ERR;    }    WriteLog(ERR_LVL,"========= Data_CashWithdrawalReversal_RQ[001004] end =========");    return PB_OK;}/* Fuction  :  Data_CashWithdrawalReversal_RP * Action   :  CashWithdrawalReversalResponse * Input    : * Output   : * Author   : * Date     : 2014/11/06 */intData_CashWithdrawalReversal_RP(){    int ret = -1;    int rellen = 0;    char errcode[10+1];    char errmsg[300+1];    char out_recode[2+1];    long hoststat = -1;    char rem[300+1];    char rem_str[32+1];    char trandate[8+1];    char origDataEle[42+1];    char origSysTraceNo[6+1];    char origTranTime[4+1];    memset(errcode, 0x00, sizeof(errcode));    memset(errmsg, 0x00, sizeof(errmsg));    memset(out_recode, 0x00, sizeof(out_recode));    memset(rem, 0x00, sizeof(rem));    memset(rem_str, 0x00, sizeof(rem_str));    memset(trandate, 0x00, sizeof(trandate));    memset(origDataEle, 0x00, sizeof(origDataEle));    memset(origSysTraceNo, 0x00, sizeof(origSysTraceNo));    memset(origTranTime, 0x00, sizeof(origTranTime));    /*Get The Data*/    GetPoolDataByName("ABSHEAD", "_host_stat", 0, 0, (char *)&hoststat, &rellen );    GetPoolDataByName("PBSYS", "PbDate", 0, 0, trandate, &rellen );    GetPoolDataByName("Bconnex8583", "orig_data_ele", 0, 0, origDataEle, &rellen);    WriteLog(ERR_LVL, "origDataEle is [%s]", origDataEle);    memcpy(origSysTraceNo, origDataEle+4, 6);    memcpy(origTranTime, origDataEle+10, 10);    WriteLog(ERR_LVL, "origSysTraceNo is [%s], origTranTime is [%s]", origSysTraceNo, origTranTime);    WriteLog( ERR_LVL, "hoststat[%ld]", hoststat );    /* PutPoolDataByName("Bconnex8583","sys_trace_num", 0, 0, "999999", 0); */    if(hoststat==0)    {        WriteLog(ERR_LVL, "Transaction Success![%ld]", hoststat);        ret = setFlagAfterReversal(origSysTraceNo, origTranTime);        if(ret==PB_OK)        {            WriteLog(ERR_LVL, "update table T_AP_JOURNAL successfully!");        }        Pb_ReturnClient8583("00");        WriteLog(ERR_LVL,"========= Data_CashWithdrawalReversal_RP[001004] end =========");    }    else    {        GetPoolDataByName("ABSHEAD","_error_code",0,0,rem,&rellen);        if(strlen(rem)<=32)        {            memcpy(rem_str,rem,strlen(rem));        }        else        {            memcpy(rem_str,rem,32);        }        sscanf( rem, "[%[^]]]:%[^'']", errcode,errmsg );        trim(errcode);        trim(errmsg);        if(strlen(errcode)==0)        {            sscanf( rem, "%*[^0-9]%*[0-9]%*[^0-9]%[0-9]]:%[^'']",errcode,errmsg);            trim(errcode);            trim(errmsg);        }        WriteLog(ERR_LVL ,"errcode[%s]errmsg[%s]hoststat[%ld]",errcode,errmsg,hoststat);        errcode_transform(errcode,out_recode);        trim(out_recode);        WriteLog(ERR_LVL, "out_recode[%s]", out_recode);        Pb_ReturnClient8583(out_recode);        WriteLog(ERR_LVL,"========= Data_CashWithdrawalReversal_RP[001004] end =========");        return PB_ERR;    }    return PB_OK;}/* Fuction  :  GetSndPkgTime8583 * Action   :  GetSndPkgTime8583 * Input    : * Output   : * Author   : * Date     : 2014/11/06 */int GetSndPkgTime8583(char *Time8583){    char DateFromPB[8+1];    char TimeFromPB[8+1];    char tmpTime[10+1];    int rellen=0;    memset(DateFromPB, 0x00, sizeof(DateFromPB));    memset(TimeFromPB, 0x00, sizeof(TimeFromPB));    memset(tmpTime, 0x00, sizeof(tmpTime));    GetPoolDataByName("PBSYS", "SysDate",0, 0, DateFromPB, &rellen);    GetPoolDataByName("PBSYS", "SysTime", 0, 0, TimeFromPB, &rellen);    trim(DateFromPB);    trim(TimeFromPB);    if(strlen(DateFromPB)!=8)    {        WriteLog(ERR_LVL, "取PB系统日期错误\n");        return PB_ERR;    }    if(strlen(TimeFromPB)!=6 && strlen(TimeFromPB)!=8)    {        WriteLog(ERR_LVL, "取PB系统时间错误\n");        return PB_ERR;    }    WriteLog(ERR_LVL, "DateFromPB is [%s], TimeFromPB is [%s]", DateFromPB, TimeFromPB);    memcpy(tmpTime, DateFromPB+4, 4);    memcpy(tmpTime+4, TimeFromPB,2);    if(strlen(TimeFromPB)==6)    {        memcpy(tmpTime+6, TimeFromPB+2, 2);        memcpy(tmpTime+8, TimeFromPB+4, 2);    }    if(strlen(TimeFromPB)==8)    {        memcpy(tmpTime+6, TimeFromPB+3, 2);        memcpy(tmpTime+8, TimeFromPB+6, 2);    }    memcpy(Time8583, tmpTime, 10);    WriteLog(ERR_LVL, "8385报文的发送时间为 [%s]", tmpTime);    return PB_OK;}/*Fuction  :  Get Retrieval Reference Number* Action   :  GetRetReferNumber* Input    :* Output   :* Author   :* Date     : 2014/12/01*/int GetRetReferNumber(char * RetReferNumber){    int rellen=0;    char SysTraceNumber[6+1];    char Pkg007[10+1];    int DayOfDate;    char PBDate[8+1];    char LastBitYear[1+1];    char tmpHH[2+1];    memset(SysTraceNumber, 0x00, sizeof(SysTraceNumber));    memset(Pkg007, 0x00, sizeof(Pkg007));    memset(PBDate, 0x00, sizeof(PBDate));    memset(LastBitYear,0x00, sizeof(LastBitYear));    memset(tmpHH, 0x00, sizeof(tmpHH));        memcpy(SysTraceNumber, "998998",6);    GetSndPkgTime8583(Pkg007);    memcpy(tmpHH, Pkg007+4, 2);    GetPoolDataByName("PBSYS", "SysDate",0, 0, PBDate, &rellen);    //DayOfDate = GetdaysBydate(PBDate);    memcpy(LastBitYear, PBDate+3, 1);        sprintf(RetReferNumber, "%s%03d%s%s",LastBitYear, DayOfDate, tmpHH, SysTraceNumber);    WriteLog(ERR_LVL, "生成8583报文中的第37域(检索索引号)为 [%s]", RetReferNumber);    return PB_OK;       }int setFlagAfterReversal(char *para_origTraceNo, char *para_origTime){    EXEC SQL BEGIN DECLARE SECTION;    char origSysTraceNo[6+1];    char origDateTime[10+1];    EXEC SQL END DECLARE SECTION;    memset(origSysTraceNo, 0x00, sizeof(origSysTraceNo));    memset(origDateTime, 0x00, sizeof(origDateTime));    if(para_origTraceNo==NULL || strlen(para_origTraceNo)!=6 || para_origTime==NULL || strlen(para_origTime)!=10)    {        WriteLog(ERR_LVL, "参数错误! para_origTraceNo[%s], para_origTime[%s]", para_origTraceNo, para_origTime);        return PB_ERR;    }    memcpy(origSysTraceNo, para_origTraceNo, 6);    memcpy(origDateTime, para_origTime, 10);    WriteLog(ERR_LVL, "origSysTraceNo=[%s], origDateTime=[%s]", origSysTraceNo, origDateTime);    EXEC SQL UPDATE T_AP_JOURNAL SET TRANSTAT='9' WHERE rltseqno =:origSysTraceNo and hststlmdtime=:origDateTime and transtat='0';    if(SQLCODE !=0 || sqlca.sqlerrd[2] != 1)    {        WriteLog(ERR_LVL, "update table T_AP_JOURNAL fail! SQLCODE=[%d], sqlca.sqlerrd[2]=[%d]", SQLCODE, sqlca.sqlerrd[2]);        return PB_ERR;    }    WriteLog(ERR_LVL, "successfully! SQLCODE=[%d]! sqlerrd[2]=[%d]", SQLCODE, sqlca.sqlerrd[2]);    return PB_OK;}

0 0
原创粉丝点击