📄 handle.cpre
字号:
RESULT HandleTransferOut(PISO8583STRU piso8583stru){ UINT nBit = 0; XMLSTRU xmlstruReq, xmlstruResp; BOOL bIsReverse; memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bIsReverse = IsReverse(piso8583stru); nBit = bIsReverse ? BIT_MAC128 : BIT_MAC64; ASSURE_NORMAL(VerifyMac(piso8583stru, cTransMac, nBit)) ASSURE_NORMAL(CreateXml(&xmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(GetTransferOut(&xmlstruReq, piso8583stru, bIsReverse)) ASSURE_NORMAL(RecordJournal(&xmlstruReq, piso8583stru)) ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp)) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION)) RETURN_RESULT(EXCEPTION) else { if (!VERIFY_NORMAL(SetTransferOut(piso8583stru, &xmlstruResp, bIsReverse))) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT)) RETURN_RESULT(EXCEPTION) } RETURN_RESULT(NORMAL)}/* * 改密。 */RESULT GetChangePin(PXMLSTRU pxmlstruReq, PCISO8583STRU piso8583stru){ ASSERT_NORMAL(INSERT_MSGTYPE(FALSE)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_CHANGEPIN)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQID, AP_REQID_ISI)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "Y")); ASSERT_NORMAL(GetReqDate(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetReqTime(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetReqSeqNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAccNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAccPwd(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAccNewPwd(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetCurrType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetTrack2(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetTrack3(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetExpDate(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetMerchNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetMerchType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetSettleDate(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetOrgReqType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAgent(piso8583stru, pxmlstruReq)); return NORMAL;}RESULT SetChangePin(PISO8583STRU piso8583stru, PCXMLSTRU pxmlstruResp){ SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0); SetBitInIso8583(piso8583stru, BIT_PINCAPTURECODE, NULL, 0); SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0); SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0); SetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME, NULL, 0); SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0); SetBitInIso8583(piso8583stru, BIT_ORGDATA, NULL, 0); ASSERT_NORMAL(SetRespCode(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetAddResp(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetExpDate(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetMac(piso8583stru, cTransMac, BIT_MAC128)); return NORMAL;} RESULT HandleChangePin(PISO8583STRU piso8583stru){ UINT nBit = BIT_MAC128; XMLSTRU xmlstruReq, xmlstruResp; memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); ASSURE_NORMAL(VerifyMac(piso8583stru, cTransMac, BIT_MAC128)) ASSURE_NORMAL(CreateXml(&xmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(GetChangePin(&xmlstruReq, piso8583stru)) ASSURE_NORMAL(RecordJournal(&xmlstruReq, piso8583stru)) ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp)) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION)) RETURN_RESULT(EXCEPTION) else { if (!VERIFY_NORMAL(SetChangePin(piso8583stru, &xmlstruResp))) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT)) RETURN_RESULT(EXCEPTION) } RETURN_RESULT(NORMAL)}/* * 挂失。 */RESULT GetLost(PXMLSTRU pxmlstruReq, PCISO8583STRU piso8583stru, BOOL bIsReverse){ ASSERT_NORMAL(INSERT_MSGTYPE(bIsReverse)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_LOST)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQID, AP_REQID_ISI)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N")); ASSERT_NORMAL(GetReqDate(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetReqTime(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAccNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetCurrType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetMerchNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetMerchType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetSettleDate(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetOrgReqType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAgent(piso8583stru, pxmlstruReq)); if (!bIsReverse) { ASSERT_NORMAL(GetReqSeqNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAccPwd(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetExpDate(piso8583stru, pxmlstruReq)); } else ASSERT_NORMAL(GetReqSeqNoInReverse(piso8583stru, pxmlstruReq)); return NORMAL;}RESULT SetLost(PISO8583STRU piso8583stru, PCXMLSTRU pxmlstruResp, BOOL bIsReverse){ SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0); SetBitInIso8583(piso8583stru, BIT_PINCAPTURECODE, NULL, 0); SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0); SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0); SetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME, NULL, 0); SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0); SetBitInIso8583(piso8583stru, BIT_ORGDATA, NULL, 0); ASSERT_NORMAL(SetRespCode(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetAddResp(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetMac(piso8583stru, cTransMac, bIsReverse ? BIT_MAC128 : BIT_MAC64)); return NORMAL;} RESULT HandleLost(PISO8583STRU piso8583stru){ UINT nBit = 0; XMLSTRU xmlstruReq, xmlstruResp; BOOL bIsReverse; memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bIsReverse = IsReverse(piso8583stru); nBit = bIsReverse ? BIT_MAC128 : BIT_MAC64; ASSURE_NORMAL(VerifyMac(piso8583stru, cTransMac, nBit)) ASSURE_NORMAL(CreateXml(&xmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(GetLost(&xmlstruReq, piso8583stru, bIsReverse)) ASSURE_NORMAL(RecordJournal(&xmlstruReq, piso8583stru)) ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp)) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION)) RETURN_RESULT(EXCEPTION) else { if (!VERIFY_NORMAL(SetLost(piso8583stru, &xmlstruResp, bIsReverse))) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT)) RETURN_RESULT(EXCEPTION) } RETURN_RESULT(NORMAL)}/* * 撤消。 */RESULT GetOrgTransCode(PCISO8583STRU piso8583stru, PXMLSTRU pxmlstruReq) { char szProcessCode[SIZE_PROCESSCODE + 1]; char szTransCode[AP_LEN_TRANSCODE + 1]; UINT nSize; bufclr(szTransCode); bufclr(szProcessCode); nSize = SIZE_PROCESSCODE; ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_PROCESSCODE, szProcessCode, &nSize)); if (strcmp(szProcessCode, "230000") == 0) strcpy(szTransCode, AP_TRANSCODE_CS_AUTHSETTLE); else if (strcmp(szProcessCode, "020000") == 0) strcpy(szTransCode, AP_TRANSCODE_CS_DEPOSIT); else if (strcmp(szProcessCode, "220000") == 0) strcpy(szTransCode, AP_TRANSCODE_CS_WITHDRAW); else if (strcmp(szProcessCode, "200000") == 0) { char szConditionCode[BIT_CONDITIONCODE + 1]; bufclr(szConditionCode); nSize = SIZE_CONDITIONCODE; ASSERT_NORMAL(GetBitInIso8583(piso8583stru, BIT_CONDITIONCODE, szConditionCode, &nSize)); if (strcmp(szConditionCode, "06") == 0) { strcpy(szTransCode, AP_TRANSCODE_CS_AUTH); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_MANUALAUTH, "N")); } else strcpy(szTransCode, AP_TRANSCODE_CS_CONSUME); } else if (strcmp(szProcessCode, "203000") == 0) { strcpy(szTransCode, AP_TRANSCODE_CS_AUTH); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_MANUALAUTH, "Y")); } else if (strcmp(szProcessCode, "481000") == 0) strcpy(szTransCode, AP_TRANSCODE_CS_TRANSFEROUT); else if (strcmp(szProcessCode, "480010") == 0) strcpy(szTransCode, AP_TRANSCODE_CS_TRANSFERIN); else if (strcmp(szProcessCode, "601000") == 0) strcpy(szTransCode, AP_TRANSCODE_CS_LOST); else ASSERT_NORMAL(INVALID); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_ORGTRANSCODE, szTransCode)); return NORMAL;}RESULT GetCancel(PXMLSTRU pxmlstruReq, PCISO8583STRU piso8583stru, BOOL bIsReverse){ ASSERT_NORMAL(INSERT_MSGTYPE(bIsReverse)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRANSCODE, AP_TRANSCODE_CS_CANCEL)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_REQID, AP_REQID_ISI)); ASSERT_NORMAL(AP_INSERT_EXT(AP_PATH_TRACKVERIFY, "N")); ASSERT_NORMAL(GetReqDate(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetReqTime(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetOrgRespSeqNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetOrgReqType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAccNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetCurrType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAmt(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetFee(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetMerchNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetMerchType(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetSettleDate(piso8583stru, pxmlstruReq)); VERIFY_NORMAL(GetAuthCode(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetAgent(piso8583stru, pxmlstruReq)); if (!bIsReverse) { ASSERT_NORMAL(GetReqSeqNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetOrgReqSeqNo(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetOrgTransCode(piso8583stru, pxmlstruReq)); ASSERT_NORMAL(GetExpDate(piso8583stru, pxmlstruReq)); } else ASSERT_NORMAL(GetReqSeqNoInReverse(piso8583stru, pxmlstruReq)); return NORMAL;}RESULT SetCancel(PISO8583STRU piso8583stru, PCXMLSTRU pxmlstruResp, BOOL bIsReverse){ SetBitInIso8583(piso8583stru, BIT_ENTRYMODE, NULL, 0); SetBitInIso8583(piso8583stru, BIT_PINCAPTURECODE, NULL, 0); SetBitInIso8583(piso8583stru, BIT_TRACK2, NULL, 0); SetBitInIso8583(piso8583stru, BIT_TRACK3, NULL, 0); SetBitInIso8583(piso8583stru, BIT_ACCEPTORNAME, NULL, 0); SetBitInIso8583(piso8583stru, BIT_PIN, NULL, 0); SetBitInIso8583(piso8583stru, BIT_ORGDATA, NULL, 0); ASSERT_NORMAL(SetRespCode(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetAddResp(pxmlstruResp, piso8583stru)); ASSERT_NORMAL(SetMac(piso8583stru, cTransMac, BIT_MAC128)); return NORMAL;} RESULT HandleCancel(PISO8583STRU piso8583stru){ UINT nBit = BIT_MAC128; XMLSTRU xmlstruReq, xmlstruResp; BOOL bIsReverse; memset(&xmlstruReq, 0, sizeof(xmlstruReq)); memset(&xmlstruResp, 0, sizeof(xmlstruResp)); bIsReverse = IsReverse(piso8583stru); ASSURE_NORMAL(VerifyMac(piso8583stru, cTransMac, BIT_MAC128)) ASSURE_NORMAL(CreateXml(&xmlstruReq, FALSE, AP_PATH_ROOT, NULL)) ASSURE_NORMAL(GetCancel(&xmlstruReq, piso8583stru, bIsReverse)) ASSURE_NORMAL(RecordJournal(&xmlstruReq, piso8583stru)) ASSURE_NORMAL(ApCaSubmit(&xmlstruReq, &xmlstruResp)) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_EXCEPTION)) RETURN_RESULT(EXCEPTION) else { if (!VERIFY_NORMAL(SetCancel(piso8583stru, &xmlstruResp, bIsReverse))) if (ApIsRespCode(&xmlstruResp, AP_RESPCODE_ACCEPT)) RETURN_RESULT(EXCEPTION) } RETURN_RESULT(NORMAL)}/* * 对帐。 */void GetNumInSettle(PSTR pszNum){ sprintf(pszNum, "%d", atoi(pszNum));}void GetAmtInSettle(PSTR pszAmt){ double dAmt; if (*pszAmt == 'C') dAmt = atof(pszAmt + 1) / 100.0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -