📄 handle.cpre
字号:
DeleteXml(&xmlstruReq); DeleteXml(&xmlstruResp); return NORMAL;}RESULT HandleTfr(char cMsg[SIZE_MSG_ATM], char szMsgLen[6 + 1], ATMSTRU atmstru){ XMLSTRU xmlstruReq; XMLSTRU xmlstruResp; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; PTFRSTRU ptfrstru; TFRACCEPTSTRU tfracceptstru; TFRREJECTSTRU tfrrejectstru; TFRBALLACKSTRU tfrballackstru; char szReqId[AP_LEN_ID + 1]; char szReqDate[AP_LEN_DATE + 1]; char szReqTime[AP_LEN_TIME + 1]; char szReqSeqNo[AP_LEN_SEQNO + 1]; char szAccNo[AP_LEN_ACCNO + 1]; char szAtmAccNo[SIZE_ACCNO + 1]; char szAddAccNo[AP_LEN_ACCNO + 1]; char szAmt[AP_LEN_AMT + 1]; char szTransAmt[SIZE_TRANSAMT + 1]; char szExpDate[AP_LEN_EXPDATE + 1]; char szTrack2[AP_LEN_TRACK2 + 1]; char szTrack3[AP_LEN_TRACK3 + 1]; char szAccPwd[AP_LEN_ACCPWD + 1]; char szRespCode[AP_LEN_RESPCODE + 1]; char szRespSeqNo[AP_LEN_SEQNO + 1]; char szRespDate[AP_LEN_DATE + 1]; char szRespTime[AP_LEN_TIME + 1]; char szDateTimeDays[SIZE_DATETIMEDAYS + 1]; char szBal[AP_LEN_BAL + 1]; char szAvailBal[AP_LEN_BAL + 1]; memset(&tfracceptstru, '0', sizeof(tfracceptstru)); memset(&tfrrejectstru, '0', sizeof(tfrrejectstru)); memset(&tfrballackstru, '0', sizeof(tfrballackstru)); memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bufclr(szReqId); bufclr(szReqDate); bufclr(szReqTime); bufclr(szReqSeqNo); bufclr(szAccNo); bufclr(szAtmAccNo); bufclr(szAddAccNo); bufclr(szExpDate); bufclr(szTrack2); bufclr(szTrack3); bufclr(szAccPwd); bufclr(szAmt); bufclr(szTransAmt); bufclr(szRespCode); bufclr(szRespSeqNo); bufclr(szRespDate); bufclr(szRespTime); bufclr(szDateTimeDays); bufclr(szBal); bufclr(szAvailBal); pxmlstruReq = &xmlstruReq; pxmlstruResp = &xmlstruResp; /* * Convert string to xml. */ ptfrstru = (PTFRSTRU)cMsg; memcpy(szReqId, atmstru.szAtmNo, AP_LEN_ID); SetAtmReqSeqNo(szReqSeqNo, ptfrstru->cReqSeqNo); memcpy(szAtmAccNo, ptfrstru->cAccNo, SIZE_ACCNO); memcpy(szAddAccNo, ptfrstru->cAccNo2nd, AP_LEN_ACCNO); memcpy(szTrack2, ptfrstru->cTrack2, AP_LEN_TRACK2); memcpy(szTrack3, ptfrstru->cTrack3, AP_LEN_TRACK3); EncryptTrack2(szTrack2, -1); EncryptTrack3(szTrack3, -1); ASSURE_NORMAL(GetExpDate(szTrack2, szExpDate)) EncryptAtm(szAtmAccNo, ptfrstru->cEncryptData, -1); memcpy(szAccPwd, ptfrstru->cEncryptData + 10, AP_LEN_ACCPWD); strcpy(szAccNo, szAtmAccNo); memcpy(szTransAmt, ptfrstru->cTransAmt, SIZE_TRANSAMT); sprintf(szAmt, "%19.2lf", atof(szTransAmt) / 100); GetAtmDate(szReqDate); GetAtmTime(szReqTime); ASSURE_NORMAL(CreateXml(pxmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_TRANSFER)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQDATE, szReqDate)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQTIME, szReqTime)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQID, szReqId)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQSEQNO, szReqSeqNo)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_ACCNO, FormatAccNo(szAccNo))) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_ADDACCNO, FormatAccNo(szAddAccNo))) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_EXPDATE, szExpDate)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACK2, szTrack2)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACK3, szTrack3)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "Y")) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_ACCPWD, szAccPwd)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_AMT, szAmt)) ASSURE_NORMAL(ApCaSubmit(pxmlstruReq, pxmlstruResp)) /* * Convert xml to string. */ memset(cMsg, 0, SIZE_MSG_ATM); AP_DEMAND_EXT(AP_PATH_RESPCODE, szRespCode); AP_DEMAND_EXT(AP_PATH_RESPDATE, szRespDate); AP_DEMAND_EXT(AP_PATH_RESPTIME, szRespTime); SetDateTimeDays(szRespDate, szRespTime, szDateTimeDays); if (strcmp(szRespCode, AP_RESPCODE_ACCEPT) != 0) { if (strcmp(szRespCode, AP_RESPCODE_ACC_BALLACK) != 0) { if (strcmp(szRespCode, AP_RESPCODE_EXCEPTION) == 0) { DeleteXml(&xmlstruReq); DeleteXml(&xmlstruResp); return EXCEPTION; } tfrrejectstru.cTfc = 'A'; tfrrejectstru.cTpc = 'G'; tfrrejectstru.cOperateMode = 'P'; tfrrejectstru.cLimitFlag = '1'; memcpy(tfrrejectstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(tfrrejectstru.cRejectCode, szRespCode, SIZE_REJECTCODE); memcpy(tfrrejectstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&tfrrejectstru, sizeof(tfrrejectstru), "atm", TRUE)); memcpy(cMsg, &tfrrejectstru, sizeof(tfrrejectstru)); sprintf(szMsgLen, "%6d", sizeof(tfrrejectstru)); } else { VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_AVAILBAL, szAvailBal)); sprintf(szAvailBal, "%-6.2lf", atof(szAvailBal)); tfrballackstru.cTfc = 'A'; tfrballackstru.cTpc = 'U'; tfrballackstru.cOperateMode = 'P'; tfrballackstru.cLimitFlag = '1'; memcpy(tfrballackstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(tfrballackstru.cRejectCode, szRespCode, SIZE_REJECTCODE); memcpy(tfrballackstru.cAvailFund, szAvailBal, SIZE_AVAILFUND); memcpy(tfrballackstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&tfrballackstru, sizeof(tfrballackstru), "atm", TRUE)); memcpy(cMsg, &tfrballackstru, sizeof(tfrballackstru)); sprintf(szMsgLen, "%6d", sizeof(tfrballackstru)); } } else { VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)); VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_AVAILBAL, szAvailBal)); sprintf(szAvailBal, "%-6.2lf", atof(szAvailBal)); tfracceptstru.cTfc = 'A'; tfracceptstru.cTpc = 'Q'; tfracceptstru.cOperateMode = 'P'; tfracceptstru.cAccepted = '1'; tfracceptstru.cLimitFlag = '1'; memcpy(tfracceptstru.cAccNo, szAtmAccNo, SIZE_ACCNO); memcpy(tfracceptstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(tfracceptstru.cAvailFund, szAvailBal, SIZE_AVAILFUND); memcpy(tfracceptstru.cTransAmt, szTransAmt, SIZE_TRANSAMT); memcpy(tfracceptstru.cRespSeqNo, szRespSeqNo, SIZE_RESPSEQNO); memcpy(tfracceptstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&tfracceptstru, sizeof(tfracceptstru), "atm", TRUE)); memcpy(cMsg, &tfracceptstru, sizeof(tfracceptstru)); sprintf(szMsgLen, "%6d", sizeof(tfracceptstru)); } DeleteXml(&xmlstruReq); DeleteXml(&xmlstruResp); return NORMAL;}RESULT HandlePin(char cMsg[SIZE_MSG_ATM], char szMsgLen[6 + 1], ATMSTRU atmstru){ XMLSTRU xmlstruReq; XMLSTRU xmlstruResp; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; PPINSTRU ppinstru; PINACCEPTSTRU pinacceptstru; PINREJECTSTRU pinrejectstru; char szReqId[AP_LEN_ID + 1]; char szReqDate[AP_LEN_DATE + 1]; char szReqTime[AP_LEN_TIME + 1]; char szReqSeqNo[AP_LEN_SEQNO + 1]; char szAccNo[AP_LEN_ACCNO + 1]; char szAtmAccNo[SIZE_ACCNO + 1]; char szExpDate[AP_LEN_EXPDATE + 1]; char szTrack2[AP_LEN_TRACK2 + 1]; char szTrack3[AP_LEN_TRACK3 + 1]; char szAccPwd[AP_LEN_ACCPWD + 1]; char szNewAccPwd[AP_LEN_ACCPWD + 1]; char szRespCode[AP_LEN_RESPCODE + 1]; char szRespSeqNo[AP_LEN_SEQNO + 1]; char szRespDate[AP_LEN_DATE + 1]; char szRespTime[AP_LEN_TIME + 1]; char szDateTimeDays[SIZE_DATETIMEDAYS + 1]; memset(&pinacceptstru, '0', sizeof(pinacceptstru)); memset(&pinrejectstru, '0', sizeof(pinrejectstru)); memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bufclr(szReqId); bufclr(szReqDate); bufclr(szReqTime); bufclr(szReqSeqNo); bufclr(szAccNo); bufclr(szAtmAccNo); bufclr(szExpDate); bufclr(szTrack2); bufclr(szTrack3); bufclr(szAccPwd); bufclr(szNewAccPwd); bufclr(szRespCode); bufclr(szRespSeqNo); bufclr(szRespDate); bufclr(szRespTime); bufclr(szDateTimeDays); pxmlstruReq = &xmlstruReq; pxmlstruResp = &xmlstruResp; /* * Convert string to xml. */ ppinstru = (PPINSTRU)cMsg; memcpy(szReqId, atmstru.szAtmNo, AP_LEN_ID); SetAtmReqSeqNo(szReqSeqNo, ppinstru->cReqSeqNo); memcpy(szAtmAccNo, ppinstru->cAccNo, SIZE_ACCNO); memcpy(szTrack2, ppinstru->cTrack2, AP_LEN_TRACK2); memcpy(szTrack3, ppinstru->cTrack3, AP_LEN_TRACK3); EncryptTrack2(szTrack2, -1); EncryptTrack3(szTrack3, -1); ASSURE_NORMAL(GetExpDate(szTrack2, szExpDate)) EncryptAtm(szAtmAccNo, ppinstru->cEncryptData, -1); memcpy(szAccPwd, ppinstru->cEncryptData + 10, AP_LEN_ACCPWD); strcpy(szAccNo, szAtmAccNo); EncryptNewPin(ppinstru->cNewPin + 2, szAccNo, -1); memcpy(szNewAccPwd, ppinstru->cNewPin + 2, AP_LEN_ACCPWD); GetAtmDate(szReqDate); GetAtmTime(szReqTime); ASSURE_NORMAL(CreateXml(pxmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_CHANGEPIN)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQDATE, szReqDate)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQTIME, szReqTime)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQID, szReqId)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_REQSEQNO, szReqSeqNo)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_ACCNO, FormatAccNo(szAccNo))) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_EXPDATE, szExpDate)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACK2, szTrack2)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACK3, szTrack3)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "Y")) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_ACCPWD, szAccPwd)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_ACCNEWPWD, szNewAccPwd)) ASSURE_NORMAL(ApCaSubmit(pxmlstruReq, pxmlstruResp)) /* * Convert xml to string. */ memset(cMsg, 0, SIZE_MSG_ATM); AP_DEMAND_EXT(AP_PATH_RESPCODE, szRespCode); AP_DEMAND_EXT(AP_PATH_RESPDATE, szRespDate); AP_DEMAND_EXT(AP_PATH_RESPTIME, szRespTime); SetDateTimeDays(szRespDate, szRespTime, szDateTimeDays); if (strcmp(szRespCode, AP_RESPCODE_ACCEPT) != 0) { pinrejectstru.cTfc = 'A'; pinrejectstru.cTpc = 'G'; pinrejectstru.cOperateMode = 'P'; pinrejectstru.cLimitFlag = '1'; memcpy(pinrejectstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(pinrejectstru.cRejectCode, szRespCode, SIZE_REJECTCODE); memcpy(pinrejectstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&pinrejectstru, sizeof(pinrejectstru), "atm", TRUE)); memcpy(cMsg, &pinrejectstru, sizeof(pinrejectstru)); sprintf(szMsgLen, "%6d", sizeof(pinrejectstru)); } else { VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)); pinacceptstru.cTfc = 'A'; pinacceptstru.cTpc = 'S'; pinacceptstru.cOperateMode = 'P'; pinacceptstru.cAccepted = '1'; memcpy(pinacceptstru.cAccNo, szAtmAccNo, SIZE_ACCNO); memcpy(pinacceptstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(pinacceptstru.cRespSeqNo, szRespSeqNo, SIZE_RESPSEQNO); memcpy(pinacceptstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&pinacceptstru, sizeof(pinacceptstru), "atm", TRUE)); memcpy(cMsg, &pinacceptstru, sizeof(pinacceptstru)); sprintf(szMsgLen, "%6d", sizeof(pinacceptstru)); } DeleteXml(&xmlstruReq); DeleteXml(&xmlstruResp); return NORMAL;}RESULT HandleDep(char cMsg[SIZE_MSG_ATM], char szMsgLen[6 + 1], ATMSTRU atmstru){ XMLSTRU xmlstruReq; XMLSTRU xmlstruResp; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; PDEPSTRU pdepstru; DEPACCEPTSTRU depacceptstru; DEPREJECTSTRU deprejectstru; char szReqId[AP_LEN_ID + 1]; char szReqDate[AP_LEN_DATE + 1]; char szReqTime[AP_LEN_TIME + 1]; char szReqSeqNo[AP_LEN_SEQNO + 1]; char szAccNo[AP_LEN_ACCNO + 1]; char szAtmAccNo[SIZE_ACCNO + 1]; char szExpDate[AP_LEN_EXPDATE + 1]; char szTrack2[AP_LEN_TRACK2 + 1]; char szTrack3[AP_LEN_TRACK3 + 1]; char szAmt[AP_LEN_AMT + 1]; char szTransAmt[SIZE_TRANSAMT + 1]; char szRespCode[AP_LEN_RESPCODE + 1]; char szRespSeqNo[AP_LEN_SEQNO + 1]; char szRespDate[AP_LEN_DATE + 1]; char szRespTime[AP_LEN_TIME + 1]; char szDateTimeDays[SIZE_DATETIMEDAYS + 1];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -