⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handle.cpre

📁 商业银行前置系统
💻 CPRE
📖 第 1 页 / 共 4 页
字号:
    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 + -