📄 handle.cpre
字号:
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 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(&cwdacceptstru, '0', sizeof(cwdacceptstru)); memset(&cwdrejectstru, '0', sizeof(cwdrejectstru)); memset(&cwdballackstru, '0', sizeof(cwdballackstru)); 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(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. */ pcwdstru = (PCWDSTRU)cMsg; memcpy(szReqId, atmstru.szAtmNo, AP_LEN_ID); SetAtmReqSeqNo(szReqSeqNo, pcwdstru->cReqSeqNo); memcpy(szAtmAccNo, pcwdstru->cAccNo, SIZE_ACCNO); memcpy(szTrack2, pcwdstru->cTrack2, AP_LEN_TRACK2); memcpy(szTrack3, pcwdstru->cTrack3, AP_LEN_TRACK3); EncryptTrack2(szTrack2, -1); EncryptTrack3(szTrack3, -1); ASSURE_NORMAL(GetExpDate(szTrack2, szExpDate)) EncryptAtm(szAtmAccNo, pcwdstru->cEncryptData, -1); memcpy(szAccPwd, pcwdstru->cEncryptData + 10, AP_LEN_ACCPWD); memcpy(szTransAmt, pcwdstru->cTransAmt, SIZE_TRANSAMT); sprintf(szAmt, "%19.2lf", atof(szTransAmt) / 100); strcpy(szAccNo, szAtmAccNo); 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_WITHDRAW)) 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_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); sleep(TIMEOUT); return EXCEPTION; } cwdrejectstru.cTfc = 'A'; cwdrejectstru.cTpc = 'G'; cwdrejectstru.cOperateMode = 'P'; cwdrejectstru.cLimitFlag = '1'; memcpy(cwdrejectstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(cwdrejectstru.cRejectCode, szRespCode, SIZE_REJECTCODE); memcpy(cwdrejectstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&cwdrejectstru, sizeof(cwdrejectstru), "atm", TRUE)); memcpy(cMsg, &cwdrejectstru, sizeof(cwdrejectstru)); sprintf(szMsgLen, "%6d", sizeof(cwdrejectstru)); } else { VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_AVAILBAL, szAvailBal)); sprintf(szAvailBal, "%-6.2lf", atof(szAvailBal)); cwdballackstru.cTfc = 'A'; cwdballackstru.cTpc = 'U'; cwdballackstru.cOperateMode = 'P'; cwdballackstru.cLimitFlag = '1'; memcpy(cwdballackstru.cAvailFund, szAvailBal, SIZE_AVAILFUND); memcpy(cwdballackstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(cwdballackstru.cRejectCode, szRespCode, SIZE_REJECTCODE); memcpy(cwdballackstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&cwdballackstru, sizeof(cwdballackstru), "atm", TRUE)); memcpy(cMsg, &cwdballackstru, sizeof(cwdballackstru)); sprintf(szMsgLen, "%6d", sizeof(cwdballackstru)); } } else { VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_AVAILBAL, szAvailBal)); VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)); sprintf(szAvailBal, "%-6.2lf", atof(szAvailBal)); cwdacceptstru.cTfc = 'A'; cwdacceptstru.cTpc = 'Q'; cwdacceptstru.cOperateMode = 'P'; cwdacceptstru.cAccepted = '1'; cwdacceptstru.cLimitFlag = '1'; memcpy(cwdacceptstru.cAccNo, szAtmAccNo, SIZE_ACCNO); memcpy(cwdacceptstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(cwdacceptstru.cAvailFund, szAvailBal, SIZE_AVAILFUND); memcpy(cwdacceptstru.cTransAmt, szTransAmt, SIZE_TRANSAMT); memcpy(cwdacceptstru.cRespSeqNo, szRespSeqNo, SIZE_RESPSEQNO); memcpy(cwdacceptstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&cwdacceptstru, sizeof(cwdacceptstru), "atm", TRUE)); memcpy(cMsg, &cwdacceptstru, sizeof(cwdacceptstru)); sprintf(szMsgLen, "%6d", sizeof(cwdacceptstru)); } DeleteXml(&xmlstruReq); DeleteXml(&xmlstruResp); return NORMAL;}RESULT HandleCwc(char cMsg[SIZE_MSG_ATM], char szMsgLen[6 + 1], ATMSTRU atmstru){ XMLSTRU xmlstruReq; XMLSTRU xmlstruResp; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; PCWCSTRU pcwcstru; CWCACCEPTSTRU cwcacceptstru; 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 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(&cwcacceptstru, '0', sizeof(cwcacceptstru)); memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bufclr(szReqId); bufclr(szReqDate); bufclr(szReqTime); bufclr(szReqSeqNo); bufclr(szAccNo); bufclr(szRespCode); bufclr(szRespSeqNo); bufclr(szRespDate); bufclr(szRespTime); bufclr(szDateTimeDays); pxmlstruReq = &xmlstruReq; pxmlstruResp = &xmlstruResp; /* * Convert string to xml. */ pcwcstru = (PCWCSTRU)cMsg; memcpy(szReqId, atmstru.szAtmNo, AP_LEN_ID); SetAtmReqSeqNo(szReqSeqNo, pcwcstru->cOrgReqSeqNo); memcpy(szAccNo, pcwcstru->cAccNo, AP_LEN_ACCNO); GetAtmDate(szReqDate); GetAtmTime(szReqTime); ASSURE_NORMAL(CreateXml(pxmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_CANCELREQ)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_WITHDRAW)) 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(ApCaSubmit(pxmlstruReq, pxmlstruResp)) /* * Convert xml to string. */ memset(cMsg, 0, SIZE_MSG_ATM); AP_DEMAND_EXT(AP_PATH_RESPCODE, szRespCode); if (strcmp(szRespCode, AP_RESPCODE_ACCEPT) == 0) { AP_DEMAND_EXT(AP_PATH_RESPDATE, szRespDate); AP_DEMAND_EXT(AP_PATH_RESPTIME, szRespTime); VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)); SetDateTimeDays(szRespDate, szRespTime, szDateTimeDays); cwcacceptstru.cTfc = 'A'; cwcacceptstru.cTpc = 'W'; cwcacceptstru.cOperateMode = 'P'; cwcacceptstru.cLimitFlag = '1'; memcpy(cwcacceptstru.cAccNo, szAccNo, SIZE_ACCNO); memcpy(cwcacceptstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(cwcacceptstru.cRespSeqNo, szRespSeqNo, SIZE_RESPSEQNO); memcpy(cwcacceptstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&cwcacceptstru, sizeof(cwcacceptstru), "atm", TRUE)); memcpy(cMsg, &cwcacceptstru, sizeof(cwcacceptstru)); sprintf(szMsgLen, "%6d", sizeof(cwcacceptstru)); } /* * 如果返回失败应答,将睡眠一段时间。以控制ATM过一段时间后 * 再发起冲正,ATM三次冲正失败,将继续其他交易。 */ else sleep(TIMEOUT); DeleteXml(&xmlstruReq); DeleteXml(&xmlstruResp); return NORMAL;}RESULT HandleDpc(char cMsg[SIZE_MSG_ATM], char szMsgLen[6 + 1], ATMSTRU atmstru){ XMLSTRU xmlstruReq; XMLSTRU xmlstruResp; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; PDPCSTRU pdpcstru; DPCACCEPTSTRU dpcacceptstru; 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 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(&dpcacceptstru, '0', sizeof(dpcacceptstru)); memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bufclr(szReqId); bufclr(szReqDate); bufclr(szReqTime); bufclr(szReqSeqNo); bufclr(szAccNo); bufclr(szRespCode); bufclr(szRespSeqNo); bufclr(szRespDate); bufclr(szRespTime); bufclr(szDateTimeDays); pxmlstruReq = &xmlstruReq; pxmlstruResp = &xmlstruResp; /* * Convert string to xml. */ pdpcstru = (PDPCSTRU)cMsg; memcpy(szReqId, atmstru.szAtmNo, AP_LEN_ID); SetAtmReqSeqNo(szReqSeqNo, pdpcstru->cOrgReqSeqNo); memcpy(szAccNo, pdpcstru->cAccNo, AP_LEN_ACCNO); GetAtmDate(szReqDate); GetAtmTime(szReqTime); ASSURE_NORMAL(CreateXml(pxmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_CANCELREQ)) ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_DEPOSIT)) 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(ApCaSubmit(pxmlstruReq, pxmlstruResp)) /* * Convert xml to string. */ memset(cMsg, 0, SIZE_MSG_ATM); AP_DEMAND_EXT(AP_PATH_RESPCODE, szRespCode); if (strcmp(szRespCode, AP_RESPCODE_ACCEPT) == 0) { AP_DEMAND_EXT(AP_PATH_RESPDATE, szRespDate); AP_DEMAND_EXT(AP_PATH_RESPTIME, szRespTime); VERIFY_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)); SetDateTimeDays(szRespDate, szRespTime, szDateTimeDays); dpcacceptstru.cTfc = 'A'; dpcacceptstru.cTpc = 'W'; dpcacceptstru.cOperateMode = 'P'; dpcacceptstru.cLimitFlag = '1'; memcpy(dpcacceptstru.cAccNo, szAccNo, SIZE_ACCNO); memcpy(dpcacceptstru.cDateTime, szDateTimeDays, SIZE_DATETIMEDAYS); memcpy(dpcacceptstru.cRespSeqNo, szRespSeqNo, SIZE_RESPSEQNO); memcpy(dpcacceptstru.cReqSeqNo, szReqSeqNo + 6, SIZE_REQSEQNO); VERIFY_NORMAL(ApCaRecord(&dpcacceptstru, sizeof(dpcacceptstru), "atm", TRUE)); memcpy(cMsg, &dpcacceptstru, sizeof(dpcacceptstru)); sprintf(szMsgLen, "%6d", sizeof(dpcacceptstru)); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -