📄 sp030113.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 cancel */#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; \ } \ }RESULT GetProcessCode(PCISIDSTRU pisidstru, PISO8583STRU piso8583stru){ char szProcessCode[SIZE_PROCESSCODE + 1]; bufclr(szProcessCode); if (strcmp(pisidstru->szProcessCode, "000000") == 0 || /* 预授权 */ strcmp(pisidstru->szProcessCode, "090000") == 0) /* 消费 */ strcpy(szProcessCode, "200000"); else if (strcmp(pisidstru->szProcessCode, "030000") == 0) /* 预授权完成 */ strcpy(szProcessCode, "230000"); else if (strcmp(pisidstru->szProcessCode, "210000") == 0) /* 存款 */ strcpy(szProcessCode, "020000"); else if (strcmp(pisidstru->szProcessCode, "010000") == 0) /* 取款 */ strcpy(szProcessCode, "220000"); else if (strcmp(pisidstru->szProcessCode, "400010") == 0) /* 转入 */ strcpy(szProcessCode, "480010"); else if (strcmp(pisidstru->szProcessCode, "401000") == 0) /* 转出 */ strcpy(szProcessCode, "481000"); else if (strcmp(pisidstru->szProcessCode, "600000") == 0) /* 挂失 */ strcpy(szProcessCode, "601000"); else if (strcmp(pisidstru->szProcessCode, "003000") == 0) /* 手工授权 */ strcpy(szProcessCode, "203000"); else ASSERT_NORMAL(INVALID); ASSERT_NORMAL(SetBitInIso8583(piso8583stru, BIT_PROCESSCODE, szProcessCode, SIZE_PROCESSCODE)); return NORMAL;}void main(){ RESULT rLink; char szRespSeqNo[AP_LEN_SEQNO + 1], szSeqNo[AP_LEN_SEQNO + 1]; char szOrgSeqNo[AP_LEN_SEQNO + 1]; char szAccType[AP_LEN_ACCTYPE + 1]; ISO8583STRU iso8583stru; ISIDSTRU isidstru; PXMLSTRU pxmlstruReq; PXMLSTRU pxmlstruResp; BOOL bIsReverse; 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)) { AgentAuth(pxmlstruReq, pxmlstruResp); EXEC CICS RETURN; } } IsReverse(pxmlstruReq, &bIsReverse); memset(&iso8583stru, 0, sizeof(ISO8583STRU)); ASSURE_NORMAL(CreateIso8583(&iso8583stru, ifistruIsi)) ASSURE_NORMAL(AP_DEMAND_EXT(AP_PATH_RESPSEQNO, szRespSeqNo)) ASSURE_NORMAL(AP_DEMAND(AP_PATH_SEQNO, szSeqNo)) /* * 格式转换(XML->ISO8583)。 */ ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_PROCESSCODE, "090000", SIZE_PROCESSCODE)) if (bIsReverse) { ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_MSGID, "0420", SIZE_MSGID)) ASSURE_NORMAL(GetTransmissDateTime(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetLocalTransTime(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetLocalTransDate(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetReason(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetRetrievalRefNo(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetOrgInfo(szSeqNo, &iso8583stru)) } else { memset(&isidstru, 0, sizeof(ISIDSTRU)); bufclr(szOrgSeqNo); ASSURE_NORMAL(AP_DEMAND(AP_PATH_ORGSEQNO, szOrgSeqNo)) ASSURE_NORMAL(GetOrgDetail(szOrgSeqNo, &isidstru)) ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_MSGID, "0200", SIZE_MSGID)) ASSURE_NORMAL(GetPan(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetProcessCode(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetTransAmt(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetTransmissDateTime(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetLocalTransTime(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetLocalTransDate(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetOrgAcqSettleDate(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetOrgMerchType(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetEntryMode(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetOrgConditionCode(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetTransFee(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetAcqId(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetForwardId(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetRetrievalRefNo(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetOrgAuthResp(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetOrgServiceCode(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetTermId(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetOrgAcceptorId(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetAcceptorName(pxmlstruReq, &iso8583stru)) ASSURE_NORMAL(GetOrgAddResp(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetOrgCurrCode(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetOrgData(&isidstru, &iso8583stru)) ASSURE_NORMAL(GetReason(pxmlstruReq, &iso8583stru)) } ASSURE_NORMAL(SetMac(&iso8583stru, cTransMac, BIT_MAC128)) /* * 登记ISID表。 */ if (!bIsReverse) 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_MAC128)) || !VERIFY_NORMAL(SetRespCode(&iso8583stru, pxmlstruResp))) RETURN_RESP(AP_RESPCODE_EXCEPTION) if (ApIsRespCode(pxmlstruResp, AP_RESPCODE_ACCEPT)) { /* * 根据应答报文修改ISID表。 */ if (!bIsReverse) { VERIFY_NORMAL(UpdateDetail(&iso8583stru, szSeqNo)); VERIFY_NORMAL(SetFee(&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 + -