📄 sp030107.cpre
字号:
/* * This is a part of the Application Preconsole * - Service Provide - Internal Switch Interface. * Copyright (C) 2001-2001 ChenYu ABC.SDC. * All rights reserved. * * This source code is only intended as a supplement to the * Common Preconsole Reference and related electronic documentation * provided with the library. * See these sources for detailed information regarding the * Common Preconsole product. * * Update record: * 2001-08-11 ChenYu - create implementation file for entrance * cics program for deposit */#include <sybtesql.h> #include "ap.h"#include "apsc.h"#include "apsp.h"EXEC SQL INCLUDE sqlca;EXEC SQL INCLUDE "isi.h"; #define RETURN_RESP(pszRespCode) \ { \ ApUpdateRespCode(pxmlstruResp, pszRespCode); \ DeleteIso8583(&iso8583stru); \ EXEC CICS RETURN; \ }#define ASSURE_NORMAL(r) \ { \ RESULT rTemp; \ rTemp = (r); \ if (rTemp == INVALID) \ AP_UPDATE(AP_PATH_RESPCODE, AP_RESPCODE_LOGERR); \ if (rTemp == EXCEPTION) \ AP_UPDATE(AP_PATH_RESPCODE, AP_RESPCODE_SYSERR); \ if (!VERIFY_NORMAL(rTemp)) \ { \ DeleteIso8583(&iso8583stru); \ EXEC CICS RETURN; \ } \ }void main(){ RESULT rLink; char szRespSeqNo[AP_LEN_SEQNO + 1], szSeqNo[AP_LEN_SEQNO + 1]; char szAccType[AP_LEN_ACCTYPE + 1]; ISO8583STRU iso8583stru; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; bufclr(szRespSeqNo); bufclr(szSeqNo); bufclr(szAccType); if (!VERIFY_NULL(pxmlstruReq = ApScGetReqXml()) || !VERIFY_NULL(pxmlstruResp = ApScGetRespXml())) EXEC CICS RETURN; ASSURE_NORMAL(AP_DEMAND(AP_PATH_ACCTYPE, szAccType)) if (strcmp(szAccType, AP_ACCTYPE_CREDITCARD) == 0) { if (IsAgentAuth(pxmlstruReq)) { ApUpdateRespCode(pxmlstruResp, AP_RESPCODE_SERVICE_NOTSUPPORT); EXEC CICS RETURN; } } memset(&iso8583stru, 0, sizeof(ISO8583STRU)); ASSURE_NORMAL(CreateIso8583(&iso8583stru, ifistruIsi)) /* * 格式转换(XML->ISO8583)。 */ ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_MSGID, "0200", SIZE_MSGID)) ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_PROCESSCODE, "210000", SIZE_PROCESSCODE)) ASSURE_NORMAL(GetPubInfo(&iso8583stru, pxmlstruReq)) ASSURE_NORMAL(GetRetrievalRefNo(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetTransAmt(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetPinCaptureCode(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetTransFee(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetTrack2(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetTrack3(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(SetMac(&iso8583stru, cTransMac, BIT_MAC64)) /* * 登记ISID表。 */ ASSURE_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)) ASSURE_NORMAL(AP_DEMAND(AP_PATH_SEQNO, szSeqNo)) ASSURE_NORMAL(RecordDetail(&iso8583stru, szRespSeqNo, szSeqNo)) /* * 交易提交。 */ if (!VERIFY((rLink = LinkIsi(&iso8583stru)) != UNKNOWN)) RETURN_RESP(AP_RESPCODE_EXCEPTION) ASSURE_NORMAL(rLink) if (!VERIFY_NORMAL(VerifyMac(&iso8583stru, cTransMac, BIT_MAC64)) || !VERIFY_NORMAL(SetRespCode(&iso8583stru, pxmlstruResp))) RETURN_RESP(AP_RESPCODE_EXCEPTION) if (ApIsRespCode(pxmlstruResp, AP_RESPCODE_ACCEPT)) { /* * 根据应答报文修改ISID表。 */ VERIFY_NORMAL(UpdateDetail(&iso8583stru, szSeqNo)); VERIFY_NORMAL(SetFee(&iso8583stru, pxmlstruResp)); VERIFY_NORMAL(SetBal(&iso8583stru, pxmlstruResp)); VERIFY_NORMAL(SetAvailBal(&iso8583stru, pxmlstruResp)); VERIFY_NORMAL(SetSettleDate(&iso8583stru, pxmlstruResp)); } DeleteIso8583(&iso8583stru); EXEC CICS RETURN;}/* End of this file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -