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

📄 handle.cpre

📁 商业银行前置系统
💻 CPRE
📖 第 1 页 / 共 5 页
字号:
    bufclr(szTrace);    nSize = SIZE_TRACE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRACE, szTrace, &nSize));        nSize = SIZE_TERMID;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TERMID, szTermId, &nSize));        nSize = SIZE_MERCHID;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_MERCHID, szMerchId, &nSize));    nSize = SIZE_BATCHNO_MAX;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_BATCHNO, szBatchNo,                                   &nSize));    DETECT(nSize == SIZE_BATCHNO_MAX);            EXEC SQL SELECT batchno INTO :szSysBatchNo              FROM pos              WHERE termid = :szTermId and merchid = :szMerchId;    ASSERT_SQL_NORMAL();    AddNum(szSysBatchNo);    EXEC SQL UPDATE pos              SET batchno = :szSysBatchNo, trace = :szTrace             WHERE termid = :szTermId and merchid = :szMerchId;    ASSERT_SQL_NORMAL();    AddNum(szBatchNo);    if (strcmp(szBatchNo, szSysBatchNo) != 0)        SetBitInIso8583(piso8583stru, BIT_BATCHNO, szSysBatchNo, SIZE_BATCHNO);    return NORMAL;}/* * ASSURE_NORMAL宏用来确保在处理请求ISO8583报文时某些操作成功。 * 必须注意,该宏在检测到错误时把错误信息反映到报文中,而函数返回正常! * 另外,如果错误即非INVALID,也不是EXCEPTION,将保持当前的应答码 * 不变。 */RESULT rTemp; #define ASSURE_NORMAL(r) \    { \        rTemp = (r); \        if (rTemp == EXCEPTION) \            VERIFY_NORMAL(FillRespIso8583(piso8583stru, "96")); \        if (rTemp == INVALID) \            VERIFY_NORMAL(FillRespIso8583(piso8583stru, "30")); \        if (!VERIFY_NORMAL(rTemp)) \        { \            VERIFY_NORMAL(SetMac(piso8583stru, cKey)); \            DeleteXml(&xmlstruReq); \            DeleteXml(&xmlstruResp); \            return NORMAL; \        } \    }RESULT HandleConsume(PISO8583STRU piso8583stru){    XMLSTRU xmlstruReq;    XMLSTRU xmlstruResp;    PXMLSTRU pxmlstruReq;    PXMLSTRU pxmlstruResp;    UCHAR cKey[SIZE_KEY];    pxmlstruReq = &xmlstruReq;    pxmlstruResp = &xmlstruResp;    memset(&xmlstruReq, 0, sizeof(xmlstruReq));    memset(&xmlstruResp, 0, sizeof(xmlstruResp));        ASSURE_NORMAL(CheckBatchNo(piso8583stru))    ASSURE_NORMAL(GetKey(piso8583stru, cKey))    ASSURE_NORMAL(VerifyMac(piso8583stru, cKey))        ASSURE_NORMAL(CreateReqXml(&xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_CONSUME))    ASSURE_NORMAL(GetReqDateTime(&xmlstruReq))    ASSURE_NORMAL(GetReqId(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetReqSeqNoExt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccPwd(piso8583stru, &xmlstruReq, cKey))    ASSURE_NORMAL(GetBatchNoExt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetVouchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetMerchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetExpDate(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAmt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N"))        if (IsEntryMode(piso8583stru, "021") || IsEntryMode(piso8583stru, "022"))    {        UpdateInXmlExt(&xmlstruReq, AP_PATH_TRACKVERIFY, "Y");                ASSURE_NORMAL(GetTrack2(piso8583stru, &xmlstruReq))        ASSURE_NORMAL(GetTrack3(piso8583stru, &xmlstruReq))    }    ASSURE_NORMAL(RecordJournal(&xmlstruReq))    ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp))    VERIFY_NORMAL(UpdatePos(piso8583stru, &xmlstruResp));    SetBitInIso8583(piso8583stru, BIT_AMT, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_EXPDATE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_NII, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_FUNDTYPE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_OPERATOR, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_VOUCHNOBATCHNO, NULL, 0);    VERIFY_NORMAL(SetCertNo(piso8583stru, &xmlstruResp));    VERIFY_NORMAL(SetBal(piso8583stru, &xmlstruResp));    VERIFY_NORMAL(SetAuthCode(piso8583stru, &xmlstruResp));    if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT))    {        if (!VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetMac(piso8583stru, cKey)))        {            DeleteXml(&xmlstruReq);            DeleteXml(&xmlstruResp);             return EXCEPTION;        }    }    else if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION))    {        VERIFY_NORMAL(SetMac(piso8583stru, cKey));        DeleteXml(&xmlstruReq);        DeleteXml(&xmlstruResp);         return EXCEPTION;    }    else    {        VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetMac(piso8583stru, cKey));    }        DeleteXml(&xmlstruReq);    DeleteXml(&xmlstruResp);     return NORMAL;}RESULT HandleQueryBal(PISO8583STRU piso8583stru){    XMLSTRU xmlstruReq;    XMLSTRU xmlstruResp;        PXMLSTRU pxmlstruReq;    PXMLSTRU pxmlstruResp;    UCHAR cKey[SIZE_KEY];    pxmlstruReq = &xmlstruReq;    pxmlstruResp = &xmlstruResp;    memset(&xmlstruReq, 0, sizeof(xmlstruReq));    memset(&xmlstruResp, 0, sizeof(xmlstruResp));        ASSURE_NORMAL(CheckBatchNo(piso8583stru))    ASSURE_NORMAL(GetKey(piso8583stru, cKey))    ASSURE_NORMAL(VerifyMac(piso8583stru, cKey))        ASSURE_NORMAL(CreateReqXml(&xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_QUERYBAL))    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQTYPE, AP_REQTYPE_POS));    ASSURE_NORMAL(GetReqDateTime(&xmlstruReq))    ASSURE_NORMAL(GetReqId(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetReqSeqNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccPwd(piso8583stru, &xmlstruReq, cKey))    ASSURE_NORMAL(GetBatchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetMerchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetExpDate(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N"))        if (IsEntryMode(piso8583stru, "021") || IsEntryMode(piso8583stru, "022"))    {        UpdateInXmlExt(&xmlstruReq, AP_PATH_TRACKVERIFY, "Y");                ASSURE_NORMAL(GetTrack2(piso8583stru, &xmlstruReq))        ASSURE_NORMAL(GetTrack3(piso8583stru, &xmlstruReq))    }    ASSURE_NORMAL(RecordJournal(&xmlstruReq))    ASSERT_NORMAL(ApCaSubmit(&xmlstruReq,&xmlstruResp));    VERIFY_NORMAL(UpdatePos(piso8583stru, &xmlstruResp));    SetBitInIso8583(piso8583stru, BIT_EXPDATE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_NII, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_OPERATOR, NULL, 0);    VERIFY_NORMAL(SetCertNo(piso8583stru, &xmlstruResp));    if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT))    {     if (!VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp)) ||         !VERIFY_NORMAL(SetBal(piso8583stru, &xmlstruResp)) ||         !VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp)) ||         !VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp)) ||         !VERIFY_NORMAL(SetMac(piso8583stru, cKey)))         {             DeleteXml(&xmlstruReq);             DeleteXml(&xmlstruResp);             return EXCEPTION;         }    }    else if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION))    {        VERIFY_NORMAL(SetMac(piso8583stru, cKey));        DeleteXml(&xmlstruReq);        DeleteXml(&xmlstruResp);        return EXCEPTION;    }    else    {        VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetMac(piso8583stru, cKey));    }    DeleteXml(&xmlstruReq);    DeleteXml(&xmlstruResp);     return NORMAL;}RESULT HandleQueryStatus(PISO8583STRU piso8583stru){    return NORMAL;}RESULT HandleRefund(PISO8583STRU piso8583stru){    XMLSTRU xmlstruReq;    XMLSTRU xmlstruResp;    PXMLSTRU pxmlstruReq;    PXMLSTRU pxmlstruResp;    UCHAR cKey[SIZE_KEY];    pxmlstruReq = &xmlstruReq;    pxmlstruResp = &xmlstruResp;    memset(&xmlstruReq, 0, sizeof(xmlstruReq));    memset(&xmlstruResp, 0, sizeof(xmlstruResp));        ASSURE_NORMAL(CheckBatchNo(piso8583stru))    ASSURE_NORMAL(GetKey(piso8583stru, cKey))    ASSURE_NORMAL(VerifyMac(piso8583stru, cKey))        ASSURE_NORMAL(CreateReqXml(&xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_REFUND))    ASSURE_NORMAL(GetReqDateTime(&xmlstruReq))    ASSURE_NORMAL(GetReqId(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetReqSeqNoExt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetBatchNoExt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetVouchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetOrgVouchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetMerchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetExpDate(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAmt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N"))        if (IsEntryMode(piso8583stru, "021") || IsEntryMode(piso8583stru, "022"))    {        UpdateInXmlExt(&xmlstruReq, AP_PATH_TRACKVERIFY, "Y");                ASSURE_NORMAL(GetTrack2(piso8583stru, &xmlstruReq))        ASSURE_NORMAL(GetTrack3(piso8583stru, &xmlstruReq))    }    ASSURE_NORMAL(RecordJournal(&xmlstruReq))    ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp))    VERIFY_NORMAL(UpdatePos(piso8583stru, &xmlstruResp));    SetBitInIso8583(piso8583stru, BIT_AMT, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_EXPDATE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_NII, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_OPERATOR, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_ORGVOUCHNO, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_VOUCHNOBATCHNO, NULL, 0);    VERIFY_NORMAL(SetCertNo(piso8583stru, &xmlstruResp));    VERIFY_NORMAL(SetBal(piso8583stru, &xmlstruResp));    if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT))    {        if (!VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetMac(piso8583stru, cKey)))        {            DeleteXml(&xmlstruReq);            DeleteXml(&xmlstruResp);             return EXCEPTION;        }    }    else if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION))    {        VERIFY_NORMAL(SetMac(piso8583stru, cKey));        DeleteXml(&xmlstruReq);        DeleteXml(&xmlstruResp);         return EXCEPTION;    }    else    {        VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp));        VERIFY_NORMAL(SetMac(piso8583stru, cKey));    }        DeleteXml(&xmlstruReq);    DeleteXml(&xmlstruResp);     return NORMAL;}RESULT HandleAuth(PISO8583STRU piso8583stru){    XMLSTRU xmlstruReq;    XMLSTRU xmlstruResp;    PXMLSTRU pxmlstruReq;    PXMLSTRU pxmlstruResp;    UCHAR cKey[SIZE_KEY];    pxmlstruReq = &xmlstruReq;    pxmlstruResp = &xmlstruResp;    memset(&xmlstruReq, 0, sizeof(xmlstruReq));    memset(&xmlstruResp, 0, sizeof(xmlstruResp));        ASSURE_NORMAL(CheckBatchNo(piso8583stru))    ASSURE_NORMAL(GetKey(piso8583stru, cKey))    ASSURE_NORMAL(VerifyMac(piso8583stru, cKey))        ASSURE_NORMAL(CreateReqXml(&xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_AUTH))    ASSURE_NORMAL(GetReqDateTime(&xmlstruReq))    ASSURE_NORMAL(GetReqId(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetReqSeqNoExt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAccPwd(piso8583stru, &xmlstruReq, cKey))    ASSURE_NORMAL(GetBatchNoExt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetVouchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetMerchNo(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetExpDate(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(GetAmt(piso8583stru, &xmlstruReq))    ASSURE_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N"))        if (IsEntryMode(piso8583stru, "021") || IsEntryMode(piso8583stru, "022"))    {        UpdateInXmlExt(&xmlstruReq, AP_PATH_TRACKVERIFY, "Y");                ASSURE_NORMAL(GetTrack2(piso8583stru, &xmlstruReq))        ASSURE_NORMAL(GetTrack3(piso8583stru, &xmlstruReq))    }    ASSURE_NORMAL(RecordJournal(&xmlstruReq))    ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp))    VERIFY_NORMAL(UpdatePos(piso8583stru, &xmlstruResp));    SetBitInIso8583(piso8583stru, BIT_AMT, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_EXPDATE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_NII, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_FUNDTYPE, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_OPERATOR, NULL, 0);    SetBitInIso8583(piso8583stru, BIT_VOUCHNOBATCHNO, NULL, 0);    VERIFY_NORMAL(SetCertNo(piso8583stru, &xmlstruResp));    VERIFY_NORMAL(SetBal(piso8583stru, &xmlstruResp));    if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT))    {        if (!VERIFY_NORMAL(SetDateTime(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetHostTrace(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetAuthCode(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetRespCode(piso8583stru, &xmlstruResp)) ||            !VERIFY_NORMAL(SetMac(piso8583stru, cKey)))        {            DeleteXml(&xmlstruReq);            DeleteXml(&xmlstruResp); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -