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