📄 converse.cpre
字号:
}RESULT GetAcceptorName(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szMerchName[AP_LEN_MERCHNAME + 1]; char szReqType[AP_LEN_REQTYPE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType)); if (strcmp(szReqType, AP_REQTYPE_ATM) == 0) sprintf(szMerchName, "%-40s", "CHNLNDLCPABC"); else ASSERT_NORMAL(AP_DEMAND(AP_PATH_MERCHNAME, szMerchName)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME, szMerchName, SIZE_ACCEPTORNAME)); return NORMAL;}RESULT GetCurrCode(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szCurrType[AP_LEN_CURRTYPE + 1]; if (AP_DEMAND(AP_PATH_CURRTYPE, szCurrType) != NORMAL) strcpy(szCurrType, AP_CURRTYPE_CNY); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CURRCODE, szCurrType, SIZE_CURRCODE)); return NORMAL;}RESULT GetPin(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru, PUCHAR pcKey){ UCHAR cPin[SIZE_PIN]; char szAccPwd[AP_LEN_ACCPWD + 1]; char szAccNo[AP_LEN_ACCNO + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_ACCPWD, szAccPwd)); ASSERT_NORMAL(AP_DEMAND(AP_PATH_ACCNO, szAccNo)); ASSERT_NORMAL(Ansix98(cPin, szAccPwd, AP_LEN_ACCPWD, pcKey, szAccNo, TRUE)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PIN, cPin, SIZE_PIN)); return NORMAL;}RESULT GetSecurityCtrlInfo(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szAccPwd[AP_LEN_ACCPWD + 1]; if (AP_DEMAND(AP_PATH_ACCPWD, szAccPwd) == NORMAL) ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_SECURITYCTRLINFO, "2000000000000000", SIZE_SECURITYCTRLINFO)); return NORMAL;}RESULT GetAcqReserve(PXMLSTRU pxmlstruReq, PISO8583STRU piso8583stru){ char szKickbackRate[AP_LEN_KICKBACKRATE + 1]; char szAcqReserve[SIZE_ACQRESERVE_MAX + 1]; char szReqType[AP_LEN_REQTYPE + 1]; ASSERT_NORMAL(AP_DEMAND(AP_PATH_REQTYPE, szReqType)); if (strcmp(szReqType, AP_REQTYPE_ATM) == 0) strcpy(szAcqReserve, "000000"); else { ASSERT_NORMAL(AP_DEMAND(AP_PATH_KICKBACKRATE, szKickbackRate)); sprintf(szAcqReserve, "%06.0lf", atof(szKickbackRate) * 10000.00); } ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACQRESERVE, szAcqReserve, strlen(szAcqReserve))); return NORMAL;}RESULT SetBal(PXMLSTRU pxmlstruResp, PISO8583STRU piso8583stru){ UINT nSize; char szBal[AP_LEN_BAL + 1]; char szAddAmt[SIZE_ADDAMT_MAX + 1]; nSize = SIZE_ADDAMT_MAX; bufclr(szAddAmt); ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ADDAMT, szAddAmt, &nSize)); DETECT(nSize == SIZE_ADDAMT_MAX); bufclr(szBal); if (memcmp(szAddAmt + 2, "01", 2) == 0) { DETECT(memcmp(szAddAmt + 4, AP_CURRTYPE_CNY, AP_LEN_CURRTYPE) == 0); memcpy(szBal, szAddAmt + 8, 12); if (szAddAmt[7] == 'C') sprintf(szBal, "%19.2lf", atof(szBal) / 100); else if (szAddAmt[7] == 'D') sprintf(szBal, "%19.2lf", -atof(szBal) / 100); else DETECT(FALSE); } else if (memcmp(szAddAmt + 22, "01", 2) == 0) { DETECT(memcmp(szAddAmt + 24, AP_CURRTYPE_CNY, AP_LEN_CURRTYPE) == 0); memcpy(szBal, szAddAmt + 28, 12); if (szAddAmt[27] == 'C') sprintf(szBal, "%19.2lf", atof(szBal) / 100); else if (szAddAmt[27] == 'D') sprintf(szBal, "%19.2lf", -atof(szBal) / 100); else DETECT(FALSE); } else DETECT(FALSE); ASSERT_NORMAL(AP_INSERT(AP_PATH_BAL, szBal)); return NORMAL;}RESULT SetAvailBal(PXMLSTRU pxmlstruResp, PISO8583STRU piso8583stru){ UINT nSize; char szAvailBal[AP_LEN_BAL + 1]; char szAddAmt[SIZE_ADDAMT_MAX + 1]; nSize = SIZE_ADDAMT_MAX; bufclr(szAddAmt); ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_ADDAMT, szAddAmt, &nSize)); DETECT(nSize == SIZE_ADDAMT_MAX); bufclr(szAvailBal); if (memcmp(szAddAmt + 2, "02", 2) == 0) { DETECT(memcmp(szAddAmt + 4, AP_CURRTYPE_CNY, AP_LEN_CURRTYPE) == 0); memcpy(szAvailBal, szAddAmt + 8, 12); if (szAddAmt[7] == 'C') sprintf(szAvailBal, "%19.2lf", atof(szAvailBal) / 100); else if (szAddAmt[7] == 'D') sprintf(szAvailBal, "%19.2lf", -atof(szAvailBal) / 100); else DETECT(FALSE); } else if (memcmp(szAddAmt + 22, "02", 2) == 0) { DETECT(memcmp(szAddAmt + 24, AP_CURRTYPE_CNY, AP_LEN_CURRTYPE) == 0); memcpy(szAvailBal, szAddAmt + 28, 12); if (szAddAmt[27] == 'C') sprintf(szAvailBal, "%19.2lf", atof(szAvailBal) / 100); else if (szAddAmt[27] == 'D') sprintf(szAvailBal, "%19.2lf", -atof(szAvailBal) / 100); else DETECT(FALSE); } else DETECT(FALSE); ASSERT_NORMAL(AP_INSERT(AP_PATH_AVAILBAL, szAvailBal)); return NORMAL;}RESULT SetRespCode(PXMLSTRU pxmlstruResp, PISO8583STRU piso8583stru){ UINT n = 0, nSize; char szRespCode[SIZE_RESPCODE + 1]; bufclr(szRespCode); nSize = SIZE_RESPCODE; ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_RESPCODE, szRespCode, &nSize)); while (pszRespCode[n][0] != NULL) { if (strcmp(szRespCode, pszRespCode[n][0]) == 0) { ASSERT_NORMAL(AP_UPDATE(AP_PATH_RESPCODE, pszRespCode[n][1])); return NORMAL; } n++; } ASSERT_NORMAL(AP_UPDATE(AP_PATH_RESPCODE, AP_RESPCODE_REJECT)); return NORMAL;}RESULT SetExpDate(PXMLSTRU pxmlstruResp, PISO8583STRU piso8583stru){ UINT nSize; char szExpDate[SIZE_EXPDATE + 1]; bufclr(szExpDate); nSize = SIZE_EXPDATE; ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_EXPDATE, szExpDate, &nSize)); ASSERT_NORMAL(AP_INSERT(AP_PATH_EXPDATE, szExpDate)); return NORMAL;}RESULT SetAuthCode(PXMLSTRU pxmlstruResp, PISO8583STRU piso8583stru){ UINT nSize; char szAuthResp[SIZE_AUTHRESP + 1]; bufclr(szAuthResp); nSize = SIZE_AUTHRESP; ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_AUTHRESP, szAuthResp, &nSize)); ASSERT_NORMAL(AP_INSERT(AP_PATH_AUTHCODE, szAuthResp)); return NORMAL;}RESULT SetSettleDate(PXMLSTRU pxmlstruResp, PISO8583STRU piso8583stru){ UINT nSize; char szSettleDate[AP_LEN_DATE + 1]; TIMESTRU timestru; bufclr(szSettleDate); nSize = SIZE_SETTLEDATE; timestru = GetTime(); sprintf(szSettleDate, "%04d", timestru.nYear); ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_SETTLEDATE, szSettleDate + 4, &nSize)); ASSERT_NORMAL(AP_INSERT(AP_PATH_SETTLEDATE, szSettleDate)); return NORMAL;}RESULT GetOrgInfo(PCSTR pszSeqNo, PISO8583STRU piso8583stru){ EXEC SQL BEGIN DECLARE SECTION; DSIDSTRU dsidstru; EXEC SQL END DECLARE SECTION; char szOrgData[SIZE_ORGDATA + 1]; strcpy(dsidstru.szSeqNo, pszSeqNo); EXEC SQL SELECT * FROM dsid INTO :dsidstru WHERE seqno = :dsidstru.szSeqNo; ASSERT_SQL_NORMAL(); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_MSGID, dsidstru.szMsgId, SIZE_MSGID)); TrimString(dsidstru.szPan); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PAN, dsidstru.szPan, strlen(dsidstru.szPan))); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PROCESSCODE, dsidstru.szProcessCode, SIZE_PROCESSCODE)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSAMT, dsidstru.szTransAmt, SIZE_TRANSAMT)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TRANSMISSDATETIME, dsidstru.szTransmissDateTime, SIZE_TRANSMISSDATETIME)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_LOCALTRANSTIME, dsidstru.szLocalTransTime, SIZE_LOCALTRANSTIME)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_LOCALTRANSDATE, dsidstru.szLocalTransDate, SIZE_LOCALTRANSDATE)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_MERCHTYPE, dsidstru.szMerchType, SIZE_MERCHTYPE)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, dsidstru.szEntryMode, SIZE_ENTRYMODE)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CONDITIONCODE, dsidstru.szConditionCode, SIZE_CONDITIONCODE)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACQID, dsidstru.szAcqId, SIZE_ID)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_FORWARDID, dsidstru.szForwardId, SIZE_ID)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_RETRIEVALREFNO, pszSeqNo, SIZE_RETRIEVALREFNO)); if (strcmp(dsidstru.szAuthResp, " ") != 0) ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_AUTHRESP, dsidstru.szAuthResp, SIZE_AUTHRESP)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_TERMID, dsidstru.szTermId, SIZE_TERMID)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACCEPTORID, dsidstru.szAcceptorId, SIZE_ACCEPTORID)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME, dsidstru.szAcceptorName, SIZE_ACCEPTORNAME)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_CURRCODE, dsidstru.szCurrCode, SIZE_CURRCODE)); strcpy(szOrgData, dsidstru.szMsgId); strcat(szOrgData, pszSeqNo + 6); strcat(szOrgData, dsidstru.szTransmissDateTime); strcat(szOrgData, "000"); strncat(szOrgData, dsidstru.szAcqId, SIZE_ID); strcat(szOrgData, "000"); strncat(szOrgData, dsidstru.szForwardId, SIZE_ID); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ORGDATA, szOrgData, SIZE_ORGDATA)); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_ACQRESERVE, dsidstru.szAcqReserve, strlen(dsidstru.szAcqReserve))); return NORMAL;}/* End of this file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -