/* Fuction : Data_CashWithdrawalReversal_RQ
* Action : CashWithdrawalReversalRequest
* Input :
* Output :
* Author :
* Date : 2014/11/06
*/
int
Data_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
*/
int
Data_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;
}
CashWithdrawReverse
最新推荐文章于 2015-08-30 13:40:50 发布