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

📄 handle.cpre

📁 商业银行前置系统
💻 CPRE
📖 第 1 页 / 共 5 页
字号:
    else if (*pszAmt == 'D')        dAmt = atof(pszAmt + 1) / -100.0;            else        dAmt = atof(pszAmt) / 100.0;        sprintf(pszAmt, "%.2lf", dAmt);}void SetNumInSettle(PSTR pszNum, UINT nLen){    sprintf(pszNum,"%0*d", nLen, atoi(pszNum));}void SetAmtInSettle(PSTR pszAmt, UINT nLen){    double dAmt;        dAmt = atof(pszAmt) * 100.0;    sprintf(pszAmt, "%0*.0lf", nLen, dAmt);}RESULT GetSettle(PXMLSTRU pxmlstruReq, PCISO8583STRU piso8583stru){    char szCreditNum[SIZE_CREDITNUM + 1];    char szDebitNum[SIZE_DEBITNUM + 1];    char szTransferNum[SIZE_TRANSFERNUM + 1];    char szReverseCreditNum[SIZE_REVERSECREDITNUM + 1];    char szReverseDebitNum[SIZE_REVERSEDEBITNUM + 1];    char szReverseTransferNum[SIZE_REVERSETRANSFERNUM + 1];    char szInqNum[SIZE_INQNUM + 1];    char szAuthNum[SIZE_AUTHNUM + 1];    char szCreditFee[SIZE_CREDITFEE + 1];    char szDebitFee[SIZE_DEBITFEE + 1];    char szCreditAmt[SIZE_CREDITAMT + 1];    char szDebitAmt[SIZE_DEBITAMT + 1];    char szReverseCreditAmt[SIZE_REVERSECREDITAMT + 1];    char szReverseDebitAmt[SIZE_REVERSEDEBITAMT + 1];    char szNetSettleAmt[SIZE_NETSETTLEAMT + 1];    char szServiceCode[SIZE_SERVICECODE + 1];    UINT nSize;        bufclr(szCreditNum);    bufclr(szDebitNum);    bufclr(szTransferNum);    bufclr(szReverseCreditNum);    bufclr(szReverseDebitNum);    bufclr(szReverseTransferNum);    bufclr(szInqNum);    bufclr(szAuthNum);    bufclr(szCreditFee);    bufclr(szDebitFee);    bufclr(szCreditAmt);    bufclr(szDebitAmt);    bufclr(szReverseCreditAmt);    bufclr(szReverseDebitAmt);    bufclr(szNetSettleAmt);    bufclr(szServiceCode);        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_MSGTYPE, AP_MSGTYPE_SUBMITREQ));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_SETTLE));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQID, AP_REQID_ISI));    ASSERT_NORMAL(GetReqDate(piso8583stru, pxmlstruReq));    ASSERT_NORMAL(GetReqTime(piso8583stru, pxmlstruReq));    ASSERT_NORMAL(GetReqSeqNoInSettle(piso8583stru, pxmlstruReq));    ASSERT_NORMAL(GetCurrTypeInSettle(piso8583stru, pxmlstruReq));    ASSERT_NORMAL(GetAccTypeInSettle(piso8583stru, pxmlstruReq));    ASSERT_NORMAL(GetSettleDate(piso8583stru, pxmlstruReq));    ASSERT_NORMAL(GetOrgReqType(piso8583stru, pxmlstruReq));    nSize = SIZE_CREDITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_CREDITNUM,                                  szCreditNum, &nSize));                                      nSize = SIZE_DEBITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_DEBITNUM,                                  szDebitNum, &nSize));                                      nSize = SIZE_TRANSFERNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_TRANSFERNUM,                                  szTransferNum, &nSize));                                      nSize = SIZE_REVERSECREDITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSECREDITNUM,                                  szReverseCreditNum, &nSize));                                      nSize = SIZE_REVERSEDEBITNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSEDEBITNUM,                                  szReverseDebitNum, &nSize));                                      nSize = SIZE_REVERSETRANSFERNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSETRANSFERNUM,                                  szReverseTransferNum, &nSize));                                      nSize = SIZE_INQNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_INQNUM, szInqNum, &nSize));    nSize = SIZE_AUTHNUM;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_AUTHNUM,                                   szAuthNum, &nSize));    nSize = SIZE_CREDITFEE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_CREDITFEE,                                  szCreditFee, &nSize));                                      nSize = SIZE_DEBITFEE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_DEBITFEE,                                  szDebitFee, &nSize));        nSize = SIZE_CREDITAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_CREDITAMT,                                  szCreditAmt, &nSize));                                      nSize = SIZE_REVERSECREDITAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSECREDITAMT,                                  szReverseCreditAmt, &nSize));                                      nSize = SIZE_DEBITAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_DEBITAMT,                                  szDebitAmt, &nSize));                                      nSize = SIZE_REVERSEDEBITAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_REVERSEDEBITAMT,                                  szReverseDebitAmt, &nSize));        nSize = SIZE_NETSETTLEAMT;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_NETSETTLEAMT,                                  szNetSettleAmt, &nSize));        nSize = SIZE_SERVICECODE;    ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_SERVICECODE,                                  szServiceCode, &nSize));    GetNumInSettle(szCreditNum);    GetNumInSettle(szDebitNum);    GetNumInSettle(szTransferNum);    GetNumInSettle(szReverseCreditNum);    GetNumInSettle(szReverseDebitNum);    GetNumInSettle(szReverseTransferNum);    GetNumInSettle(szInqNum);    GetNumInSettle(szAuthNum);    GetAmtInSettle(szCreditFee);    GetAmtInSettle(szDebitFee);    GetAmtInSettle(szCreditAmt);    GetAmtInSettle(szDebitAmt);    GetAmtInSettle(szReverseCreditAmt);    GetAmtInSettle(szReverseDebitAmt);    GetAmtInSettle(szNetSettleAmt);        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_CREDITNUM, szCreditNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_CREDITAMT, szCreditAmt));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_DEBITNUM, szDebitNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_DEBITAMT, szDebitAmt));        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSECREDITNUM, szReverseCreditNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSECREDITAMT, szReverseCreditAmt));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSEDEBITNUM, szReverseDebitNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSEDEBITAMT, szReverseDebitAmt));        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSFERNUM, szTransferNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REVERSETRANSFERNUM,                                 szReverseTransferNum));                                    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_QUERYNUM, szInqNum));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_AUTHNUM, szAuthNum));        ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_CREDITFEE, szCreditFee));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_DEBITFEE, szDebitFee));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_SETTLEAMT, szNetSettleAmt));    ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_SETTLECODE, szServiceCode));     return NORMAL;}RESULT SetSettle(PISO8583STRU piso8583stru, PCXMLSTRU pxmlstruResp){    char szCreditNum[AP_LEN_NUM + 1];    char szDebitNum[AP_LEN_NUM + 1];    char szTransferNum[AP_LEN_NUM + 1];    char szReverseCreditNum[AP_LEN_NUM + 1];    char szReverseDebitNum[AP_LEN_NUM + 1];    char szReverseTransferNum[AP_LEN_NUM + 1];    char szInqNum[AP_LEN_NUM + 1];    char szAuthNum[AP_LEN_NUM + 1];    char szCreditFee[AP_LEN_FEE + 1];    char szDebitFee[AP_LEN_FEE + 1];    char szCreditAmt[AP_LEN_AMT + 1];    char szDebitAmt[AP_LEN_AMT + 1];    char szReverseCreditAmt[AP_LEN_AMT + 1];    char szReverseDebitAmt[AP_LEN_AMT + 1];    char szSettleAmt[AP_LEN_AMT + 1];    char *pcSign;        bufclr(szCreditNum);    bufclr(szDebitNum);    bufclr(szTransferNum);    bufclr(szReverseCreditNum);    bufclr(szReverseDebitNum);    bufclr(szReverseTransferNum);    bufclr(szInqNum);    bufclr(szAuthNum);    bufclr(szCreditFee);    bufclr(szDebitFee);    bufclr(szCreditAmt);    bufclr(szDebitAmt);    bufclr(szReverseCreditAmt);    bufclr(szReverseDebitAmt);    bufclr(szSettleAmt);    ASSERT_NORMAL(SetSettleCode(pxmlstruResp, piso8583stru));        if (!ApIsRespCode(pxmlstruResp, AP_RESPCODE_ACCEPT) &&        !ApIsRespCode(pxmlstruResp, AP_RESPCODE_SETTLE_NOTEQUAL))    {        ASSERT_NORMAL(SetMac(piso8583stru, cSettleMac, BIT_MAC128));        return NORMAL;    }    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_CREDITNUM, szCreditNum));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_CREDITAMT, szCreditAmt));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_DEBITNUM, szDebitNum));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_DEBITAMT, szDebitAmt));        ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_REVERSECREDITNUM, szReverseCreditNum));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_REVERSECREDITAMT, szReverseCreditAmt));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_REVERSEDEBITNUM, szReverseDebitNum));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_REVERSEDEBITAMT, szReverseDebitAmt));        ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_TRANSFERNUM, szTransferNum));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_REVERSETRANSFERNUM,                                 szReverseTransferNum));                                    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_QUERYNUM, szInqNum));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_AUTHNUM, szAuthNum));        ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_CREDITFEE, szCreditFee));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_DEBITFEE, szDebitFee));    ASSERT_NORMAL(AP_DEMAND_EXT(AP_PATH_SETTLEAMT, szSettleAmt));    SetNumInSettle(szCreditNum, SIZE_CREDITNUM);    SetNumInSettle(szDebitNum, SIZE_DEBITNUM);    SetNumInSettle(szTransferNum, SIZE_TRANSFERNUM);    SetNumInSettle(szReverseCreditNum, SIZE_REVERSECREDITNUM);    SetNumInSettle(szReverseDebitNum, SIZE_REVERSEDEBITNUM);    SetNumInSettle(szReverseTransferNum, SIZE_REVERSETRANSFERNUM);    SetNumInSettle(szInqNum, SIZE_INQNUM);    SetNumInSettle(szAuthNum, SIZE_AUTHNUM);    SetAmtInSettle(szCreditFee, SIZE_CREDITFEE);    SetAmtInSettle(szDebitFee, SIZE_DEBITFEE);    SetAmtInSettle(szCreditAmt, SIZE_CREDITAMT);    SetAmtInSettle(szDebitAmt, SIZE_DEBITAMT);    SetAmtInSettle(szReverseCreditAmt, SIZE_REVERSECREDITAMT);    SetAmtInSettle(szReverseDebitAmt, SIZE_REVERSEDEBITAMT);    SetAmtInSettle(szSettleAmt, SIZE_NETSETTLEAMT);    if ((pcSign = strchr(szSettleAmt, '-')) != NULL)    {    	*pcSign = '0';        szSettleAmt[0] = 'D';    }    else        szSettleAmt[0] = 'C';    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CREDITNUM,                                  szCreditNum, SIZE_CREDITNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_DEBITNUM,                                  szDebitNum, SIZE_DEBITNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSFERNUM,                                  szTransferNum, SIZE_TRANSFERNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_REVERSECREDITNUM,                                   szReverseCreditNum, SIZE_REVERSECREDITNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_REVERSEDEBITNUM,                                  szReverseDebitNum, SIZE_REVERSEDEBITNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_REVERSETRANSFERNUM,                                  szReverseTransferNum,                                   SIZE_REVERSETRANSFERNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_INQNUM,                                  szInqNum, SIZE_INQNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_AUTHNUM,                                  szAuthNum, SIZE_AUTHNUM));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CREDITFEE,                                   szCreditFee, SIZE_CREDITFEE));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_DEBITFEE,                                  szDebitFee, SIZE_DEBITFEE));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CREDITAMT,                                  szCreditAmt, SIZE_CREDITAMT));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_DEBITAMT,                                  szDebitAmt, SIZE_DEBITAMT));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_REVERSECREDITAMT,                                  szReverseCreditAmt, SIZE_REVERSECREDITAMT));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_REVERSEDEBITAMT,                                  szReverseDebitAmt, SIZE_REVERSEDEBITAMT));                                      ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_NETSETTLEAMT,                                  szSettleAmt, SIZE_NETSETTLEAMT));    return NORMAL;}     RESULT HandleSettle(PISO8583STRU piso8583stru){    XMLSTRU xmlstruReq, xmlstruResp;    memset(&xmlstruReq, 0, sizeof(xmlstruReq));    memset(&xmlstruResp, 0, sizeof(xmlstruResp));    if (!VERIFY_NORMAL(VerifyMac(piso8583stru, cSettleMac, BIT_MAC128)))    {        SetBitInIso8583(piso8583stru, BIT_MSGID, "0510", SIZE_MSGID);        ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SETTLECODE, "3",                                      SIZE_SETTLECODE));                                              ASSERT_NORMAL(SetMac(piso8583stru, cSettleMac, BIT_MAC128));        RETURN_RESULT(NORMAL)    }    SetBitInIso8583(piso8583stru, BIT_MSGID, "0510", SIZE_MSGID);    ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SETTLECODE, "3",                                  SIZE_SETTLECODE));                                          ASSERT_NORMAL(SetMac(piso8583stru, cSettleMac, BIT_MAC128));    if (!VERIFY_NORMAL(CreateXml(&xmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ||        !VERIFY_NORMAL(GetSettle(&xmlstruReq, piso8583stru)) ||        !VERIFY_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp)) ||        !VERIFY_NORMAL(SetSettle(piso8583stru, &xmlstruResp)) ||        !VERIFY_NORMAL(SetMac(piso8583stru, cSettleMac, BIT_MAC128)))        RETURN_RESULT(NORMAL)            RETURN_RESULT(NORMAL)}#undef ASSURE_NORMAL#define ASSURE_NORMAL(r) \    { \        RESULT rTemp = (r); \        if (rTemp == EXCEPTION) \            VERIFY_NORMAL(FillRespIso8583(piso8583stru, "96")); \        if (rTemp == INVALID) \            VERIFY_NORMAL(FillRespIso8583(piso8583stru, "30")); \        if (rTe

⌨️ 快捷键说明

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