📄 handle.cpre
字号:
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 + -