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

📄 handle.cpre

📁 商业银行前置系统
💻 CPRE
📖 第 1 页 / 共 5 页
字号:
    if (memcmp(cSecurityCtrlInfo, "20", 2) == 0)    {        nSize = SIZE_PAN_MAX;        ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_PAN, szPan, &nSize));        ASSERT_NORMAL(Ansix98(cPin, szAccPwd, AP_LEN_ACCPWD, pcKey, szPan,                              FALSE));    }    else if (memcmp(cSecurityCtrlInfo, "10", 2) == 0)        ASSERT_NORMAL(Ansix98(cPin, szAccPwd, AP_LEN_ACCPWD, pcKey, NULL,                              FALSE));    else        DETECT(FALSE);       ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_ACCPWD, szAccPwd));    return NORMAL;}RESULT GetCurrType(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szCurrCode[SIZE_CURRCODE + 1];    UINT nSize;        bufclr(szCurrCode);    nSize = SIZE_CURRCODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_CURRCODE, szCurrCode,                                   &nSize));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_CURRTYPE, szCurrCode));    return NORMAL;}RESULT GetExpDate(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szTrack2[SIZE_TRACK2_MAX + 1];    char szExpDate[SIZE_EXPDATE + 1];    char szEntryMode[SIZE_ENTRYMODE + 1];    UINT nSize;    char *pcSign;    bufclr(szTrack2);    bufclr(szExpDate);    bufclr(szEntryMode);        nSize = SIZE_EXPDATE;    if (GetBitInIso8583(piso8583stru, BIT_EXPDATE, szExpDate, &nSize) ==        NORMAL)    {        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_EXPDATE, szExpDate));        return NORMAL;    }    nSize = SIZE_ENTRYMODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ENTRYMODE, szEntryMode,                                  &nSize));    if (memcmp(szEntryMode, "01", 2) == 0)    {        nSize = SIZE_EXPDATE;        GetBitInIso8583(piso8583stru, BIT_EXPDATE, szExpDate, &nSize);            if (strcmp(szExpDate, "") == 0)            strcpy(szExpDate, "9912");            ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_EXPDATE, szExpDate));        return NORMAL;    }    DETECT(memcmp(szEntryMode, "02", 2) == 0);            /*     * 按照联网联合关于磁条的规范,所有银行卡都必须使用第二磁道,所以     * 如果输入模式是刷卡,则必定包含第二磁道信息。     */         nSize = SIZE_TRACK2_MAX;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRACK2, szTrack2, &nSize));    DETECT_NULL(pcSign = strchr(szTrack2, '='));    memcpy(szExpDate, pcSign + 1, SIZE_EXPDATE);    if (!ApCsIsValidExpDate(szExpDate))        strcpy(szExpDate, "9912");    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_EXPDATE, szExpDate));    return NORMAL;}RESULT GetAmt(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szAmt[AP_LEN_AMT + 1];    char szTransAmt[SIZE_TRANSAMT + 1];    UINT nSize;        bufclr(szAmt);    bufclr(szTransAmt);        nSize = SIZE_TRANSAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRANSAMT, szTransAmt,                                  &nSize));        sprintf(szAmt, "%19.2lf", atof(szTransAmt) / 100);    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_AMT, szAmt));    return NORMAL;}RESULT GetTrackVerify(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szEntryMode[SIZE_ENTRYMODE + 1];    UINT nSize;        bufclr(szEntryMode);    nSize = SIZE_ENTRYMODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ENTRYMODE, szEntryMode,                                  &nSize));        if (memcmp(szEntryMode, "02", 2) == 0)        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "Y"));    else if (memcmp(szEntryMode, "01", 2) == 0)        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N"));    else        DETECT(FALSE);            return NORMAL;}RESULT GetTrack2(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szTrack2[SIZE_TRACK2_MAX + 1];    char szEntryMode[SIZE_ENTRYMODE + 1];    UINT nSize;        bufclr(szTrack2);    bufclr(szEntryMode);    nSize = SIZE_ENTRYMODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ENTRYMODE, szEntryMode,                                  &nSize));        if (memcmp(szEntryMode, "02", 2) == 0)    {        nSize = SIZE_TRACK2_MAX;        ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRACK2, szTrack2,                                      &nSize));         ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACK2, szTrack2));    }    return NORMAL;}RESULT GetTrack3(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szTrack3[SIZE_TRACK3_MAX + 1];    char szEntryMode[SIZE_ENTRYMODE + 1];    UINT nSize;        bufclr(szTrack3);    bufclr(szEntryMode);    nSize = SIZE_ENTRYMODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ENTRYMODE, szEntryMode,                                  &nSize));        if (memcmp(szEntryMode, "02", 2) == 0)    {        nSize = SIZE_TRACK3_MAX;        if (GetBitInIso8583(piso8583stru, BIT_TRACK3, szTrack3,                             &nSize) == NORMAL)            ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACK3, szTrack3));    }    return NORMAL;}RESULT GetReqSeqNo(PXMLSTRU pxmlstruReq){    char szReqSeqNo[AP_LEN_SEQNO + 1];    TIMESTRU timestru;            bufclr(szReqSeqNo);    timestru = GetTime();    sprintf(szReqSeqNo, "00%02d%02d%06ld",            timestru.nMon, timestru.nDay, nReqSeqNo);        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQSEQNO, szReqSeqNo));    return NORMAL;}RESULT GetReqSeqNoInReverse(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szOrgData[SIZE_ORGDATA + 1];    UINT nSize;    TIMESTRU timestru;        EXEC SQL BEGIN DECLARE SECTION;    DSIJSTRU dsijstru;    EXEC SQL END DECLARE SECTION;        bufclr(szOrgData);        nSize = SIZE_ORGDATA;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ORGDATA, szOrgData,                                   &nSize));    memset(&dsijstru, 0, sizeof(DSIJSTRU));        memcpy(dsijstru.szTraceNo, &szOrgData[4], SIZE_TRACENO);    memcpy(dsijstru.szForwardId, &szOrgData[31 + 3], SIZE_FORWARDID_MAX - 3);    timestru = GetTime();    sprintf(dsijstru.szSettleDate, "%04d", timestru.nYear);    nSize = SIZE_SETTLEDATE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_SETTLEDATE,                                  dsijstru.szSettleDate + 4, &nSize));    EXEC SQL SELECT * FROM dsij INTO :dsijstru              WHERE settledate = :dsijstru.szSettleDate AND                   traceno = :dsijstru.szTraceNo AND                   forwardid = :dsijstru.szForwardId;                       ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQSEQNO, dsijstru.szReqSeqNo));    return NORMAL;}RESULT GetOrgReqSeqNo(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szOrgData[SIZE_ORGDATA + 1];    UINT nSize;    TIMESTRU timestru;        EXEC SQL BEGIN DECLARE SECTION;    DSIJSTRU dsijstru;    EXEC SQL END DECLARE SECTION;        bufclr(szOrgData);        nSize = SIZE_ORGDATA;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ORGDATA, szOrgData,                                   &nSize));    memset(&dsijstru, 0, sizeof(DSIJSTRU));        memcpy(dsijstru.szTraceNo, &szOrgData[4], SIZE_TRACENO);    memcpy(dsijstru.szForwardId, &szOrgData[31 + 3], SIZE_FORWARDID_MAX - 3);    timestru = GetTime();    sprintf(dsijstru.szSettleDate, "%04d", timestru.nYear);    nSize = SIZE_SETTLEDATE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_SETTLEDATE,                                  dsijstru.szSettleDate + 4, &nSize));    EXEC SQL SELECT * FROM dsij INTO :dsijstru              WHERE settledate = :dsijstru.szSettleDate AND                   traceno = :dsijstru.szTraceNo AND                   forwardid = :dsijstru.szForwardId;                       ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_ORGREQSEQNO, dsijstru.szReqSeqNo));    return NORMAL;}RESULT GetAuthCode(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    char szAuthResp[SIZE_AUTHRESP + 1];    UINT nSize;        bufclr(szAuthResp);    nSize = SIZE_AUTHRESP;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_AUTHRESP, szAuthResp,                                  &nSize));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_AUTHCODE, szAuthResp));    return NORMAL;}RESULT GetKickback(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    /*     * 通常情况下,人行交换中心事后清算服务费,而不会实时地传给     * 发卡方回扣率等计费信息,但也有一些地区(如青岛)利用121     * 域传来受理方回扣率。         char szTransAmt[SIZE_TRANSAMT + 1];    char szNationReserve[SIZE_NATIONRESERVE_MAX + 1];    char szKickback[AP_LEN_KICKBACK + 1];    UINT nSize;        bufclr(szTransAmt);    nSize = SIZE_TRANSAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRANSAMT, szTransAmt,                                  &nSize));        nSize = SIZE_NATIONRESERVE_MAX;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_NATIONRESERVE,                                  szNationReserve, &nSize));    szNationReserve[6] = 0;    sprintf(szKickback, "%19.2lf",            atof(szTransAmt) * atof(szNationReserve) / 1000000.00);            ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_KICKBACK, szKickback));    return NORMAL;    */    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_KICKBACK, "0.00"));    return NORMAL;}RESULT GetSettle(PISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq){    UINT nSize;    char szMsgId[SIZE_MSGID + 1];    char szNetManCode[SIZE_NETMANCODE + 1];    char szNetSettleAmt[SIZE_NETSETTLEAMT + 1];    char szSettleCode[AP_LEN_SETTLECODE + 1];        char szNum[AP_LEN_NUM + 1];    char szAmt[AP_LEN_AMT + 1];    char szFee[AP_LEN_FEE + 1];        bufclr(szMsgId);    bufclr(szNetManCode);    bufclr(szNetSettleAmt);    bufclr(szSettleCode);    bufclr(szAmt);    bufclr(szFee);    bufclr(szNum);    nSize = SIZE_MSGID;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_MSGID, szMsgId, &nSize));    nSize = SIZE_NETMANCODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_NETMANCODE, szNetManCode,                                   &nSize));                                      sprintf(szSettleCode, "%4s%3s", szMsgId, szNetManCode);    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_SETTLECODE, szSettleCode));        nSize = SIZE_CREDITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_CREDITNUM, szNum, &nSize));        sprintf(szNum, "%6d", atoi(szNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_CREDITNUM, szNum));       nSize = SIZE_REVERSECREDITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSECREDITNUM, szNum,                                  &nSize));                                      sprintf(szNum, "%6d", atoi(szNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSECREDITNUM, szNum));       nSize = SIZE_DEBITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_DEBITNUM, szNum, &nSize));                                      sprintf(szNum, "%6d", atoi(szNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_DEBITNUM, szNum));       nSize = SIZE_REVERSEDEBITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSEDEBITNUM, szNum,                                  &nSize));                                      sprintf(szNum, "%6d", atoi(szNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSEDEBITNUM, szNum));       nSize = SIZE_TRANSFERNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRANSFERNUM, szNum,                                  &nSize));                                      sprintf(szNum, "%6d", atoi(szNum));

⌨️ 快捷键说明

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