⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sp030105.cpre

📁 商业银行前置系统
💻 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 pre-authorization and  *                        manual authorization */#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;    BOOL bIsReverse;    BOOL bManual;    bufclr(szRespSeqNo);    bufclr(szSeqNo);    bufclr(szAccType);        if (!VERIFY_NULL(pxmlstruReq = ApScGetReqXml()) ||         !VERIFY_NULL(pxmlstruResp = ApScGetRespXml()))         EXEC CICS RETURN;    bManual = IsManualAuth(pxmlstruReq);    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_MSGID, "0100", SIZE_MSGID))                                      if (bManual)        ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_PROCESSCODE, "003000",                                      SIZE_PROCESSCODE))    else        ASSURE_NORMAL(SetBitInIso8583(&iso8583stru, BIT_PROCESSCODE, "000000",                                      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    {            ASSURE_NORMAL(GetPubInfo(&iso8583stru, pxmlstruReq))        ASSURE_NORMAL(GetRetrievalRefNo(pxmlstruReq, &iso8583stru))        ASSURE_NORMAL(GetTransAmt(pxmlstruReq, &iso8583stru))        ASSURE_NORMAL(GetTransFee(pxmlstruReq, &iso8583stru))        if (!bManual)        {            ASSURE_NORMAL(GetPinCaptureCode(pxmlstruReq, &iso8583stru))            ASSURE_NORMAL(GetPin(pxmlstruReq, &iso8583stru))            ASSURE_NORMAL(GetTrack2(pxmlstruReq, &iso8583stru))            ASSURE_NORMAL(GetTrack3(pxmlstruReq, &iso8583stru))        }        else            ASSURE_NORMAL(GetIdNo(pxmlstruReq, &iso8583stru))    }        ASSURE_NORMAL(SetMac(&iso8583stru, cTransMac,                          bIsReverse ? BIT_MAC128 : BIT_MAC64))    /*     * 登记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,                                 bIsReverse ? BIT_MAC128 : BIT_MAC64)) ||        !VERIFY_NORMAL(SetRespCode(&iso8583stru, pxmlstruResp)))        RETURN_RESP(AP_RESPCODE_EXCEPTION)    if (ApIsRespCode(pxmlstruResp, AP_RESPCODE_ACCEPT))    {        /*         * 根据应答报文修改ISID表。         */            if (!bIsReverse)        {            if (!VERIFY_NORMAL(SetAuthCode(&iso8583stru, pxmlstruResp)))                RETURN_RESP(AP_RESPCODE_EXCEPTION)                            VERIFY_NORMAL(UpdateDetail(&iso8583stru, szSeqNo));            VERIFY_NORMAL(SetAccType(&iso8583stru, pxmlstruResp));            VERIFY_NORMAL(SetExpDate(&iso8583stru, pxmlstruResp));            VERIFY_NORMAL(SetCurrType(&iso8583stru, pxmlstruResp));            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 + -